Den endelige side jvf. hyggelig samtale med kimox:
<?php
// Session startes
session_start();
// Forbindelsen til databasen åbnes
$db = mysql_connect("localhost", "xxx", "xxx") or die(mysql_error());
// Databasen vælges
mysql_select_db("xxx") or die("Kunne ikke vælge database");
if($_POST["send"])
{
// Medarbejderens cprnr hentes
$employee = $_SESSION["cprnr"];
// Medarbejderens indtastninger hentes
$shift = $_POST["shift"];
// Hvis $shift IKKE er tom
if(!empty($shift))
{
$confirm = "<p>Vagtplanen er registreret.</p>\n";
}
for($x = 0; $x < sizeof($shift); $x++)
{
// Array med patterns
$patterns = Array("/\\_D/", "/\\_AF/", "/\\_N/");
// Array med replacements
$replacements = Array(" 12:00:00", " 18:00:00", " 23:59:59");
// Denne indtastning skrives om til et tidspunkt
$this_shift = preg_replace($patterns, $replacements, $shift["$x"]);
$shifts[] = $this_shift;
// Medarbejderens arbejdstider hentes
$query = mysql_query("SELECT shift FROM vshifts WHERE employee = '" . $employee . "' AND shift = '" . $this_shift . "'") or die(mysql_error());
if(mysql_num_rows($query) == 0)
{
// Medarbejderens vagter føjes til tabellen 'shifts'
mysql_query("INSERT INTO vshifts (inserted, employee, shift) VALUES (now(), '" . $employee . "', '" . $this_shift . "')") or die(mysql_error());
}
mysql_free_result($query);
// Til brug når der skal slettes tidligere indtastninger
$for_delete .= " AND shift != '" . $this_shift . "'";
}
// Medarbejderens tidligere indtastninger slettes fra tabellen 'shifts'
mysql_query("DELETE FROM vshifts WHERE employee = '" . $employee . "' AND shift >= CURDATE()" . $for_delete) or die(mysql_error());
// Medarbejderens data hentes
$query = mysql_query("SELECT navn, email FROM vlog WHERE cprnr = '" . $employee . "'") or die(mysql_error());
if(mysql_num_rows($query) > 0)
{
while($row = mysql_fetch_assoc($query))
{
// Indhold på email
$message .= $row["navn"] . ", " . $employee . " har registreret sin ugeplan:\n\n";
for($x = 0; $x < sizeof($shift); $x++)
{
$y = $x - 1;
// Array med patterns
$patterns = Array("/\\_D/", "/\\_AF/", "/\\_N/");
// Array med replacements
$replacements = Array(" - DAG", " - AFTEN", " - NAT");
// Der indsættes et linieskift, hvis denne dag er højere end sidste shift
if(mktime(0, 0, 0, substr($shift["$y"], 5, 2), substr($shift["$y"], 8, 2), substr($shift["$y"], 0, 4)) < mktime(0, 0, 0, substr($shift["$x"], 5, 2), substr($shift["$x"], 8, 2), substr($shift["$x"], 0, 4)))
{
$message .= "\n";
}
// Denne indtastning skrives om til et tidspunkt
$message .= preg_replace($patterns, $replacements, $shift["$x"]) . "\n";
}
// Modtager og afsender af email
$mailHeader .= "To: " . $row["navn"] . " <" . $row["email"] . ">\r\n";
$mailHeader .= "From: Side.dk <robot@side.dk>\r\n";
// Email sendes
mail("post@side.dk, " . $row["email"], "Registrering af ugeplan", $message, $mailHeader);
}
}
mysql_free_result($query);
}
function dow()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
$print .= ($x == 0) ? "<tr style=\"background: #CCC;\"><td style=\"font-weight: bold;\">Uge nr.</td>" : "";
$print .= "<td colspan=\"3\" style=\"font-weight: bold;\">" . $dow["$x"] . "dag</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function shift()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
$print .= ($x == 0) ? "<tr style=\"background: #CCC;\"><td style=\"font-weight: bold;\">-</td>" : "";
$print .= "<td>D</td>";
$print .= "<td>AF</td>";
$print .= "<td>N</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function formCB()
{
// Værdierne hentes udenfor funktionen
global $x;
global $month;
global $year;
// Denne dato
$date = date("Y.m.d", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Denne dato på dansk
$danish = date("d.m.Y", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på ugen
$now = date("W", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på dagen i ugen
$nowd = date("w", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Er dagen søndag, ændres nummeret på dagen i ugen
if($nowd == 0)
{
$nowd = 7;
}
$print .= ($x == 0 || $nowd == 1) ? "<tr><td style=\"background: #CCC; font-weight: bold;\">" . $now . "</td>" : "";
// Tomme felter
if($x == 0)
{
for($y = 1; $y < $nowd; $y++)
{
// Baggrundsfarve
$bg = $y % 2 ? "FFF" : "CCC";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . ";\"> </td>";
}
}
// Medarbejderens cprnr hentes
$employee = $_SESSION["cprnr"];
// Baggrundsfarve
$bg = $nowd % 2 ? "FFF" : "CCC";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_D\"";
// Medarbejderens arbejdstider hentes
$query = mysql_query("SELECT shift FROM vshifts WHERE employee = '" . $employee . "' AND shift = '" . $date . " 12:00:00'") or die(mysql_error());
if(mysql_num_rows($query) > 0)
{
$print .= " checked";
}
mysql_free_result($query);
$print .= " title=\"" . $danish . " DAG\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_AF\"";
// Medarbejderens arbejdstider hentes
$query = mysql_query("SELECT shift FROM vshifts WHERE employee = '" . $employee . "' AND shift = '" . $date . " 18:00:00'") or die(mysql_error());
if(mysql_num_rows($query) > 0)
{
$print .= " checked";
}
mysql_free_result($query);
$print .= " title=\"" . $danish . " AFTEN\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_N\"";
// Medarbejderens arbejdstider hentes
$query = mysql_query("SELECT shift FROM vshifts WHERE employee = '" . $employee . "' AND shift = '" . $date . " 23:59:59'") or die(mysql_error());
if(mysql_num_rows($query) > 0)
{
$print .= " checked";
}
mysql_free_result($query);
$print .= " title=\"" . $danish . " NAT\"></td>";
$print .= ($nowd == 7) ? "</tr>\n" : "";
return $print;
}
// Denne måned
$month = date("m");
// Dette år
$year = date("Y");
// Ugens dage
$dow = Array("Man", "Tirs", "Ons", "Tors", "Fre", "Lør", "Søn");
// Der ryddes op i tabellen 'shifts'
mysql_query("DELETE FROM vshifts WHERE shift < DATE_SUB(CURDATE(), INTERVAL 28 DAY)") or die(mysql_error());
// HTML koder startes
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"
http://www.w3.org/TR/html4/loose.dtd\">\n";echo "<html>\n";
echo "<head>\n";
echo "<title>Eksperten - Arbejdstider</title>\n";
echo "<style type=\"text/css\">\n";
echo "td\n";
echo "{\n";
echo " text-align: center;\n";
echo "}\n";
echo "</style>\n";
echo "</head>\n";
echo "<body>\n";
// Bekræftelse skrives
echo $confirm;
echo "<form action=\"" . $_SERVER["PHP_SELF"] . "\" method=\"post\">\n";
echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n";
for($x = 0; $x < sizeof($dow); $x++)
{
echo dow();
}
for($x = 0; $x < sizeof($dow); $x++)
{
echo shift();
}
for($x = 0; $x <= (35 - date("w")); $x++)
{
echo formCB();
}
// Knapper skrives og HTML koder afsluttes
echo "<tr><td colspan=\"22\"><input name=\"send\" type=\"submit\" id=\"send\" class=\"ok_input\" value=\"Send arbejdstider\">\n";
echo "<input name=\"reset\" type=\"reset\" id=\"reset\" class=\"ok_input\" value=\"Fjern alle markeringer\"></td></tr>\n";
echo "</table>\n";
echo "</form>\n";
echo "</body>\n";
echo "</html>";
?>