Historytermine jetzt auch editierbar
This commit is contained in:
@@ -11,13 +11,34 @@ if (!isset($_GET['id'])) {
|
||||
header("Location: index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
$meeting_id = htmlspecialchars($_GET['id']);
|
||||
|
||||
// Neu: Quelle des Aufrufs festlegen für bedingte Logik und Weiterleitung
|
||||
$source_page = isset($_GET['source']) && $_GET['source'] == 'history' ? 'history' : 'index';
|
||||
$cancel_link = $source_page === 'history' ? '../history.php' : '../index.php';
|
||||
|
||||
// Daten speichern, wenn das Formular abgeschickt wurde
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
$table_name = "meeting_teilnehmer"; // <<< Korrekter Tabellenname
|
||||
$table_name = "meeting_teilnehmer";
|
||||
|
||||
// Vorhandene Daten für dieses Meeting löschen, um Duplikate zu vermeiden
|
||||
// Neu: Daten des Meetings selbst aktualisieren, falls aus der History aufgerufen
|
||||
if ($source_page === 'history') {
|
||||
$meeting_date = $_POST['meeting_date'];
|
||||
$color_id = $_POST['color_id'];
|
||||
$reason = $_POST['reason'] ?? null;
|
||||
|
||||
$stmt = mysqli_prepare($conn, "UPDATE meetings SET meeting_date = ?, color_id = ?, reason = ? WHERE id = ?");
|
||||
if ($stmt) {
|
||||
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
|
||||
$stmt = mysqli_prepare($conn, "DELETE FROM " . $table_name . " WHERE meeting_id = ?");
|
||||
if ($stmt === false) {
|
||||
die("Fehler in der SQL-Abfrage: " . mysqli_error($conn));
|
||||
@@ -55,8 +76,8 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
// Daten für das Formular abrufen (Meetings und Benutzer)
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
// Meeting-Details abrufen
|
||||
$stmt = mysqli_prepare($conn, "SELECT m.meeting_date, c.name AS color_name FROM meetings m JOIN colors c ON m.color_id = c.id WHERE m.id = ?");
|
||||
// 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));
|
||||
}
|
||||
@@ -71,6 +92,15 @@ if (!$meeting) {
|
||||
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");
|
||||
@@ -82,7 +112,7 @@ while ($row = mysqli_fetch_assoc($users_result)) {
|
||||
}
|
||||
|
||||
// Bestehende Feedback-Daten für dieses Meeting abrufen, falls vorhanden
|
||||
$table_name = "meeting_teilnehmer"; // <<< Korrekter Tabellenname
|
||||
$table_name = "meeting_teilnehmer";
|
||||
$stmt = mysqli_prepare($conn, "SELECT user_id, attended, wore_color, paid FROM " . $table_name . " WHERE meeting_id = ?");
|
||||
if ($stmt === false) {
|
||||
die("Fehler in der SQL-Abfrage: " . mysqli_error($conn));
|
||||
@@ -100,7 +130,10 @@ require_once '../inc/header.php';
|
||||
|
||||
<div class="container mt-5">
|
||||
<h2 class="mb-4">Teilnahme eintragen</h2>
|
||||
<p class="text-muted">für das Treffen am <strong><?= date('d.m.Y', strtotime($meeting['meeting_date'])) ?></strong> in der Farbe <strong><?= htmlspecialchars($meeting['color_name']) ?></strong>.</p>
|
||||
|
||||
<?php if ($source_page === 'index'): ?>
|
||||
<p class="text-muted">für das Treffen am <strong><?= date('d.m.Y', strtotime($meeting['meeting_date'])) ?></strong> in der Farbe <strong><?= htmlspecialchars($meeting['color_name']) ?></strong>.</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($message): ?>
|
||||
<div class="alert alert-<?= $message_type ?> alert-dismissible fade show" role="alert">
|
||||
@@ -111,7 +144,33 @@ require_once '../inc/header.php';
|
||||
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-body">
|
||||
<form action="participant.php?id=<?= $meeting_id ?>" method="post">
|
||||
<form action="participant.php?id=<?= $meeting_id ?>&source=<?= $source_page ?>" method="post">
|
||||
<?php if ($source_page === 'history'): ?>
|
||||
<h5 class="mb-3">Treffen-Details bearbeiten</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-3">
|
||||
<label for="meeting_date" class="form-label">Datum des Treffens</label>
|
||||
<input type="datetime-local" class="form-control" id="meeting_date" name="meeting_date" value="<?= date('Y-m-d\TH:i', strtotime($meeting['meeting_date'])) ?>" required>
|
||||
</div>
|
||||
<div class="col-md-4 mb-3">
|
||||
<label for="color_id" class="form-label">Farbvorgabe</label>
|
||||
<select class="form-select" id="color_id" name="color_id" required>
|
||||
<?php foreach ($colors as $color): ?>
|
||||
<option value="<?= $color['id'] ?>" <?= $meeting['color_id'] == $color['id'] ? 'selected' : '' ?>>
|
||||
<?= htmlspecialchars($color['name']) ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-4 mb-3">
|
||||
<label for="reason" class="form-label">Grund (optional)</label>
|
||||
<input type="text" class="form-control" id="reason" name="reason" value="<?= htmlspecialchars($meeting['reason']) ?>">
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<h5 class="mb-3">Teilnehmer-Details bearbeiten</h5>
|
||||
<?php endif; ?>
|
||||
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -147,7 +206,7 @@ require_once '../inc/header.php';
|
||||
</table>
|
||||
<div class="d-flex justify-content-between mt-3">
|
||||
<button type="submit" class="btn btn-primary">Speichern</button>
|
||||
<a href="../index.php" class="btn btn-outline-secondary">Abbrechen</a>
|
||||
<a href="<?= htmlspecialchars($cancel_link) ?>" class="btn btn-outline-secondary">Abbrechen</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
11
history.php
11
history.php
@@ -171,14 +171,13 @@ include('inc/header.php');
|
||||
<?php else: ?>
|
||||
<?php foreach ($all_meetings as $meeting_id => $meeting): ?>
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header d-flex justify-content-between align-items-center" style="background-color: rgba(<?= hexToRgb($meeting['hex_code']) ?>, 0.25);">
|
||||
<div class="mb-0 fs-6 fs-md-5 fw-bold" style="color: <?= get_readable_text_color($meeting['hex_code']) ?>;">
|
||||
<span class="fw-normal me-2">am</span>
|
||||
<?= date('d.m.y', strtotime($meeting['date'])) ?>
|
||||
<div class="card-header d-flex justify-content-between bg-secondary bg-opacity-25 text-dark align-items-center">
|
||||
<div class="mb-0 fs-6 fs-md-5 fw-bold">
|
||||
<span class="fw-normal me-2">am</span><?= date('d.m.y', strtotime($meeting['date'])) ?>
|
||||
</div>
|
||||
<div>
|
||||
<a href="admin/participant.php?id=<?= $meeting_id ?>" style="text-decoration: none; border: none; outline: none;">
|
||||
<span class="material-symbols-outlined" style="color: <?= get_readable_text_color($meeting['hex_code']) ?>;">edit_calendar</span>
|
||||
<a href="admin/participant.php?id=<?= $meeting_id ?>&source=history" style="text-decoration: none; border: none; outline: none;">
|
||||
<span class="material-symbols-outlined text-dark">edit_calendar</span>
|
||||
</a>
|
||||
<a href="history.php?action=delete&id=<?= $meeting_id ?>" class="ms-1" style="text-decoration: none; border: none; outline: none;" onclick="return confirm('Möchtest du diesen Termin wirklich löschen?');">
|
||||
<span class="material-symbols-outlined text-danger">delete_outline</span>
|
||||
|
||||
Reference in New Issue
Block a user