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 (nieuwste eerst) 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()); } ?>
| ID | Naam | Status | Acties | Lootjes |
|---|---|---|---|---|
| = $r['id'] ?> | = htmlspecialchars($r['naam']) ?> | = $r['status'] ?> | Afgerond |
prepare("SELECT gever, ontvanger FROM lootjes WHERE ronde_id=?");
$stmtLootjes->execute([$r['id']]);
$lootjes = $stmtLootjes->fetchAll();
if ($lootjes):
?>
|