$tripId, 'name' => trim($_POST['name'] ?? ''), 'menge' => trim($_POST['menge'] ?? ''), 'kat' => $_POST['kat'] ?? 'sonstiges', 'assigned_to' => ($_POST['assigned_to'] ?? '') ?: null, 'created_by' => $user['id'], ]); header('Location: /Develop/PlanerGoogel/packen.php?trip=' . $tripId); exit; } // Packed toggling if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['toggle'])) { $item = dbOne('SELECT * FROM packliste WHERE id = ? AND trip_id = ?', [(int)$_POST['toggle'], $tripId]); if ($item) { dbExec('UPDATE packliste SET packed = ? WHERE id = ?', [$item['packed'] ? 0 : 1, $item['id']]); } header('Location: /Develop/PlanerGoogel/packen.php?trip=' . $tripId); exit; } // Löschen if ($canEdit && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete'])) { dbExec('DELETE FROM packliste WHERE id = ? AND trip_id = ?', [(int)$_POST['delete'], $tripId]); header('Location: /Develop/PlanerGoogel/packen.php?trip=' . $tripId); exit; } // Alle zurücksetzen if ($canEdit && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['reset_all'])) { dbExec('UPDATE packliste SET packed = 0 WHERE trip_id = ?', [$tripId]); header('Location: /Develop/PlanerGoogel/packen.php?trip=' . $tripId); exit; } $items = dbAll( 'SELECT p.*, u.name as assigned_name, u.farbe as assigned_farbe FROM packliste p LEFT JOIN users u ON u.id = p.assigned_to WHERE p.trip_id = ? ORDER BY p.kat ASC, p.id ASC', [$tripId] ); // Nach Kategorie gruppieren $grouped = []; foreach ($items as $item) { $grouped[$item['kat']][] = $item; } $total = count($items); $packed = count(array_filter($items, fn($i) => $i['packed'])); $pct = $total > 0 ? round($packed / $total * 100) : 0; $pageTitle = 'Packliste'; $activeTab = 'packen'; include __DIR__ . '/includes/header.php'; ?>
0): ?>
/ gepackt % 0): ?>
🧳

Noch nichts auf der Packliste.

$katItems): $katInfo = $PACKEN_KATEGORIEN[$kat] ?? ['icon' => '📦', 'label' => ucfirst($kat)]; $katPacked = count(array_filter($katItems, fn($i) => $i['packed'])); ?>
/