diff --git a/admin/participant.php b/admin/participant.php index fa27e8e..804f298 100755 --- a/admin/participant.php +++ b/admin/participant.php @@ -1,59 +1,99 @@ 0) { + $stmt = mysqli_prepare($conn, "UPDATE meetings SET meeting_date = ?, color_id = ?, reason = ? WHERE id = ?"); mysqli_stmt_bind_param($stmt, "sisi", $meeting_date, $color_id, $reason, $meeting_id); mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); - } else { - die("Fehler beim Vorbereiten der Meeting-Update-Abfrage: " . mysqli_error($conn)); } } - // Vorhandene Daten für dieses Meeting löschen + // Alte Teilnehmerdaten löschen $stmt = mysqli_prepare($conn, "DELETE FROM meeting_teilnehmer WHERE meeting_id = ?"); - if ($stmt === false) { - die("Fehler in der SQL-Abfrage: " . mysqli_error($conn)); - } mysqli_stmt_bind_param($stmt, "i", $meeting_id); mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); - // Gesendete Daten verarbeiten und speichern - if (isset($_POST['user_id'])) { + // Neue Daten speichern + if (isset($_POST['user_id']) && is_array($_POST['user_id'])) { $stmt_insert = mysqli_prepare($conn, "INSERT INTO meeting_teilnehmer (meeting_id, user_id, attended, wore_color, paid) VALUES (?, ?, ?, ?, ?)"); - if ($stmt_insert === false) { - die("Fehler in der SQL-Abfrage: " . mysqli_error($conn)); - } foreach ($_POST['user_id'] as $user_id) { + $user_id = intval($user_id); $attended = isset($_POST['attended'][$user_id]) ? 1 : 0; $wore_color = isset($_POST['wore_color'][$user_id]) ? 1 : 0; $paid = isset($_POST['paid'][$user_id]) ? 1 : 0; @@ -63,74 +103,26 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { } mysqli_stmt_close($stmt_insert); - // NEU: Termin als abgeschlossen markieren - $stmt_complete = mysqli_prepare($conn, "UPDATE meetings SET is_completed = 1 WHERE id = ?"); - if ($stmt_complete) { + // Meeting als abgeschlossen markieren (nur im Index-Modus) + if ($source_page === 'index') { + $stmt_complete = mysqli_prepare($conn, "UPDATE meetings SET is_completed = 1 WHERE id = ?"); mysqli_stmt_bind_param($stmt_complete, "i", $meeting_id); mysqli_stmt_execute($stmt_complete); mysqli_stmt_close($stmt_complete); } - $message = "Meeting-Daten erfolgreich gespeichert!"; + $message = "Teilnehmerdaten erfolgreich gespeichert!"; $message_type = 'success'; } else { - $message = "Keine Benutzerdaten zum Speichern vorhanden."; + $message = "Keine Benutzerdaten übermittelt."; $message_type = 'warning'; } -} -// --------------------------------------------------------------------- -// Daten für das Formular abrufen (Meetings und Benutzer) -// --------------------------------------------------------------------- - -// Neu: Zusätzliche Meeting-Details für den Edit-Modus abrufen -$stmt = mysqli_prepare($conn, "SELECT m.meeting_date, m.reason, m.color_id, c.name AS color_name FROM meetings m LEFT JOIN colors c ON m.color_id = c.id WHERE m.id = ?"); -if ($stmt === false) { - die("Fehler in der SQL-Abfrage: " . mysqli_error($conn)); -} -mysqli_stmt_bind_param($stmt, "i", $meeting_id); -mysqli_stmt_execute($stmt); -$result = mysqli_stmt_get_result($stmt); -$meeting = mysqli_fetch_assoc($result); -mysqli_stmt_close($stmt); - -if (!$meeting) { - header("Location: index.php"); + // 🔁 Zurück zur ursprünglichen Quelle + header("Location: " . $cancel_link); exit; } -// Neu: Alle Farben für das Dropdown im Edit-Modus abrufen -$colors = []; -$colors_result = mysqli_query($conn, "SELECT id, name FROM colors ORDER BY name"); -if ($colors_result) { - while ($row = mysqli_fetch_assoc($colors_result)) { - $colors[] = $row; - } -} - -// Alle Benutzer abrufen -$users = []; -$users_result = mysqli_query($conn, "SELECT id, username AS name FROM users ORDER BY username"); -if ($users_result === false) { - die("Fehler in der SQL-Abfrage: " . mysqli_error($conn)); -} -while ($row = mysqli_fetch_assoc($users_result)) { - $users[] = $row; -} - -// Bestehende Feedback-Daten für dieses Meeting abrufen, falls vorhanden -$stmt = mysqli_prepare($conn, "SELECT user_id, attended, wore_color, paid FROM meeting_teilnehmer WHERE meeting_id = ?"); -if ($stmt === false) { - die("Fehler in der SQL-Abfrage: " . mysqli_error($conn)); -} -mysqli_stmt_bind_param($stmt, "i", $meeting_id); -mysqli_stmt_execute($stmt); -$result = mysqli_stmt_get_result($stmt); -while ($row = mysqli_fetch_assoc($result)) { - $existing_feedback[$row['user_id']] = $row; -} -mysqli_stmt_close($stmt); - require_once '../inc/header.php'; ?> @@ -138,25 +130,40 @@ require_once '../inc/header.php';

