pagina terug..-->sessie variabele onjuist
momenteel ontwikkel ik een online enquete. Basis komt er op neer dat ik de file enquete.php telkens opnieuw laad met nieuwe vragen uit de database. bij elke 'nieuwe' pagina verhoog ik een sessie variabele ($_SESSION['pageID']), het pagina nr, met 1.
Dit geeft o.a. mooi de locatie vd enquete aan de gebruiker. Alleen zit ik met een probleem. wanneer ik pagina terug kies in de browser, behoudt deze de waarde van de laatst gekozen pagina.
Iemand bekend met dit probleem? Of zijn er miss wel php functies die inspelen op deze browser functies?
alvast bedankt!
In $_SESSION[3] staat dan bijvoorbeeld een array met de gegevens van pagina 3.
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?php
session_start();
//maak connectie met database
include "config.php";
$formValid = TRUE;
//globale info
$vrgnD1 = mysql_num_rows(mysql_query("SELECT id FROM vooronderzoek_vrgn1"));
$vrgnD2 = mysql_num_rows(mysql_query("SELECT id FROM vooronderzoek_vrgn2"));
$vrgnD3 = mysql_num_rows(mysql_query("SELECT id FROM vooronderzoek_vrgn3"));
//pid !=29
if(!empty($_POST['volgende']) && $_SESSION['pageid'] != 29)
{
$nVragen = mysql_num_rows(mysql_query("SELECT id FROM banners"));
//pid <=19
if($_SESSION['pageid'] <= 19){
$nVragen = $vrgnD1;
}
//pid > 19 && <= 28
elseif($_SESSION['pageid'] > 19 && $_SESSION['pageid'] <= 28){
$nVragen = $vrgnD2;
}
//pid ==29
else{//11 persoonlijke vragen
$nVragen = $vrgnD3;
}
//check of alles is ingevuld
include "validatie.php";
if($formValid){
$message .= '';
//Via een for loop de antwoorden in $_SESSION['antwoorden'] zetten.
for($i = 1; $i<= $nVragen; $i++){
if(!isset($_SESSION['antwoorden'])){
$_SESSION['antwoorden'] = $_POST['vraag'.$i];
$_POST['vraag'.$i] = '';
continue;
}
if ($i < $nVragen){
$_SESSION['antwoorden'] .= $_POST['vraag'.$i];
$_POST['vraag'.$i] = '';
}
if($i == $nVragen){
$_SESSION['antwoorden'] .= $_POST['vraag'.$i]."|";
$_POST['vraag'.$i] = '';
}
}
$_SESSION['pageid']++;
}
}
if(isset($_POST['volgende']) && $_SESSION['pageid'] == 20)// ga naar intro deel2
{
header("Location: introDeel2.php");
}
if(isset($_POST['volgende']) && $_SESSION['pageid'] == 29)
{
header("Location: einde.php");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>VoorOnderzoek</title>
<link rel="stylesheet" href="stylesheets/stylesheet5.css" type="text/css" media="screen">
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->
<link rel="SHORTCUT ICON" href="/onderzoek/"/>
</head>
<body>
<div id="container">
<div id="header">
<p>STAP <?php echo $_SESSION['pageid']; ?>/30</p>
</div>
<!--<div id="logo"></div>-->
<div id="banner">
<?php
include("afhandelingBanners.php");
?>
</div>
<!--print vragen-->
<div id="rating">
<?php
echo((!$formValid)? '<div id="formNOTvalid">': '');
echo '<p>'.$message.'</p>';
echo((!$formValid)? '</div>': '');
?>
<form method='post' action='enquete.php'>
<table>
<?php
while($row = mysql_fetch_array($vragen))
{
$vraagnr = $row['id'];
if($_SESSION['vraagnr'] == ''){
$vraagnr = 1;
$_SESSION['vraagnr'] = $vraagnr;
}else{
$_SESSION['vraagnr'] = $vraagnr;
}
$vraag = $row['vraag'];//de vraag
$type = $row['type'];//het type input element
$antwoorden = explode('|',$row['antwoorden']); //de antwoorden opties
echo "<tr><td class=\"rating\"><b>";
echo $vraag;
echo "</b></td><td class=\"rating\">";
if($type == "text"){
echo '<input type="'.$type.'" name="vraag'.$_SESSION['vraagnr'].'" />';
echo "</td>";
}
foreach($antwoorden as $antwoord => $value){
$antwoord=$antwoord+1;
if(empty($value)){continue;}
echo '<input type="'.$type.'" name="vraag'.$_SESSION['vraagnr'].'" value="'.$antwoord.'" id="antwoord'.$antwoord.'" "'.((isset($_POST['vraag'.$_SESSION['vraagnr']]) && $_POST['vraag'.$_SESSION['vraagnr']] == $antwoord) ? 'class = "error" checked="checked"' : '').'" /><label for="antwoord'.$antwoord.'">'.$value.'</label>';
}
if($type == "radio"){echo "</td>";}
echo "</tr>";
}
?>
<tr>
<td></td><td style="text-align: right;"><input type="submit" name="volgende" value="Volgende" class="button" /></td>
</tr>
</table>
</form>
</div>
<div class="push"></div>
</div>
<div id="footer">
<p>powered by <a href="http://www.webrtistik.nl" target="_blank"><?php include("randColorTxt.php"); randColorTxt(WebRtistik); ?></a>© - 2008</p>
</div>
</body>
</html>
session_start();
//maak connectie met database
include "config.php";
$formValid = TRUE;
//globale info
$vrgnD1 = mysql_num_rows(mysql_query("SELECT id FROM vooronderzoek_vrgn1"));
$vrgnD2 = mysql_num_rows(mysql_query("SELECT id FROM vooronderzoek_vrgn2"));
$vrgnD3 = mysql_num_rows(mysql_query("SELECT id FROM vooronderzoek_vrgn3"));
//pid !=29
if(!empty($_POST['volgende']) && $_SESSION['pageid'] != 29)
{
$nVragen = mysql_num_rows(mysql_query("SELECT id FROM banners"));
//pid <=19
if($_SESSION['pageid'] <= 19){
$nVragen = $vrgnD1;
}
//pid > 19 && <= 28
elseif($_SESSION['pageid'] > 19 && $_SESSION['pageid'] <= 28){
$nVragen = $vrgnD2;
}
//pid ==29
else{//11 persoonlijke vragen
$nVragen = $vrgnD3;
}
//check of alles is ingevuld
include "validatie.php";
if($formValid){
$message .= '';
//Via een for loop de antwoorden in $_SESSION['antwoorden'] zetten.
for($i = 1; $i<= $nVragen; $i++){
if(!isset($_SESSION['antwoorden'])){
$_SESSION['antwoorden'] = $_POST['vraag'.$i];
$_POST['vraag'.$i] = '';
continue;
}
if ($i < $nVragen){
$_SESSION['antwoorden'] .= $_POST['vraag'.$i];
$_POST['vraag'.$i] = '';
}
if($i == $nVragen){
$_SESSION['antwoorden'] .= $_POST['vraag'.$i]."|";
$_POST['vraag'.$i] = '';
}
}
$_SESSION['pageid']++;
}
}
if(isset($_POST['volgende']) && $_SESSION['pageid'] == 20)// ga naar intro deel2
{
header("Location: introDeel2.php");
}
if(isset($_POST['volgende']) && $_SESSION['pageid'] == 29)
{
header("Location: einde.php");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>VoorOnderzoek</title>
<link rel="stylesheet" href="stylesheets/stylesheet5.css" type="text/css" media="screen">
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->
<link rel="SHORTCUT ICON" href="/onderzoek/"/>
</head>
<body>
<div id="container">
<div id="header">
<p>STAP <?php echo $_SESSION['pageid']; ?>/30</p>
</div>
<!--<div id="logo"></div>-->
<div id="banner">
<?php
include("afhandelingBanners.php");
?>
</div>
<!--print vragen-->
<div id="rating">
<?php
echo((!$formValid)? '<div id="formNOTvalid">': '');
echo '<p>'.$message.'</p>';
echo((!$formValid)? '</div>': '');
?>
<form method='post' action='enquete.php'>
<table>
<?php
while($row = mysql_fetch_array($vragen))
{
$vraagnr = $row['id'];
if($_SESSION['vraagnr'] == ''){
$vraagnr = 1;
$_SESSION['vraagnr'] = $vraagnr;
}else{
$_SESSION['vraagnr'] = $vraagnr;
}
$vraag = $row['vraag'];//de vraag
$type = $row['type'];//het type input element
$antwoorden = explode('|',$row['antwoorden']); //de antwoorden opties
echo "<tr><td class=\"rating\"><b>";
echo $vraag;
echo "</b></td><td class=\"rating\">";
if($type == "text"){
echo '<input type="'.$type.'" name="vraag'.$_SESSION['vraagnr'].'" />';
echo "</td>";
}
foreach($antwoorden as $antwoord => $value){
$antwoord=$antwoord+1;
if(empty($value)){continue;}
echo '<input type="'.$type.'" name="vraag'.$_SESSION['vraagnr'].'" value="'.$antwoord.'" id="antwoord'.$antwoord.'" "'.((isset($_POST['vraag'.$_SESSION['vraagnr']]) && $_POST['vraag'.$_SESSION['vraagnr']] == $antwoord) ? 'class = "error" checked="checked"' : '').'" /><label for="antwoord'.$antwoord.'">'.$value.'</label>';
}
if($type == "radio"){echo "</td>";}
echo "</tr>";
}
?>
<tr>
<td></td><td style="text-align: right;"><input type="submit" name="volgende" value="Volgende" class="button" /></td>
</tr>
</table>
</form>
</div>
<div class="push"></div>
</div>
<div id="footer">
<p>powered by <a href="http://www.webrtistik.nl" target="_blank"><?php include("randColorTxt.php"); randColorTxt(WebRtistik); ?></a>© - 2008</p>
</div>
</body>
</html>
in deze code roep ik nog wat andere files aan, afhankelijk vh pageID.
Ik snap nog niet helemaal hoe ik dan elke pagina zijn eigen info moet geven in de associatieve array..en dan het probleem heb opgelost als ik een pagina terug klik.
Je zou het paginaID ook in de adresbalk van de browser kunnen zetten. Dan kun je met $_GET['pageID'] checken op welk paginanummer de user zich bevindt.
En als ik dan terug zou klikken in de browser(niet via een knop in de interface) heb ik dan niet nog steeds het zelfde probleem?
Hoe werkt dit dan?
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
header ('Content-type: text/html; charset=UTF-8');
ini_set ('display_errors', 1);
error_reporting (E_ALL);
$config = array (
'title' => 'Jan Koehoorn | PHPhulp voorbeeld'
);
$pag = (isset ($_GET['pag']) && in_array ($_GET['pag'], range (1, 3))) ? ($_GET['pag']) : (1);
$volgende = $pag + 1;
if ($volgende == 4) $volgende = 1;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $config['title']; ?></title>
<link rel="stylesheet" type="text/css" media="screen" href="examples/reset.css" />
<style type="text/css" media="screen">
div#container {margin: 10px auto; padding: 10px; width: 800px; background: #fe6;}
</style>
</head>
<body>
<div id="container">
<div id="header">
<h1><?php echo $config['title'] . '- pagina ' . $pag; ?></h1>
</div>
<div id="content">
<form method="post" accept-chartset="UTF8" action="test.php?pag=<?php echo $volgende; ?>">
<p>
<label for="tekst1">tekst 1:</label>
<input id="tekst1" name="tekst1" type="text" />
</p>
<p>
<input type="submit" value="verzenden" />
</p>
</form>
</div>
<div id="footer">
</div>
</div>
</body>
</html>
header ('Content-type: text/html; charset=UTF-8');
ini_set ('display_errors', 1);
error_reporting (E_ALL);
$config = array (
'title' => 'Jan Koehoorn | PHPhulp voorbeeld'
);
$pag = (isset ($_GET['pag']) && in_array ($_GET['pag'], range (1, 3))) ? ($_GET['pag']) : (1);
$volgende = $pag + 1;
if ($volgende == 4) $volgende = 1;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $config['title']; ?></title>
<link rel="stylesheet" type="text/css" media="screen" href="examples/reset.css" />
<style type="text/css" media="screen">
div#container {margin: 10px auto; padding: 10px; width: 800px; background: #fe6;}
</style>
</head>
<body>
<div id="container">
<div id="header">
<h1><?php echo $config['title'] . '- pagina ' . $pag; ?></h1>
</div>
<div id="content">
<form method="post" accept-chartset="UTF8" action="test.php?pag=<?php echo $volgende; ?>">
<p>
<label for="tekst1">tekst 1:</label>
<input id="tekst1" name="tekst1" type="text" />
</p>
<p>
<input type="submit" value="verzenden" />
</p>
</form>
</div>
<div id="footer">
</div>
</div>
</body>
</html>
Ik denk dat ik er zo wel uitkom..!!dank je wel alvast voor de tips. Leuke site trouwens met alle info!