HJÆÆLP gl kode
Hej EksperterJeg er godt nok på skideren, jeg har for lang tid siden fået hjælp til at lave en kode, til noget kalender system, som medarbejdere kunne registerer sine timer på osv. ik det helt vilde kode, men jeg kan ikke finde hovede og hale i det.
og håber ufattelig meget der er en/flere der kan hjælpe.
her er koden:
if($_POST["send"])
{
// Medarbejderens cprnr hentes
$employee = $_SESSION["cprnr"];
// Medarbejderens indtastninger hentes
$shift = $_POST["shift"];
// Hvis $shift IKKE er tom
if(!empty($shift))
{
$confirm = "<span align=\"center\"><br /><table width=\"400\" class=\"nyh_border\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td>
<table width=\"400\" cellpadding=\"0\" cellspacing=\"0\">
<tr><td width=\"48\" bgcolor=\"#F8F8F8\" class=\"main_txt\" valign=\"top\"><div align=\"center\"><img src=\"../images/blink_war.gif\" width=\"22\" height=\"22\"></div></td>
<td width=\"350\" bgcolor=\"#F8F8F8\" class=\"main_txt\">Vagtplanen blev ændret.</td>
</table>
</td>
</tr>
</table></span>\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
$messageTemp = preg_replace($patterns, $replacements, $shift["$x"]);
$message .= "Uge " . date("W", mktime(0, 0, 0, substr($shift["$x"], 5, 2), substr($shift["$x"], 8, 2), substr($shift["$x"], 0, 4))) . ": " . $messageTemp . "\n";
}
// Modtager og afsender af email
$mailHeader .= "To: " . $row["navn"] . " <" . $row["email"] . ">\r\n";
$mailHeader .= "From: TeamVikaren.dk <noreply@teamvikaren.dk>\r\n";
// Email sendes
mail("vx@vix-mix.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: #CCCCCC;\"><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: #E6E3E3;\"><td style=\"font-weight: bold;\">-</td>" : "";
$print .= "<td><img src=\"images/dag.gif\" border=\"0\" alt=\"Dag\"></td>";
$print .= "<td><img src=\"images/aften.gif\" border=\"0\" alt=\"Aften\"></td>";
$print .= "<td><img src=\"images/nat.gif\" border=\"0\" alt=\"Nat\"></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: #CCCCCC; font-weight: bold;\">" . $now . "</td>" : "";
// Tomme felter
if($x == 0)
{
for($y = 1; $y < $nowd; $y++)
{
// Baggrundsfarve
$bg = $y % 2 ? "FFF" : "E6E3E3";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . ";\"> </td>";
}
}
// Medarbejderens cprnr hentes
$employee = $_SESSION["cprnr"];
// Baggrundsfarve
$bg = $nowd % 2 ? "FFF" : "E6E3E3";
$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 "<body>\n";
// Bekræftelse skrives
echo $confirm;
echo "<form action=\"" . $_SERVER["PHP_SELF"] . "\" method=\"post\">\n";
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\" class=\"logbox\">\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\"> </td></tr>\n";
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>";
?>
det jeg skal bruge hjælp til er:
Når en medarbejder kommer ind på sin kalender og fjerner en checked box, så skal den gå ind i databasen og UPDATE den linje man har ændret på.. og så sætte et "2" tal i et felt der hedder "aendret"
uden at den sletter feltet igen, som koden altså gør lige nu. :o(