Avatar billede xeox Nybegynder
28. maj 2009 - 23:44 Der er 1 løsning

HJÆÆLP gl kode

Hej Eksperter

Jeg 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 . ";\">&nbsp;</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&oslash;r", "S&oslash;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\">&nbsp;</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(
Avatar billede xeox Nybegynder
29. maj 2009 - 00:07 #1
glem det, det var ik svært alligevel..

skulle bare lige vågne op

-lukket-
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester