🔐 Admin Login

$out"; } // --- 2. SQL AKTIONEN --- $msg = ""; $error = ""; // SPIELE SPEICHERN if (isset($_POST['save_game'])) { $id = (int)($_POST['id'] ?? 0); $r_id = (int)$_POST['game_reihe_id']; $t_id = ($_POST['game_typ_id'] == '0') ? null : (int)$_POST['game_typ_id']; $l_id = ($_POST['game_level_id'] == '0') ? null : (int)$_POST['game_level_id']; // EAN BEREINIGUNG: NUR LEERZEICHEN ENTFERNEN $eanRaw = $_POST['ean'] ?? ''; $eanClean = str_replace(' ', '', (string)$eanRaw); $ean = ($eanClean === '') ? null : $eanClean; $urlInput = trim($_POST['url']); try { $pdo->beginTransaction(); if ($id > 0) { $stmt = $pdo->prepare("UPDATE spiele SET game_reihe_id=?, titel=?, game_typ_id=?, game_level_id=?, ean=? WHERE id=?"); $stmt->execute([$r_id, $_POST['titel'], $t_id, $l_id, $ean, $id]); $spiel_id = $id; } else { $stmt = $pdo->prepare("INSERT INTO spiele (game_reihe_id, titel, game_typ_id, game_level_id, ean) VALUES (?,?,?,?,?)"); $stmt->execute([$r_id, $_POST['titel'], $t_id, $l_id, $ean]); $spiel_id = $pdo->lastInsertId(); } // BILD-DOWNLOAD LOGIK (Nur bei externen URLs) if (!empty($urlInput) && strpos($urlInput, 'http') === 0) { $ext = pathinfo(parse_url($urlInput, PHP_URL_PATH), PATHINFO_EXTENSION) ?: 'jpg'; // Dateiname basiert auf bereinigter EAN (oder ID) $fileName = (!empty($eanClean) ? $eanClean : "game_" . $spiel_id) . "." . $ext; $destPath = IMG_PATH . $fileName; $imgData = @file_get_contents($urlInput); if ($imgData && file_put_contents($destPath, $imgData)) { $pdo->prepare("UPDATE spiele SET bild_url=? WHERE id=?")->execute([$fileName, $spiel_id]); } } elseif (!empty($urlInput)) { // Falls bereits ein Dateiname oder lokaler Pfad übergeben wurde $pdo->prepare("UPDATE spiele SET bild_url=? WHERE id=?")->execute([$urlInput, $spiel_id]); } $pdo->commit(); $msg = ($id > 0) ? "Spiel aktualisiert!" : "Neues Spiel angelegt!"; } catch (PDOException $e) { $pdo->rollBack(); $error = "Fehler: " . $e->getMessage(); } } // STAMMDATEN LOGIK (Bleibt unverändert) if (isset($_POST['add_reihe'])) { $c = $pdo->prepare("SELECT id FROM game_reihe WHERE name=?"); $c->execute([$_POST['name']]); if ($c->fetch()) { $error = "Reihe existiert bereits!"; } else { $pdo->prepare("INSERT INTO game_reihe (name) VALUES (?)")->execute([$_POST['name']]); $msg="Reihe hinzugefügt!"; } } if (isset($_POST['add_typ'])) { $c = $pdo->prepare("SELECT id FROM game_typ WHERE game_reihe_id=? AND bezeichnung=?"); $c->execute([$_POST['r_id'], $_POST['bez']]); if ($c->fetch()) { $error = "Typ existiert bereits für diese Reihe!"; } else { $pdo->prepare("INSERT INTO game_typ (game_reihe_id, bezeichnung) VALUES (?,?)")->execute([$_POST['r_id'], $_POST['bez']]); $msg="Typ hinzugefügt!"; } } if (isset($_POST['add_level'])) { $c = $pdo->prepare("SELECT id FROM game_level WHERE game_reihe_id=? AND bezeichnung=?"); $c->execute([$_POST['r_id'], $_POST['bez']]); if ($c->fetch()) { $error = "Level existiert bereits für diese Reihe!"; } else { $pdo->prepare("INSERT INTO game_level (game_reihe_id, bezeichnung) VALUES (?,?)")->execute([$_POST['r_id'], $_POST['bez']]); $msg="Level hinzugefügt!"; } } if (isset($_POST['add_spieler'])) { $c = $pdo->prepare("SELECT id FROM spieler WHERE name=?"); $c->execute([$_POST['name']]); if ($c->fetch()) { $error = "Spieler existiert bereits!"; } else { $pdo->prepare("INSERT INTO spieler (name) VALUES (?)")->execute([$_POST['name']]); $msg="Spieler hinzugefügt!"; } } // LÖSCHEN if (isset($_GET['del_t']) && isset($_GET['del_id'])) { if (in_array($_GET['del_t'], ['spiele', 'spieler', 'game_reihe', 'game_typ', 'game_level'])) { $pdo->prepare("DELETE FROM `".$_GET['del_t']."` WHERE id=?")->execute([(int)$_GET['del_id']]); header("Location: admin.php"); exit; } } // DATEN LADEN $reihen = $pdo->query("SELECT * FROM game_reihe ORDER BY name")->fetchAll(); $typen = $pdo->query("SELECT t.*, r.name as r_name FROM game_typ t JOIN game_reihe r ON t.game_reihe_id = r.id ORDER BY r.name, t.bezeichnung")->fetchAll(); $levels = $pdo->query("SELECT l.*, r.name as r_name FROM game_level l JOIN game_reihe r ON l.game_reihe_id = r.id ORDER BY r.name, l.bezeichnung")->fetchAll(); $spieler = $pdo->query("SELECT * FROM spieler ORDER BY name")->fetchAll(); $spiele = $pdo->query("SELECT s.*, r.name as r_name FROM spiele s LEFT JOIN game_reihe r ON s.game_reihe_id = r.id ORDER BY s.id DESC")->fetchAll(); ?> Admin Dashboard

🛠 Admin Panel

Katalog Logout
BildReiheTitelTyp / LevelEANBild / LinkAktion
".renderStars($lx['bezeichnung']).""; ?> 🗑

Spieler Profile

Löschen

1. Reihen

2. Typen

3. Level / Sterne