Teilnahme eintragen

-

für das Treffen am in der Farbe .

+

+ für das Treffen am + in der Farbe + + . +

-
+
Treffen-Details bearbeiten
- +
@@ -170,7 +177,8 @@ require_once '../inc/header.php';
- +

@@ -192,17 +200,23 @@ require_once '../inc/header.php';
- > + >
- > + >
- > + >
@@ -210,8 +224,9 @@ require_once '../inc/header.php'; +
- + Abbrechen
diff --git a/history.php b/history.php index 23920c1..ede69a8 100755 --- a/history.php +++ b/history.php @@ -5,18 +5,43 @@ include('inc/helpers.php'); // PHP-Logik für die Löschfunktion if (isset($_GET['action']) && $_GET['action'] == 'delete' && isset($_GET['id'])) { - $id = $_GET['id']; - $stmt = mysqli_prepare($conn, "DELETE FROM meetings WHERE id = ?"); - mysqli_stmt_bind_param($stmt, "i", $id); - if (mysqli_stmt_execute($stmt)) { - // Erfolgreiche Weiterleitung + $id = intval($_GET['id']); + + // 🔥 Zuerst abhängige Tabellen bereinigen – in der richtigen Reihenfolge! + // 1. Abstimmungen zu Vorschlägen löschen + $stmt1 = mysqli_prepare($conn, "DELETE FROM meeting_reschedule_votes WHERE proposal_id IN (SELECT id FROM meeting_reschedule_proposals WHERE meeting_id = ?)"); + if ($stmt1) { + mysqli_stmt_bind_param($stmt1, "i", $id); + mysqli_stmt_execute($stmt1); + mysqli_stmt_close($stmt1); + } + + // 2. Verschiebungsvorschläge löschen + $stmt2 = mysqli_prepare($conn, "DELETE FROM meeting_reschedule_proposals WHERE meeting_id = ?"); + if ($stmt2) { + mysqli_stmt_bind_param($stmt2, "i", $id); + mysqli_stmt_execute($stmt2); + mysqli_stmt_close($stmt2); + } + + // 3. Teilnehmerdaten löschen + $stmt3 = mysqli_prepare($conn, "DELETE FROM meeting_teilnehmer WHERE meeting_id = ?"); + if ($stmt3) { + mysqli_stmt_bind_param($stmt3, "i", $id); + mysqli_stmt_execute($stmt3); + mysqli_stmt_close($stmt3); + } + + // 4. Jetzt den Termin selbst löschen + $stmt4 = mysqli_prepare($conn, "DELETE FROM meetings WHERE id = ?"); + mysqli_stmt_bind_param($stmt4, "i", $id); + if (mysqli_stmt_execute($stmt4)) { header("Location: history.php?status=deleted"); exit; } else { - // Fehler-Meldung, falls etwas schiefgeht $error_message = "Fehler beim Löschen des Termins."; } - mysqli_stmt_close($stmt); + mysqli_stmt_close($stmt4); } // Funktion zum Abrufen aller Meeting-Details @@ -104,7 +129,6 @@ $colors = mysqli_fetch_all($colors_result, MYSQLI_ASSOC); $all_meetings = get_all_meeting_details($conn); include('inc/header.php'); - ?>
@@ -113,6 +137,13 @@ include('inc/header.php');

Termin-History

+ + + +