sessies
ik ben op zoek naar de juiste syntax voor een regeltje sessies ivm het bijhouden van
zoekresultaten. hieronder staat de code van mijn indexpagina met de zoekfunctie.
als ik meer dan 5 zoekresultaten heb kan ik die bekijken met de link volgende, vorige enz... alleen werkt dit niet naar behoren. als ik volgende aanklik, krijg ik geen resultaten en dan bij vorige zijn de zoekresultaten weer weg, wat niet interessant is voor een online bookshop. de oplossing is simpel, doch ik vind het niet.....
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
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
<?php require_once('Connections/booksh.php'); ?>
<?php
session_start();
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$currentPage = $_SERVER["PHP_SELF"];
$maxRows_resultaat = 5;
$pageNum_resultaat = 0;
if (isset($_GET['pageNum_resultaat'])) {
$pageNum_resultaat = $_GET['pageNum_resultaat'];
}
$startRow_resultaat = $pageNum_resultaat * $maxRows_resultaat;
$colname_resultaat = "-1";
if (isset($_POST['trefwoord'])) {
$colname_resultaat = $_POST['trefwoord'];
}
mysql_select_db($database_booksh, $booksh);
$query_resultaat = sprintf("SELECT * FROM artikel WHERE auteur LIKE %s OR titel LIKE %s OR isbn LIKE %s ORDER BY beschrijving ASC", GetSQLValueString("%" . $colname_resultaat . "%", "text"),GetSQLValueString("%" . $colname_resultaat . "%", "text"),GetSQLValueString("%" . $colname_resultaat . "%", "text"));
$query_limit_resultaat = sprintf("%s LIMIT %d, %d", $query_resultaat, $startRow_resultaat, $maxRows_resultaat);
$resultaat = mysql_query($query_limit_resultaat, $booksh) or die(mysql_error());
$row_resultaat = mysql_fetch_assoc($resultaat);
if (isset($_GET['totalRows_resultaat'])) {
$totalRows_resultaat = $_GET['totalRows_resultaat'];
} else {
$all_resultaat = mysql_query($query_resultaat);
$totalRows_resultaat = mysql_num_rows($all_resultaat);
}
$totalPages_resultaat = ceil($totalRows_resultaat/$maxRows_resultaat)-1;
$queryString_resultaat = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_resultaat") == false &&
stristr($param, "totalRows_resultaat") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_resultaat = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_resultaat = sprintf("&totalRows_resultaat=%d%s", $totalRows_resultaat, $queryString_resultaat);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>boeken</title>
<link href="opmaak.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="groenwit">
<form id="form1" name="form1" method="post" action="index.php">
<label for="trefwoord"></label>
<input type="text" name="trefwoord" id="trefwoord" />
<input type="submit" name="zoek" id="zoek" value="zoek" />
</form>
<p> </p>
<?php do { ?>
<table width="750" border="0">
<tr>
<td width="138">auteur</td>
<td width="210">titel</td>
<td width="90">prijs</td>
<td width="180">isbn</td>
<td width="56">jaar uitgave</td>
<td width="50">aantal pagina's</td>
</tr>
<tr>
<td><a href="artikel_detail.php?artikelnr=<?php echo $row_resultaat['artikelnr']; ?>"><?php echo $row_resultaat['auteur']; ?></a></td>
<td><?php echo $row_resultaat['titel']; ?></td>
<td><?php echo $row_resultaat['prijs']; ?> </td>
<td><?php echo $row_resultaat['isbn']; ?></td>
<td><?php echo $row_resultaat['jaar uitgave']; ?></td>
<td><?php echo $row_resultaat['aantal paginas']; ?></td>
</tr>
</table>
<p></p>
<p>
<?php } while ($row_resultaat = mysql_fetch_assoc($resultaat)); ?>
</p>
<p> <a href="<?php printf("%s?pageNum_resultaat=%d%s", $currentPage, 0, $queryString_resultaat); ?>">Eerst</a> <a href="<?php printf("%s?pageNum_resultaat=%d%s", $currentPage, max(0, $pageNum_resultaat - 1), $queryString_resultaat); ?>">Vorige</a> <a href="<?php printf("%s?pageNum_resultaat=%d%s", $currentPage, min($totalPages_resultaat, $pageNum_resultaat + 1), $queryString_resultaat); ?>">Volgende</a> <a href="<?php printf("%s?pageNum_resultaat=%d%s", $currentPage, $totalPages_resultaat, $queryString_resultaat); ?>">Laatste</a></p>
<p> <?php echo $totalRows_resultaat ?> resultaten.</p>
<p><a href="gebruiker_toev.php">registreer</a> <a href="inloggen.php">inloggen</a> <a href="index.php">winkelen</a></p>
</div>
<div id="voettekst">Hier wordt de inhoud voor id "voettekst" weergegeven</div>
</body>
</html>
<?php
mysql_free_result($resultaat);
?>
<?php
session_start();
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$currentPage = $_SERVER["PHP_SELF"];
$maxRows_resultaat = 5;
$pageNum_resultaat = 0;
if (isset($_GET['pageNum_resultaat'])) {
$pageNum_resultaat = $_GET['pageNum_resultaat'];
}
$startRow_resultaat = $pageNum_resultaat * $maxRows_resultaat;
$colname_resultaat = "-1";
if (isset($_POST['trefwoord'])) {
$colname_resultaat = $_POST['trefwoord'];
}
mysql_select_db($database_booksh, $booksh);
$query_resultaat = sprintf("SELECT * FROM artikel WHERE auteur LIKE %s OR titel LIKE %s OR isbn LIKE %s ORDER BY beschrijving ASC", GetSQLValueString("%" . $colname_resultaat . "%", "text"),GetSQLValueString("%" . $colname_resultaat . "%", "text"),GetSQLValueString("%" . $colname_resultaat . "%", "text"));
$query_limit_resultaat = sprintf("%s LIMIT %d, %d", $query_resultaat, $startRow_resultaat, $maxRows_resultaat);
$resultaat = mysql_query($query_limit_resultaat, $booksh) or die(mysql_error());
$row_resultaat = mysql_fetch_assoc($resultaat);
if (isset($_GET['totalRows_resultaat'])) {
$totalRows_resultaat = $_GET['totalRows_resultaat'];
} else {
$all_resultaat = mysql_query($query_resultaat);
$totalRows_resultaat = mysql_num_rows($all_resultaat);
}
$totalPages_resultaat = ceil($totalRows_resultaat/$maxRows_resultaat)-1;
$queryString_resultaat = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_resultaat") == false &&
stristr($param, "totalRows_resultaat") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_resultaat = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_resultaat = sprintf("&totalRows_resultaat=%d%s", $totalRows_resultaat, $queryString_resultaat);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>boeken</title>
<link href="opmaak.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="groenwit">
<form id="form1" name="form1" method="post" action="index.php">
<label for="trefwoord"></label>
<input type="text" name="trefwoord" id="trefwoord" />
<input type="submit" name="zoek" id="zoek" value="zoek" />
</form>
<p> </p>
<?php do { ?>
<table width="750" border="0">
<tr>
<td width="138">auteur</td>
<td width="210">titel</td>
<td width="90">prijs</td>
<td width="180">isbn</td>
<td width="56">jaar uitgave</td>
<td width="50">aantal pagina's</td>
</tr>
<tr>
<td><a href="artikel_detail.php?artikelnr=<?php echo $row_resultaat['artikelnr']; ?>"><?php echo $row_resultaat['auteur']; ?></a></td>
<td><?php echo $row_resultaat['titel']; ?></td>
<td><?php echo $row_resultaat['prijs']; ?> </td>
<td><?php echo $row_resultaat['isbn']; ?></td>
<td><?php echo $row_resultaat['jaar uitgave']; ?></td>
<td><?php echo $row_resultaat['aantal paginas']; ?></td>
</tr>
</table>
<p></p>
<p>
<?php } while ($row_resultaat = mysql_fetch_assoc($resultaat)); ?>
</p>
<p> <a href="<?php printf("%s?pageNum_resultaat=%d%s", $currentPage, 0, $queryString_resultaat); ?>">Eerst</a> <a href="<?php printf("%s?pageNum_resultaat=%d%s", $currentPage, max(0, $pageNum_resultaat - 1), $queryString_resultaat); ?>">Vorige</a> <a href="<?php printf("%s?pageNum_resultaat=%d%s", $currentPage, min($totalPages_resultaat, $pageNum_resultaat + 1), $queryString_resultaat); ?>">Volgende</a> <a href="<?php printf("%s?pageNum_resultaat=%d%s", $currentPage, $totalPages_resultaat, $queryString_resultaat); ?>">Laatste</a></p>
<p> <?php echo $totalRows_resultaat ?> resultaten.</p>
<p><a href="gebruiker_toev.php">registreer</a> <a href="inloggen.php">inloggen</a> <a href="index.php">winkelen</a></p>
</div>
<div id="voettekst">Hier wordt de inhoud voor id "voettekst" weergegeven</div>
</body>
</html>
<?php
mysql_free_result($resultaat);
?>
Gebruik [code][/code] tags voor het overzichtelijk weergeven van code. Zie ook de FAQ.[/modedit]
Gewijzigd op 19/02/2012 10:51:42 door Joren de Wit
Voorbeeldje:
Als je de eerst zoekpagina laadt met bijvoorbeeld deze url:
www.mysite.nl/books.php?book=aaa&auteur=bbb&isbn=123&start=0&num=20
Dan zou de link naar de volgende pagina moeten zijn:
www.mysite.nl/books.php?book=aaa&auteur=bbb&isbn=123&start=20&num=20
Het enige wat verandert is de start waarde voor je query, verder helemaal niets.
Gewijzigd op 19/02/2012 10:20:54 door Erwin H
groetjes
Toevoeging op 20/02/2012 17:58:52:
ik had wat geprobeerd in de zin van
$_session['trefwoord'] = $_POST['trefwoord'];
deze code wou ik invoegen maar weet niet precies waar en ook of deze syntax juist is weet ik niet.
ik krijg in ieder geval foutmeldingen
$_POST['trefwoord'] = $_SESSION['logged'];
deze code gebruik ik op lijn 75. er is wat mis met de sessievariabele. zijn naamgeving tussen de vierkante haken is steeds verkeerd, welke naam ik ook geef. heeft hier iemand soms ervaring mee? bedankt op voorhand
Gewijzigd op 12/04/2012 07:11:13 door Bas van de Steeg
ik krijg steeds een undefined index bij de volgende code die ik op lijn 49 heb geplaatst, nl, $_POST['trefwoord'] = $_SESSION['trefwoord'];
spijtig voor mezelf maar ik ben hierover onvoldoende op de hoogte, zodus, als er nog meerdere reacties zijn, duw(dank u wel).
Toevoeging op 12/04/2012 16:45:29:
hier in deze weergave is het lijn 47
Courtney eeman op 12/04/2012 16:44:10:
$_POST['trefwoord'] = $_SESSION['trefwoord'];
Waarom zou je een $_SESSION-waarde in een $_POST willen stoppen? Niet logisch lijkt mij.
Gewijzigd op 12/04/2012 17:37:53 door courtney -
$_POST['trefwoord'] = $_SESSION['trefwoord'];
dus $_POST krijgt de waarde van $_SESSION. je zult die 2 dus moeten omdraaien
[compleet offtopic]
In de wiskunde wordt gezegd dat x gelijk is aan 6, een extraatje is dat daarom x ook de waarde van 6 krijgt maar zo wordt het niet gezegd.
[/compleet offtopic]
Quote:
in de wiskunde wordt altijd gezegd zoiets als x = 6. x krijgt de waarde 6.
In de wiskunde wordt gezegd dat x gelijk is aan 6, een extraatje is dat daarom x ook de waarde van 6 krijgt maar zo wordt het niet gezegd.
[/compleet offtopic]
het is toch duidelijk wat ik bedoel?
Toevoeging op 12/04/2012 18:53:21:
ik meen te begrijpen $_POST eerst te vermelden en dan $_SESSION? dus post toekennen aan session
Gewijzigd op 12/04/2012 18:18:47 door courtney -
Courtney eeman op 12/04/2012 16:44:10:
de session_start(); locatie doet er niet toe.
Hoezo niet?
Je kent aan een variabele een waarde toe:
$_SESSION['variabele_naam'] = $_POST['input_vanuit_form'].
Neem anders eens eens een (goede) basistut door!
ik plaats het na de knop. logisch?
de basis probeer ik wel door te nemen. alleen, daar staat meestal zo weinig in over sessies ed
Gewijzigd op 13/04/2012 16:43:37 door courtney -
Jeroen vd op 12/04/2012 18:06:22:
je draait het verkeerd om. in de wiskunde wordt altijd gezegd zoiets als x = 6. x krijgt de waarde 6.
$_POST['trefwoord'] = $_SESSION['trefwoord'];
dus $_POST krijgt de waarde van $_SESSION. je zult die 2 dus moeten omdraaien
$_POST['trefwoord'] = $_SESSION['trefwoord'];
dus $_POST krijgt de waarde van $_SESSION. je zult die 2 dus moeten omdraaien
Al geprobeerd??
er is toch meer aan de hand. ik zoek wel een goed boekje, want ik zie het ook wat te simpel waarschijnlijk.
wat ik ook nergens terugvind is een manier om een ingevoerde waarde in een veld te bewaren, zou dit eigenlijk de oplossing niet zijn????
Gewijzigd op 14/04/2012 22:29:18 door courtney -
Courtney eeman op 14/04/2012 21:52:03:
het gaat hier om een zoekveld waar men een trefwoord kan invoeren. $_POST['trefwoord'] heeft dan toch de waarde (uit het formulier) die moet worden onthouden door de $_SESSION? waardoor op hun beurt weer de zoekresultaten (tot volgende zoekopdracht) blijvend weergegeven worden? eerst post... = session... geeft geen foutmelding.
Hallo.... er staat al door drie verschillende mensen vermeld dat je het andersom moet doen. Wanneer gaat dat kwartje vallen....
ik was net iets te enthousiast over mijn stelling. sorry hoor
Enthousiast of eigenwijs ;-)