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