diff --git a/trip.php b/trip.php new file mode 100755 index 0000000..e38feba --- /dev/null +++ b/trip.php @@ -0,0 +1,402 @@ + strtotime($end_date)) { + $_SESSION['message'] = "Startdatum darf nicht nach dem Enddatum liegen."; + $_SESSION['message_type'] = 'danger'; + $message = $_SESSION['message']; + $message_type = $_SESSION['message_type']; + } else { + mysqli_autocommit($conn, false); + $success = false; + + if ($trip_id) { + $stmt = mysqli_prepare($conn, "UPDATE trips SET title = ?, description = ?, hotel = ?, hotel_address = ?, start_date = ?, end_date = ? WHERE id = ?"); + mysqli_stmt_bind_param($stmt, "ssssssi", $title, $description, $hotel, $hotel_address, $start_date, $end_date, $trip_id); + } else { + $stmt = mysqli_prepare($conn, "INSERT INTO trips (title, description, hotel, hotel_address, start_date, end_date) VALUES (?, ?, ?, ?, ?, ?)"); + mysqli_stmt_bind_param($stmt, "ssssss", $title, $description, $hotel, $hotel_address, $start_date, $end_date); + } + + if (mysqli_stmt_execute($stmt)) { + if (!$trip_id) { + $trip_id = mysqli_insert_id($conn); + } + + mysqli_query($conn, "DELETE FROM trip_groups WHERE trip_id = $trip_id"); + + $drivers = $_POST['drivers'] ?? []; + foreach ($drivers as $driver_id => $passengers) { + $driver_id = (int)$driver_id; + if (!empty($passengers['list'])) { + foreach ($passengers['list'] as $passenger_id) { + $passenger_id = (int)$passenger_id; + if ($driver_id !== $passenger_id) { + $notes = trim($passengers['notes'][$passenger_id] ?? ''); + $stmt_ins = mysqli_prepare($conn, "INSERT INTO trip_groups (trip_id, driver_id, passenger_id, notes) VALUES (?, ?, ?, ?)"); + mysqli_stmt_bind_param($stmt_ins, "iiis", $trip_id, $driver_id, $passenger_id, $notes); + mysqli_stmt_execute($stmt_ins); + mysqli_stmt_close($stmt_ins); + } + } + } + } + + $success = true; + } + mysqli_stmt_close($stmt); + + if ($success) { + mysqli_commit($conn); + $_SESSION['message'] = $trip_id ? "Reise aktualisiert!" : "Neue Reise erstellt!"; + $_SESSION['message_type'] = 'success'; + header("Location: trip.php"); + exit(); + } else { + mysqli_rollback($conn); + $_SESSION['message'] = "Fehler beim Speichern der Reise."; + $_SESSION['message_type'] = 'danger'; + $message = $_SESSION['message']; + $message_type = $_SESSION['message_type']; + } + mysqli_autocommit($conn, true); + } +} + +if (isset($_GET['action']) && $_GET['action'] === 'delete' && isset($_GET['trip_id'])) { + $trip_id = (int)$_GET['trip_id']; + $stmt = mysqli_prepare($conn, "DELETE FROM trips WHERE id = ?"); + mysqli_stmt_bind_param($stmt, "i", $trip_id); + if (mysqli_stmt_execute($stmt)) { + $_SESSION['message'] = "Reise gelöscht!"; + $_SESSION['message_type'] = 'success'; + } else { + $_SESSION['message'] = "Fehler beim Löschen."; + $_SESSION['message_type'] = 'danger'; + } + mysqli_stmt_close($stmt); + header("Location: trip.php"); + exit(); +} + +$trips = []; +$result = mysqli_query($conn, "SELECT * FROM trips ORDER BY start_date DESC"); +while ($row = mysqli_fetch_assoc($result)) { + $row['groups'] = get_trip_groups($conn, $row['id']); + $trips[] = $row; +} + +$edit_trip = null; +if (isset($_GET['action']) && $_GET['action'] === 'edit' && isset($_GET['trip_id'])) { + $trip_id = (int)$_GET['trip_id']; + $stmt = mysqli_prepare($conn, "SELECT * FROM trips WHERE id = ?"); + mysqli_stmt_bind_param($stmt, "i", $trip_id); + mysqli_stmt_execute($stmt); + $edit_trip = mysqli_fetch_assoc(mysqli_stmt_get_result($stmt)); + mysqli_stmt_close($stmt); + if ($edit_trip) { + $edit_trip['groups'] = get_trip_groups($conn, $trip_id); + $grouped = []; + foreach ($edit_trip['groups'] as $g) { + $grouped[$g['driver_id']][$g['passenger_id']] = $g['notes']; + } + $edit_trip['grouped'] = $grouped; + } +} + +$all_users = get_all_users($conn); + +require_once('inc/header.php'); +?> + +
= htmlspecialchars($trip['hotel']) ?>
+ + += nl2br(htmlspecialchars($trip['hotel_address'])) ?>
+ + + + Auf Karte anzeigen + + + + + += nl2br(htmlspecialchars($trip['description'])) ?>
+ + + += htmlspecialchars($passengers[0]['driver_name']) ?>
+Keine Fahrer/Mitfahrer eingetragen.
+ + +Keine Reisen geplant.
+