Fout in functie??
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?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?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>';
?>
/* 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>';
?>
Gewijzigd op 22/07/2013 11:24:21 door The Ultimate
Waar is je session_start(); ?
Gewijzigd op 22/07/2013 12:00:34 door The Ultimate
Het is natuurlijk mogelijk dat je die vergeten bent, en dat daardoor niet alles wordt weergegeven.
Indien iemand nog suggesties/verbeterpunten heeft, dan zijn deze uiteraard zeer welkom!
Indien iemand interesse heeft in het script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['cur_q_key'] = $_SESSION['next_q_id'];
}
/* Vragenlijst */
$_SESSION['q_ids'] = array(5, 10, 15, 20, 25, 30);
/* Start nieuwe vragenlijst */
if (empty($_SESSION['cur_q_key']) === true) {
$_SESSION['cur_q_key'] = key($_SESSION['q_ids']);
}
$cur_key = $_SESSION['cur_q_key'];
/* Verplaats de internal pointer naar de huidige positie indien de vragenlijst al werd gestart */
while (key($_SESSION['q_ids']) != $_SESSION['cur_q_key']) {
next($_SESSION['q_ids']);
$cur_key = key($_SESSION['q_ids']);
}
echo 'Huidige key: ' . $cur_key . '<br />';
/* Sla de value van de huidige key op */
$cur_val = current($_SESSION['q_ids']);
/* volgende vraag opslaan */
next($_SESSION['q_ids']);
$_SESSION['next_q_id'] = key($_SESSION['q_ids']);
echo 'Volgende: ' . $_SESSION['next_q_id'];
/* Formulier */
?>
<h2>Dit is vraag <?php echo $cur_val; ?></h2>
<form method="post" action="">
<input type="submit">
</form>
<?php
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>
<br/><a href="resetb">Reset</a>
<?php
/* resetb.php */
// session_destroy();
// header("Location: " . URL . "testb");
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['cur_q_key'] = $_SESSION['next_q_id'];
}
/* Vragenlijst */
$_SESSION['q_ids'] = array(5, 10, 15, 20, 25, 30);
/* Start nieuwe vragenlijst */
if (empty($_SESSION['cur_q_key']) === true) {
$_SESSION['cur_q_key'] = key($_SESSION['q_ids']);
}
$cur_key = $_SESSION['cur_q_key'];
/* Verplaats de internal pointer naar de huidige positie indien de vragenlijst al werd gestart */
while (key($_SESSION['q_ids']) != $_SESSION['cur_q_key']) {
next($_SESSION['q_ids']);
$cur_key = key($_SESSION['q_ids']);
}
echo 'Huidige key: ' . $cur_key . '<br />';
/* Sla de value van de huidige key op */
$cur_val = current($_SESSION['q_ids']);
/* volgende vraag opslaan */
next($_SESSION['q_ids']);
$_SESSION['next_q_id'] = key($_SESSION['q_ids']);
echo 'Volgende: ' . $_SESSION['next_q_id'];
/* Formulier */
?>
<h2>Dit is vraag <?php echo $cur_val; ?></h2>
<form method="post" action="">
<input type="submit">
</form>
<?php
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>
<br/><a href="resetb">Reset</a>
<?php
/* resetb.php */
// session_destroy();
// header("Location: " . URL . "testb");
?>
-gebruik niet empty(), maar isset() (of in dit geval !isset())
-het is <br>, niet <br />, dat is XHTML
al ben ik de logica van je script niet nagegaan, moet ik toegeven