$deadline) { $_SESSION['err'] = "Inschrijving is gesloten"; header('Location: '.$location); exit; } if (!isset($_POST['naam0']) || !isset($_POST['naam1']) || !isset($_POST['naam2']) || !isset($_POST['workshop1_id']) || !isset($_POST['workshop2_id']) || !preg_match('/^[[:digit:]]+/', $_POST['workshop1_id']) || !preg_match('/^[[:digit:]]+/', $_POST['workshop2_id'])) { $_SESSION['err'] = 'Ongeldige input, dit is onmogelijk!'; header('Location: '.$location); exit; } $naam0 = htmlenc(trim($_POST['naam0'])); $naam1 = htmlenc(trim($_POST['naam1'])); $naam2 = htmlenc(trim($_POST['naam2'])); $email = htmlenc(trim($_POST['email'])); $db = mdb2_open($dsn); if ($_POST['workshop1_id'] != 0 && !($workshop1_id = mdb2_single_val($db, "SELECT oudersws_id FROM oudersws WHERE oudersws_id != 1 AND oudersws_id = %i", $_POST['workshop1_id']))) { $_SESSION['err'] = 'Ongeldige input, dit is onmogelijk!'; header('Location: '.$location); exit; } if ($_POST['workshop2_id'] == 0) $workshop2_id = 0; if ($_POST['workshop2_id'] != 0 && !($workshop2_id = mdb2_single_val($db, "SELECT oudersws_id FROM oudersws WHERE oudersws_id != 1 AND oudersws_id = %i", $_POST['workshop2_id']))) { $_SESSION['err'] = 'Ongeldige input, dit is onmogelijk!'; header('Location: '.$location); exit; } if ($_POST['namens'] == 1) $namens = 1; else if ($_POST['namens'] == 2) $namens = 2; else { $_SESSION['err'] = 'Ongeldige input, dit is onmogelijk!'; header('Location: '.$location); exit; } if ($naam0 == '' || $naam1 == '' || $email == '' || !$workshop1_id) { $_SESSION['err'] = 'U heeft niet alle verplichte velden ingevuld'; header('Location: '.$location.sprint_url_parms($_POST, 1)); exit; } if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) { $_SESSION['err'] = 'Het opgegeven emailadres is ongeldig'; header('Location: '.$location.sprint_url_parms($_POST, 1)); exit; } if ($workshop1_id == $workshop2_id) { $_SESSION['err'] = 'U kunt zich niet inschrijven voor twee dezelfde workshops.'; header('Location: '.$location.sprint_url_parms($_POST, 1)); exit; } //print_r($_POST); // deze query maakt een lijst van workshops, met de beschikbare plaatsen per ronde // (indien iemand met twee personen inschrijft, delen we het aantal beschikbare plaatsen // per lokaal door 2, een lokaal met 1 lege plek heb je immers niks aan als je met zijn 2en komt mdb2_query($db, 'LOCK TABLES ouderslokalen READ, ouders WRITE, ouders AS ouders1 READ, ouders AS ouders2 READ, ouders AS ouders3 READ, oudersws READ'); $result = mdb2_all_assoc_rekey($db, << $order, 'min' => min($result[$order[0]]['o1']/$capacities[$order[0]]*$weights[0], min($result[$order[1]]['o2']/$capacities[$order[1]]*$weights[1], $result[$order[2]]['o3']/$capacities[$order[2]]*$weights[2])), 'max' => max($result[$order[0]]['o1']/$capacities[$order[0]]*$weights[0], max($result[$order[1]]['o2']/$capacities[$order[1]]*$weights[1], $result[$order[2]]['o3']/$capacities[$order[2]]*$weights[2]))); //return array('order' => $order, 'min' => min($result[$order[0]]['o1']/$capacities[$order[0]]/$weights[0], min($result[$order[1]]['o2']/$capacities[$order[1]]/$weights[1], $result[$order[2]]['o3']/$capacities[$order[2]]/$weights[2]))); //return array('order' => $order, 'min' => min($result[$order[0]]['o1'], min($result[$order[1]]['o2'], $result[$order[2]]['o3']))); //return array('order' => $order, 'min' => min($weights[0]*$result[$order[0]]['o1'], min($weights[1]*$result[$order[1]]['o2'], $weights[2]*$result[$order[2]]['o3']))); } echo("selector:\n"); print_r($selector); $possibilities = array_map('find_min_of_order', $selector); echo("possibilities:\n"); print_r($possibilities); // find possibility with largest 'min' //exit; shuffle($possibilities); $best = $possibilities[0]; for ($i = 1; $i < count($possibilities); $i++) { if ($best['min'] < $possibilities[$i]['min']) { $best = $possibilities[$i]; } } echo("best:\n"); // dit is de verdeling van de workshops over de rondes, nu nog lokalen zoeken print_r($best); if ($best['min'] <= 0) { $_SESSION['err'] = 'De gekozen combinatie van workshops is helaas reeds volgeboekt.'; header('Location: '.$location.sprint_url_parms($_POST, 1)); exit; } // neem degene met de meeste plek for ($i = 1; $i < count($possibilities); $i++) { if ($best['max'] < $possibilities[$i]['max'] && $possibilities['min'] > 0) { $best = $possibilities[$i]; } } if ($best['order'][0]) { $ronde1 = mdb2_all_ordered_rekey($db, <<inschrijf secret = $inschrijf_secret, inschrijving_id = $inschrijving_id, authcode = $authcode"); $info = mdb2_single_row($db, MDB2_FETCHMODE_ASSOC, <<