Stempelkarten-System

"; // Abfrage für alle Zeitstempel des Tages $query = " SELECT timestamp_type, timestamp_datetime FROM timestamps WHERE employee_id = :employee_id AND DATE(timestamp_datetime) = :datum ORDER BY timestamp_datetime "; try { $stmt = $pdo->prepare($query); $stmt->bindParam(':employee_id', $mitarbeiterId, PDO::PARAM_INT); $stmt->bindParam(':datum', $datum); $stmt->execute(); $zeitstempel = $stmt->fetchAll(PDO::FETCH_ASSOC); echo $zeitstempel; } catch(PDOException $e) { $pdo->rollBack(); echo "Datenbankfehler: " . $e->getMessage(); } $fruehesteKommenZeit = null; $spaetesteGehenZeit = null; $gesamtarbeitszeit = new DateInterval('PT0S'); $gesamtpausenzeit = new DateInterval('PT0S'); $letzterGehenZeitstempel = null; echo "test"; foreach ($zeitstempel as $index => $eintrag) { $zeit = new DateTime($eintrag['timestamp_datetime']); echo "test2"; if ($eintrag['timestamp_type'] === 'KOMMEN') { echo "test3"; if ($fruehesteKommenZeit === null || $zeit < $fruehesteKommenZeit) { $fruehesteKommenZeit = $zeit; } if ($letzterGehenZeitstempel) { $pause = $letzterGehenZeitstempel->diff($zeit); $gesamtpausenzeit = $gesamtpausenzeit->add($pause); } } else if ($eintrag['timestamp_type'] === 'GEHEN') { if ($spaetesteGehenZeit === null || $zeit > $spaetesteGehenZeit) { $spaetesteGehenZeit = $zeit; } $letzterGehenZeitstempel = $zeit; } } if ($fruehesteKommenZeit && $spaetesteGehenZeit) { $gesamtarbeitszeit = $fruehesteKommenZeit->diff($spaetesteGehenZeit)->subtract($gesamtpausenzeit); } #echo $gesamtarbeitszeit; $zeitenProTag[$datum] = [ 'fruehesteKommenZeit' => $fruehesteKommenZeit ? $fruehesteKommenZeit->format('H:i:s') : '', 'spaetesteGehenZeit' => $spaetesteGehenZeit ? $spaetesteGehenZeit->format('H:i:s') : '', 'gesamtarbeitszeit' => $gesamtarbeitszeit->format('%H:%I:%S'), 'gesamtpausenzeit' => $gesamtpausenzeit->format('%H:%I:%S') ]; } // Ausgabe der Ergebnisse für Testzwecke echo '
';
print_r($zeitenProTag);
echo '
'; ?>