query("SELECT * FROM spieler ORDER BY name ASC")->fetchAll(); $teamFilter = isset($_GET['team_id']) ? (int)$_GET['team_id'] : 0; // Neue SQL-Struktur mit Joins für Reihe und Typ $sql = "SELECT sp.*, sc.zeit, sc.hilfe, sc.sterne, s.name as team_name, r.name as reihe_name, t.bezeichnung as typ_name FROM spiele sp JOIN scores sc ON sp.id = sc.spiel_id JOIN spieler s ON sc.spieler_id = s.id LEFT JOIN game_reihe r ON sp.game_reihe_id = r.id LEFT JOIN game_typ t ON sp.game_typ_id = t.id"; if ($teamFilter > 0) { $sql .= " WHERE s.id = $teamFilter"; } // Sortierung nach Reihenname, Spieltitel und dann Score-Zeit $sql .= " ORDER BY r.name ASC, sp.titel ASC, sc.zeit ASC"; $stmt = $pdo->query($sql); $results = $stmt->fetchAll(); // --- 2. GRUPPIERUNG NACH REIHE UND SPIEL --- $groupedData = []; foreach ($results as $row) { $reihe = !empty($row['reihe_name']) ? $row['reihe_name'] : 'Sonstige'; $gameId = $row['id']; // ID als Key nutzen, falls Titel doppelt vorkommen könnten if (!isset($groupedData[$reihe][$gameId])) { $groupedData[$reihe][$gameId] = [ 'titel' => $row['titel'], 'bild_url' => $row['bild_url'], 'typ_name' => $row['typ_name'], 'teams' => [] ]; } $groupedData[$reihe][$gameId]['teams'][] = [ 'name' => $row['team_name'], 'zeit' => (int)$row['zeit'], 'hilfe' => (int)$row['hilfe'], 'sterne' => (int)$row['sterne'] ]; } ?> EXIT Log - Gelöste Abenteuer

📂 Gelöste Abenteuer

Dashboard
Filter nach Team:
$games): ?>
$data): ?>
👥
✅ Erfolgreich gelöst (Archiv)
Zeit: Min.
Hilfe:
⭐