Vragen 30 en 87 worden overgeslagen. Ik probeer al 2 dagen te achterhalen waar dit door komt??
Ik vermoed dat er een foutje in de functie zit, maar kom er maar niet achter. Kan iemand helpen?
<?php
/* Function */
function get_next($array, $key) {
$currentKey = key($array);
while ($currentKey !== null && $currentKey != $key) {
next($array);
$currentKey = key($array);
}
return current($array);
}
/* Afhandeling formulier */
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
/* Controleer het formulier
$error_msg = false;
/* Controleer op fouten
if (empty($error_msg) === false) {
/* Error melding weergeven
} else {
echo 'U wordt doorgestuurd naar de volgende vraag.';
/* Volgende vraag activeren */
$_SESSION['cur_q_id'] = get_next($_SESSION['q_ids'], $_SESSION['cur_q_id']);
//}
}
/* Virtuele vragenlijst */
$_SESSION['q_ids'] = array(30, 2, 36, 87, 4, 1);
/* Sorteer de vragenlijst op value (q_id) van hoog naar laag */
sort($_SESSION['q_ids'], SORT_NUMERIC);
/* Gesorteerde vragen weergeven */
foreach ($_SESSION['q_ids'] as $key => $val) {
echo "vraag[" . $key . "] = " . $val . "<br/>";
}
/* Controleer of er al antwoorden zijn gegeven */
if (isset($_SESSION['cur_q_id']) === false) {
echo 'De vragenlijst wordt opnieuw gestart bij de eerste vraag.';
/* Start een nieuwe vragenlijst bij eerste vraag */
$_SESSION['cur_q_id'] = $_SESSION['q_ids'][0];
}
/* Huidige vraag */
$cur_q_id = $_SESSION['cur_q_id'];
echo 'Huidige vraag: ' . $cur_q_id;
/* Key van huidige vraag (value) opvragen */
$cur_key = array_search($cur_q_id, $_SESSION['q_ids']);
/* Volgende vraag */
$next_q_id = get_next($_SESSION['q_ids'], $cur_key);
echo 'Volgende vraag: ' . $next_q_id;
/* Formulier */
?>
<h2>Dit is vraag <?php echo $_SESSION['cur_q_id']; ?></h2>
<form method="post" action="">
<input type="submit">
</form>
<?php
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>