beginTransaction(); $stmt = $pdo->prepare("INSERT INTO lootjes_rondes (naam) VALUES (?)"); $stmt->execute([$rondeNaam]); $ronde_id = $pdo->lastInsertId(); // Shuffle algoritme: geen enkel persoon mag zichzelf trekken $gevers = $members; $ontvangers = $members; $maxRetries = 1000; $retry = 0; do { shuffle($ontvangers); $valid = true; for ($i = 0; $i < count($gevers); $i++) { if ($gevers[$i] === $ontvangers[$i]) { $valid = false; break; } } $retry++; if ($retry > $maxRetries) { throw new Exception("Kan geen geldige lootjes toewijzen na $maxRetries pogingen."); } } while (!$valid); // Opslaan in database $stmtInsert = $pdo->prepare("INSERT INTO lootjes (ronde_id, gever, ontvanger) VALUES (?, ?, ?)"); for ($i = 0; $i < count($gevers); $i++) { $stmtInsert->execute([$ronde_id, $gevers[$i], $ontvangers[$i]]); } $pdo->commit(); log_action($pdo, $_SESSION['user']['username'], "Nieuwe ronde gestart: $rondeNaam", "Admin pagina"); $message = "✅ Nieuwe ronde '$rondeNaam' succesvol gestart!"; } catch (Exception $e) { $pdo->rollBack(); $message = "❌ Fout bij starten van nieuwe ronde: " . $e->getMessage(); } } } // --- Ronde afronden --- if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['close_round'])) { $ronde_id = $_POST['round_id'] ?? 0; if ($ronde_id) { $stmt = $pdo->prepare("UPDATE lootjes_rondes SET status='afgerond' WHERE id=?"); $stmt->execute([$ronde_id]); log_action($pdo, $_SESSION['user']['username'], "Ronde $ronde_id afgerond", "Admin pagina"); $message = "Ronde afgerond!"; } } // --- Huidige rondes ophalen --- try { $stmt = $pdo->query("SELECT * FROM lootjes_rondes ORDER BY created_at DESC"); $rondes = $stmt->fetchAll(); } catch (PDOException $e) { die("Fout bij ophalen van rondes: " . $e->getMessage()); } ?> Admin - Lootjesbeheer

🎩 Adminpaneel - Lootjesbeheer

📅 Rondes

IDNaamStatusActiesLootjes
✅ Afgerond
prepare("SELECT gever, ontvanger FROM lootjes WHERE ronde_id=?"); $stmtLootjes->execute([$r['id']]); $lootjes = $stmtLootjes->fetchAll(); if ($lootjes): ?>
Nog geen lootjes