query("SELECT * FROM spieler ORDER BY name ASC")->fetchAll(); $teamFilter = isset($_GET['team_id']) ? (int)$_GET['team_id'] : 0; $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"; } $sql .= " ORDER BY r.name ASC, sp.titel ASC, sc.zeit ASC"; $results = $pdo->query($sql)->fetchAll(); // --- 2. GRUPPIERUNG --- $groupedData = []; foreach ($results as $row) { $reihe = !empty($row['reihe_name']) ? $row['reihe_name'] : 'Sonstige'; $gameId = $row['id']; if (!isset($groupedData[$reihe][$gameId])) { $groupedData[$reihe][$gameId] = [ 'titel' => $row['titel'], 'bild_url' => $row['bild_url'], 'typ_name' => $row['typ_name'], 'teams' => [] ]; } // Verhindert doppelte Teamanzeige bei Bundle-Einträgen $teamKey = $row['team_name'] . '_' . $row['zeit']; if (!isset($groupedData[$reihe][$gameId]['teams'][$teamKey])) { $groupedData[$reihe][$gameId]['teams'][$teamKey] = [ 'name' => $row['team_name'], 'zeit' => (int)$row['zeit'], 'hilfe' => (int)$row['hilfe'], 'sterne' => (int)$row['sterne'] ]; } } ?> EXIT Log - Kompaktansicht

📂 Gelöste Abenteuer

Dashboard
Filter:
$games): ?>
$data): ?>
👥
✅ Gelöst
Min.
Hilfe: