Problemen bij zoeken en vorige/volgende script
(hier de hele code)
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Product show</title>
<link rel="stylesheet" type="text/css" href="scripts/style.css">
</head>
<body>
<p></p>
<div align="left">
<img src="images/header_hout.gif">
</div>
<p>Hier onder treft U het hout assortiment van Piet Parket aan. Om meer informatie over een product te krijgen zoals afmeting, verpakkings eenheid, interieur foto's of om een offerte op te stellen klik dan op <em>Details bekijken</em>. Wanneer U direct een bestelling wil plaatsen klik dan op <em>Bestel direct</em>. </p>
<div class="products">
<table border=0 align=left>
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
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
<?php
error_reporting(E_ALL);
include('connect.php');
// Variables
//if(is_numeric($_GET['max'])) $max = $_GET['max'];
//sif(is_numeric($_GET['start'])) $start = $_GET['start'];
if (empty($max)) $max = 5; // $max is the maximum number of results per page
if (empty($start)) $start = 0; // This is the number to start the query at the right location [DO NOT EDIT]
// Calculate some stuff
$end = $start + $max; // This is for the query, gives the number for the LIMIT
$prev = $start - $max; // This number is for $start in the Previous-hyperlink
$next = $end; // This number is for $start in the Next-hyperlink
// Select everything from the table
$result = mysql_query("SELECT * FROM producten WHERE soort LIKE '%hout%' ORDER BY id ASC LIMIT $start, $max") or die ('FOUT query maken mislukt 1');
// Number of rows from $query
$num = mysql_num_rows($result);
if (empty($num))
{
echo "<p>There are no results.</p>";
}
else
{
while (list($id, $soort, $merk, $serie, $kleurcode, $kleur, $lengte, $breedte, $hoogte, $verpakking, $prijs, $afbeelding) = mysql_fetch_row($result))
{
// Show the results
echo ("
<tr>
<td>$kleur</td>
<td rowspan=7 height=166><img src=\"images/parket/$afbeelding.jpg\"></td>
<td></td>
</tr>
<tr>
<td>$merk $serie</td></tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><a href=\"details.php?id=$id\">Details bekijken</a></td>
</tr>
<tr>
<td> </td>
<td><a href=\"images/sfeer/$afbeelding.jpg\" target=_blank>Sfeer impressie</a></td>
</tr>
<tr>
<td>$kleurcode</td>
<td><a href=\"offerte.php?id=$id\">Offerte opstellen</a></td>
</tr>
<tr>
<td valign=top>12 euro per m2</td>
<td valign=top><a href=\"bestel.php?id=$id\">Bestel direct</a></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
");
}
// Check if $prev is higher than or equal to 0, if so add the Previous-hyperlink
if ($prev >= '0')
{
echo "[<a href=\"product_show_hout.php?start=$prev&max=$max\">Vorige</a>]\n";
} else {
echo "[Vorige]\n";
}
// Count how many rows there are in the table
$count = mysql_fetch_row(mysql_query("SELECT count(*) FROM producten WHERE soort LIKE '%hout%'"));
// Calculate on which page we are
$thispage = ceil($start/$max+1);
// If $count[0] is higher than $max, show the pagenumbers
if ($count[0] > $max)
{
// Calculate the amount of pages
$total = ceil($count[0]/$max);
for($i=0;$i<$total;$i++)
{
// The number to show has to be $1+1 (because $i starts with 0)
$number = $i+1;
// $start has to be $i * $max
$start = $i*$max;
// If thispage is equal to the number, the link has to be bold
if ($thispage == $number)
{
echo "<strong>[<a href=\"product_show_hout.php?start=" . $start . "&max=" . $max . "\">" . $number . "</a>]</strong>\n";
} else {
echo "<a href=\"product_show_hout.php?start=" . $start . "&max=" . $max . "\">" . $number . "</a>\n";
}
}
}
// If $count[0] is higher than $next, show the hyperlink
if ($count[0] > $next)
{
echo "[<a href=\"product_show_hout.php?start=$next&max=$max\">Volgende</a>]\n";
} else {
echo "[Volgende]\n";
}
echo "</p>\n";
}
?>
error_reporting(E_ALL);
include('connect.php');
// Variables
//if(is_numeric($_GET['max'])) $max = $_GET['max'];
//sif(is_numeric($_GET['start'])) $start = $_GET['start'];
if (empty($max)) $max = 5; // $max is the maximum number of results per page
if (empty($start)) $start = 0; // This is the number to start the query at the right location [DO NOT EDIT]
// Calculate some stuff
$end = $start + $max; // This is for the query, gives the number for the LIMIT
$prev = $start - $max; // This number is for $start in the Previous-hyperlink
$next = $end; // This number is for $start in the Next-hyperlink
// Select everything from the table
$result = mysql_query("SELECT * FROM producten WHERE soort LIKE '%hout%' ORDER BY id ASC LIMIT $start, $max") or die ('FOUT query maken mislukt 1');
// Number of rows from $query
$num = mysql_num_rows($result);
if (empty($num))
{
echo "<p>There are no results.</p>";
}
else
{
while (list($id, $soort, $merk, $serie, $kleurcode, $kleur, $lengte, $breedte, $hoogte, $verpakking, $prijs, $afbeelding) = mysql_fetch_row($result))
{
// Show the results
echo ("
<tr>
<td>$kleur</td>
<td rowspan=7 height=166><img src=\"images/parket/$afbeelding.jpg\"></td>
<td></td>
</tr>
<tr>
<td>$merk $serie</td></tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><a href=\"details.php?id=$id\">Details bekijken</a></td>
</tr>
<tr>
<td> </td>
<td><a href=\"images/sfeer/$afbeelding.jpg\" target=_blank>Sfeer impressie</a></td>
</tr>
<tr>
<td>$kleurcode</td>
<td><a href=\"offerte.php?id=$id\">Offerte opstellen</a></td>
</tr>
<tr>
<td valign=top>12 euro per m2</td>
<td valign=top><a href=\"bestel.php?id=$id\">Bestel direct</a></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
");
}
// Check if $prev is higher than or equal to 0, if so add the Previous-hyperlink
if ($prev >= '0')
{
echo "[<a href=\"product_show_hout.php?start=$prev&max=$max\">Vorige</a>]\n";
} else {
echo "[Vorige]\n";
}
// Count how many rows there are in the table
$count = mysql_fetch_row(mysql_query("SELECT count(*) FROM producten WHERE soort LIKE '%hout%'"));
// Calculate on which page we are
$thispage = ceil($start/$max+1);
// If $count[0] is higher than $max, show the pagenumbers
if ($count[0] > $max)
{
// Calculate the amount of pages
$total = ceil($count[0]/$max);
for($i=0;$i<$total;$i++)
{
// The number to show has to be $1+1 (because $i starts with 0)
$number = $i+1;
// $start has to be $i * $max
$start = $i*$max;
// If thispage is equal to the number, the link has to be bold
if ($thispage == $number)
{
echo "<strong>[<a href=\"product_show_hout.php?start=" . $start . "&max=" . $max . "\">" . $number . "</a>]</strong>\n";
} else {
echo "<a href=\"product_show_hout.php?start=" . $start . "&max=" . $max . "\">" . $number . "</a>\n";
}
}
}
// If $count[0] is higher than $next, show the hyperlink
if ($count[0] > $next)
{
echo "[<a href=\"product_show_hout.php?start=$next&max=$max\">Volgende</a>]\n";
} else {
echo "[Volgende]\n";
}
echo "</p>\n";
}
?>
</table>
</div>
</body>
</html>
OPGELOST
Gewijzigd op 21/12/2004 17:49:00 door Basz
Maar er wordt gezocht in de database :
SELECT * FROM producten WHERE soort LIKE '%hout%' ORDER BY id ASC LIMIT $start, $max
alleen het resultaat hiervan moet berekend worden in:
$num = mysql_num_rows($result)
Maar alle producten worden opgenomen, in plaats van alleen de gezochte producten
en door je limit zouden sowieso maar 5 producten worden geselecteerd dus bedoel je met alle producten die 5 of echt alle producten uit je tabel?
Het is de bedoeling dat uit de kolom "soort" van de database "producten" de producten die als soort "hout" hebben worden geselecteerd. Alleen deze moeten worden geteld door mysql_num_rows. En uiteindelijk per 5 op een pagina terecht komen.
//if(is_numeric($_GET['max'])) $max = $_GET['max'];
//sif(is_numeric($_GET['start'])) $start = $_GET['start'];
omdat je dat heb escaped selecteerd je nu altijd de eerste 5 producten uit je tabel maar goed..
als er 10 producten in die tabel staan dat zou er met mysql_nuw_rows echt 5 uitmoeten komen, maar
ik volg niet helemaal of er dan 10 producten komen of iets anders ;)
Hij moet starten bij het eerste product dat wordt gevonden in de query, dat deel wat escaped wordt wordt alleen gebruikt wanneer ik in een link zou aangeven waar er gestart moet worden (en niet van toepassing dus)
ik gebruik zelf ook weleens LIMIT in mn queries en ik heb als enige verschil LIMIT 0,5 ipv van bij jouw LIMIT 0, 5 maar dat zou niet uitmogen maken maar is het niet een beetje omslachtig om vars te gebruiken voor vaste waardes ?
en verder zou ik graag willen weten hoeveel hout producten je hebt en hoeveel hij er weergeeft.
volgens mij kijk ik echt langs het probleem.. ;P
maar ja ik php nog niet zo lang dus ik zoek nog wel ff verder :)
er staat nu maar 1 hout product in, die geeft hij ook weer, maar de rest ook...
heb je anders geen voorbeeld/URL waar ik op kan kijken? en/of een voorbeeld van je tabel (screeny ofsow) want ik loop nu gewoon een beetje te gokken wat het probleem kan zijn.
Gewijzigd op 21/12/2004 17:43:00 door DaeDaluz
Hey toch bedankt he!!
ps: wat was het nou nu ben ik nieuwsgierig ;)
onderaan in het script werden de kolommen geteld, maar daar stond niet bij dat hij alleen de kolommen mocht tellen met daarin hout!
[irc]
/me slaps DaeDaluz with a large trout
[/irc]