query("SELECT * FROM game_reihe ORDER BY name ASC")->fetchAll();
// --- 2. LOGIK: NEUEN SPIELER HINZUFÜGEN ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_player'])) {
$sql = "INSERT IGNORE INTO spieler (name) VALUES (?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$_POST['neuer_spieler_name']]);
header("Location: index.php?success=player");
exit;
}
// --- 3. LOGIK: SCORE HINZUFÜGEN (INKL. BUNDLE-LOGIK) ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_score'])) {
$unbekannt = isset($_POST['ergebnis_unbekannt']);
$zeit = $unbekannt ? 0 : (int)$_POST['zeit'];
$hilfe = $unbekannt ? 0 : (int)$_POST['hilfe'];
$sterne = $unbekannt ? 0 : (int)$_POST['sterne'];
$spieler_id = $_POST['spieler_id'];
$spiel_id = $_POST['spiel_id'];
try {
$pdo->beginTransaction();
// 1. Den Haupt-Score speichern
$sql = "INSERT INTO scores (spieler_id, spiel_id, zeit, hilfe, sterne) VALUES (?, ?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$spieler_id, $spiel_id, $zeit, $hilfe, $sterne]);
// 2. AUTOMATIK: Prüfen, ob dieses Spiel Unter-Abenteuer hat (Bundles)
$stmtChildren = $pdo->prepare("SELECT id FROM spiele WHERE parent_id = ?");
$stmtChildren->execute([$spiel_id]);
$children = $stmtChildren->fetchAll();
if ($children) {
$sqlChildScore = "INSERT INTO scores (spieler_id, spiel_id, zeit, hilfe, sterne) VALUES (?, ?, ?, ?, ?)";
$stmtChildScore = $pdo->prepare($sqlChildScore);
foreach ($children as $child) {
$stmtChildScore->execute([$spieler_id, $child['id'], $zeit, $hilfe, $sterne]);
}
}
$pdo->commit();
header("Location: index.php?success=score");
exit;
} catch (Exception $e) {
$pdo->rollBack();
die("Fehler beim Speichern: " . $e->getMessage());
}
}
// --- 4. DATEN ABFRAGEN (NEUE STRUKTUR MIT JOINS) ---
$sqlGames = "SELECT s.*,
r.name as reihe_name,
t.bezeichnung as typ_name,
l.bezeichnung as level_name
FROM spiele s
LEFT JOIN game_reihe r ON s.game_reihe_id = r.id
LEFT JOIN game_typ t ON s.game_typ_id = t.id
LEFT JOIN game_level l ON s.game_level_id = l.id
ORDER BY r.name ASC, s.titel ASC";
$exitGames = $pdo->query($sqlGames)->fetchAll(PDO::FETCH_ASSOC);
$playersList = $pdo->query("SELECT * FROM spieler ORDER BY name ASC")->fetchAll();
$sqlScores = "SELECT s.*, p.name as spieler_name
FROM scores s
JOIN spieler p ON s.spieler_id = p.id
ORDER BY s.id DESC";
$allScores = $pdo->query($sqlScores)->fetchAll();
// Hilfsfunktion Sterne (Zahlen zu ★)
function getStarRating($val) {
if (!is_numeric($val)) return htmlspecialchars($val);
$n = (int)$val; $out = "";
for($i=1; $i<=5; $i++) { $out .= ($i <= $n) ? "★" : "☆"; }
return $out;
}
?>
EXIT - Dashboard
= $_GET['success'] === 'score' ? '✅ Score gespeichert!' : '👤 Spieler angelegt!' ?>
= htmlspecialchars($game['reihe_name']) ?>
= htmlspecialchars($game['titel']) ?>
= htmlspecialchars($game['typ_name'] ?: 'Basis') ?>
= getStarRating($game['level_name'] ?: '---') ?>
| = htmlspecialchars($entry['spieler_name']) ?> |
= $entry['zeit'] > 0 ? $entry['zeit']." Min" : '?' ?> |
= $entry['sterne'] > 0 ? $entry['sterne']."★" : "✔" ?> |
Noch ungelöst... | ";
?>
👤 Team/Spieler