Arbeitszeitplan - KW und Datum werden falsch angezeigt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Arbeitszeitplan - KW und Datum werden falsch angezeigt

    Hallo Freunde,

    ich habe letztes Jahr eine Programmierung mit PHP durchgeführt, womit Mitarbeiter Ihre Arbeitszeiten easy eintragen können. Diese sind mit einer SQL Datenbank verbunden.
    Seit Anfang 2024 wird das Datum komplett falsch angezeigt. Ich glaube das liegt an den KWs. Ihr könnt Euch selber ein Bild machen, indem Ihr auf folgenden Link geht: PMT Agency - Dienstplan (kesug.com)

    Dort kann man entweder auf "Heute", "Vorherige Woche" oder "Nächste Woche" klicken. Klickt bitte auf eins von den drauf und schaut selber.

    Kann mir dort jemand meinen PHP-Code aktualisieren?
    Habe alles versucht...

    PHP-Code:
    <?php
            $servername 
    "sql311.infinityfree.com";
            
    $username "if0_35049026";
            
    $password "XX";
            
    $dbname "if0_35049026_arbeitszeitplan";

            
    $conn = new mysqli($servername$username$password$dbname);

            if (
    $conn->connect_error) {
                die(
    "Verbindung fehlgeschlagen: " $conn->connect_error);
            }

            
    $currentWeek = isset($_GET['week']) ? intval($_GET['week']) : date('W');
            
    $startDate strtotime(date('Y') . "W" $currentWeek);
            
    $daysOfWeek = array('Mo.''Di.''Mi.''Do.''Fr.''Sa.');

            echo 
    "<br><br>";
            echo 
    "<div style='text-align: center;'>";
            echo 
    "<a href='#' onclick='showWeekDropdown();'><span style='color: black;'>KW {$currentWeek}</span></a>";
            echo 
    "<div id='weekDropdown' style='display: none;'>";
            echo 
    "<select id='weekSelector' onchange='changeWeek()'>";
            for (
    $i 1$i <= 52$i++) {
                echo 
    "<option value='$i' " . ($currentWeek == $i "selected" "") . ">KW $i</option>";
            }
            echo 
    "</select>";
            echo 
    "</div>";
            echo 
    "</div>";
            echo 
    "<div style='text-align: center;'>";
            echo 
    "<a href='?week=" . (($currentWeek == 1) ? 52 $currentWeek 1) . "' style='background-color: lightgreen; color: white; padding: 1px 1px; text-decoration: none; border-radius: 5px; font-size: 12px;'>&lt;&lt; Vorherige Woche</a> | ";
            echo 
    "<a href='?week=" date('W') . "' style='background-color: green; color: white; padding: 1px 1px; text-decoration: none; border-radius: 5px; font-size: 12px;'>Heute</a> | ";
            echo 
    "<a href='?week=" . (($currentWeek == 52) ? $currentWeek 1) . "' style='background-color: lightgreen; color: white; padding: 1px 1px; text-decoration: none; border-radius: 5px; font-size: 12px;'>Nächste Woche &gt;&gt;</a>";
            echo 
    "</div>";
            echo 
    "<div style='overflow-x:auto;'>";
            echo 
    "<table>";
            echo 
    "<tr><th>Mitarbeiter</th>";
            for (
    $i 0$i 6$i++) {
                
    $date strtotime("+$i days"$startDate);
                echo 
    "<th>{$daysOfWeek[$i]}, " date("d.m.y"$date) . "</th>";
            }
            echo 
    "</tr>";

            
    $sql "SELECT name, von, bis, DATE_FORMAT(datum, '%Y-%m-%d') as formatted_date, DAYOFWEEK(datum) as dayOfWeek FROM arbeitszeiten WHERE WEEK(datum) = $currentWeek AND DAYOFWEEK(datum) >= 2 AND DAYOFWEEK(datum) <= 7";
            
    $result $conn->query($sql);

            
    $employees = array();

            if (
    $result->num_rows 0) {
                while (
    $row $result->fetch_assoc()) {
                    
    $employees[$row["name"]][$row["formatted_date"]] = array(
                        
    "von" => date("H:i"strtotime($row["von"])),
                        
    "bis" => date("H:i"strtotime($row["bis"]))
                    );
                }
            }

            foreach (
    $employees as $employee => $schedule) {
                echo 
    "<tr><td>{$employee}</td>";
                for (
    $i 0$i 6$i++) {
                    
    $date strtotime("+$i days"$startDate);
                    
    $formattedDate date("Y-m-d"$date);
                    if (isset(
    $schedule[$formattedDate])) {
                        echo 
    "<td>{$schedule[$formattedDate]['von']} - {$schedule[$formattedDate]['bis']}</td>";
                    } else {
                        echo 
    "<td></td>";
                    }
                }
                echo 
    "</tr>";
            }
            echo 
    "</table>";
            echo 
    "</div>";

            
    $conn->close();
            
    ?>

  • #2
    Solltet Ihr noch was brauchen, einfach schreiben bitte. Antworte auch direkt, so gut es geht ..

    wäre Euch sehr dankbar. Das macht mir etwas Kopfschmerzen, wobei ich es liebe zu experimentieren ^^

    Kommentar

    Lädt...
    X