modify('+1 day'); $interval = new DateInterval('P1D'); $period = new DatePeriod($start, $interval, $end); $workingDays = 0; foreach ($period as $day) { if ($day->format('N') < 6) { // 1 (Mo) - 5 (Fr) $workingDays++; } } return $workingDays; } if ($_SERVER["REQUEST_METHOD"] == "POST") { $start_date = $_POST['start_date']; $end_date = $_POST['end_date']; $comment = trim($_POST['comment']); if (empty($start_date) || empty($end_date)) { $error = "Bitte beide Datumsfelder ausfüllen."; } elseif ($start_date > $end_date) { $error = "Enddatum liegt vor dem Startdatum."; } elseif ($start_date < date("Y-m-d")) { $error = "Urlaub kann nicht in der Vergangenheit beantragt werden."; } else { // Überschneidung prüfen $stmt = $pdo->prepare(" SELECT COUNT(*) FROM vacations WHERE user_id = ? AND status != 'abgelehnt' AND ( (start_date BETWEEN ? AND ?) OR (end_date BETWEEN ? AND ?) OR (? BETWEEN start_date AND end_date) ) "); $stmt->execute([$user_id, $start_date, $end_date, $start_date, $end_date, $start_date]); $exists = $stmt->fetchColumn(); if ($exists > 0) { $error = "Der Zeitraum überschneidet sich mit einem bestehenden Antrag."; } else { $days = calculateWorkingDays($start_date, $end_date); $insert = $pdo->prepare(" INSERT INTO vacations (user_id, start_date, end_date, days, comment_user) VALUES (?, ?, ?, ?, ?) "); $insert->execute([$user_id, $start_date, $end_date, $days, $comment]); $message = "Urlaubsantrag erfolgreich eingereicht ($days Werktage)."; } } } ?>

Urlaubsantrag



Meine Anträge

prepare(" SELECT * FROM vacations WHERE user_id = ? ORDER BY created_at DESC "); $stmt->execute([$user_id]); $antraege = $stmt->fetchAll(); ?>
Von Bis Tage Status Aktion
Beantragt'; } elseif ($a['status'] == 'genehmigt') { echo 'Genehmigt'; } else { echo 'Abgelehnt'; } ?>