prepare($sql); /* add ID params */ foreach ($ids_to_update as $id) { $params[] = $id; $types .= 'i'; } $stmt->bind_param($types, ...$params); if (!$stmt->execute()) { throw new RuntimeException('DB error: ' . $stmt->error); } $updated_count = $stmt->affected_rows; $stmt->close(); if ($updated_count === -1) { $_SESSION['form_message'] = 'Ein Fehler ist bei der Aktualisierung aufgetreten.'; $_SESSION['form_message_type'] = 0; } elseif ($updated_count > 0) { $_SESSION['form_message'] = $updated_count . ' Einträge erfolgreich aktualisiert.'; $_SESSION['form_message_type'] = 1; } else { $_SESSION['form_message'] = 'Keine Änderungen vorgenommen.'; $_SESSION['form_message_type'] = 0; } } header('Location: ' . $_SERVER['REQUEST_URI']); exit; } if (isset($_POST['delete_id'])) { verify_csrf(); $delete_id = intval($_POST['delete_id']); $stmt = $mysqli->prepare("DELETE FROM $tableTeilnehmendee where id = ?"); $stmt->bind_param('i', $delete_id); if ($stmt->execute()) { $_SESSION['form_message'] = 'Eintrag erfolgreich gelöscht.'; $_SESSION['form_message_type'] = 1; } else { $_SESSION['form_message'] = 'Löschen fehlgeschlagen.'; $_SESSION['form_message_type'] = 0; } header("Location: " . $_SERVER['REQUEST_URI']); exit; } $edit_row = null; if ($access_granted_trainer && isset($_GET['edit_id']) && is_numeric($_GET['edit_id']) && !isset($_POST['submit_turnerinnen_form'])) { $edit_id = intval($_GET['edit_id']); $edit_rows = db_select($mysqli, $tableTeilnehmende, "*", 'id = ?', [$edit_id]); if (!isset($edit_rows) || !is_array($edit_rows) || count($edit_rows) !== 1) { http_response_code(422); exit; } $edit_row = $edit_rows[0]; if ($edit_row && ($edit_row['verein'] === $selectedverein || $isAdmin)) { $_POST['nachname'] = $edit_row['name'] ?? ''; $_POST['vorname'] = $edit_row['vorname'] ?? ''; $_POST['geburtsdatum'] = $edit_row['geburtsdatum'] ?? ''; $_POST['programm'] = $edit_row['programm'] ?? ''; $_POST['edit_id'] = $edit_id; if ($isAdmin) { $_POST['verein'] = $edit_row['verein'] ?? ''; $_POST['bezahltOverride'] = $edit_row['bezahltoverride'] ?? 0; } } else { $_SESSION['form_message'] = 'Ungültiger Eintrag zum Bearbeiten.'; $_SESSION['form_message_type'] = 0; header('Location: ' . $_SERVER['REQUEST_URI']); exit; } } // === INSERT/UPDATE Handler === if ($access_granted_trainer && isset($_POST['submit_turnerinnen_form'])) { verify_csrf(); $name = htmlspecialchars($_POST['nachname']); $vorname = htmlspecialchars($_POST['vorname']); $geburtsdatum = trim($_POST['geburtsdatum']); $programm = htmlspecialchars($_POST['programm']); if (!$isAdmin) { $verein = $selectedverein; } else { $verein = htmlspecialchars($_POST['verein']); $bezahlt = intval($_POST['bezahltOverride']); } if (empty($name) || empty($vorname) || empty($geburtsdatum) || empty($programm)) { $_SESSION['form_message'] = 'Bitte füllen Sie alle erforderlichen Felder aus.'; $_SESSION['form_message_type'] = 0; } else { $data_to_insert = [ 'name' => $name, 'vorname' => $vorname, 'geburtsdatum' => $geburtsdatum, 'programm' => $programm, 'verein' => $verein, ]; if ($isAdmin) { $data_to_insert['bezahltoverride'] = $bezahlt; } // Check if we are editing an existing entry $is_editing = isset($_POST['edit_id']) && is_numeric($_POST['edit_id']) && $_POST['edit_id'] > 0; if ($is_editing) { $edit_id = intval($_POST['edit_id']); $entries = db_select($mysqli, $tableTeilnehmende, '*', 'id = ?', [$edit_id], 'rang ASC'); $entry = $entries[0]; // since you're fetching by ID, this should return exactly one row $columns = array_keys($data_to_insert); $set = implode( ', ', array_map(fn($col) => "$col = ?", $columns) ); $sql = "UPDATE $tableTeilnehmende SET $set WHERE id = ?"; var_dump($sql); $stmt = $mysqli->prepare($sql); $types = str_repeat('s', count($data_to_insert)) . 'i'; $values = array_values($data_to_insert); $values[] = $edit_id; $stmt->bind_param($types, ...$values); $updated = $stmt->execute(); $stmt->close(); if ($updated === false) { error_log('DB Update Error: ' . $wpdb->last_error); $_SESSION['form_message'] = 'Fehler beim Aktualisieren der Personendaten.'; $_SESSION['form_message_type'] = 0; } else if ($updated === 0) { $_SESSION['form_message'] = 'Keine Änderungen vorgenommen.'; $_SESSION['form_message_type'] = 0; } else { $_SESSION['form_message'] = $personEinzahl . ' erfolgreich aktualisiert!'; $_SESSION['form_message_type'] = 1; $_POST = []; header('Location: ' . strtok($_SERVER['REQUEST_URI'], '?')); exit; } } else { $columns = array_keys($data_to_insert); $set = implode( ', ', array_map(fn($col) => "$col = ?", $columns) ); $sql = "INSERT INTO $tableTeilnehmende SET $set"; $stmt = $mysqli->prepare($sql); $types = str_repeat('s', count($data_to_insert)); $values = array_values($data_to_insert); $stmt->bind_param($types, ...$values); $inserted = $stmt->execute(); $stmt->close(); if ($inserted) { $_SESSION['form_message'] = 'Daten erfolgreich gespeichert!'; $_SESSION['form_message_type'] = 1; header('Location: ' . strtok($_SERVER['REQUEST_URI'], '?')); exit; } else { $_SESSION['form_message'] = 'Fehler beim Speichern der Daten. Bitte versuchen Sie es später erneut.'; $_SESSION['form_message_type'] = 0; } } } }