Pagina navigatie werkt niet
Alles komt ik nu problemen tegen..
Ik zal hieronder posten wat er fout gaat
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
$max = 2; // maximale aantal rijen per pagina
$result = mysql_query("SELECT * FROM fotos WHERE project_id = '".$_POST['project']."'") or die (mysql_error()); // de query (nog wel even de tabelnaam aanpassen)
$aantal = mysql_num_rows($result); // aantal rijen tellen
$paginas = ($aantal / $max); // 'aantal rijen' gedeelt door de 'maximaal aantal rijen per pagina'
$weergave = ceil($p * $max) - $max; // welke rijen je moet laten zien?>
$max = 2; // maximale aantal rijen per pagina
$result = mysql_query("SELECT * FROM fotos WHERE project_id = '".$_POST['project']."'") or die (mysql_error()); // de query (nog wel even de tabelnaam aanpassen)
$aantal = mysql_num_rows($result); // aantal rijen tellen
$paginas = ($aantal / $max); // 'aantal rijen' gedeelt door de 'maximaal aantal rijen per pagina'
$weergave = ceil($p * $max) - $max; // welke rijen je moet laten zien?>
De query
Code (php)
1
2
2
<? $sql = mysql_query("SELECT * FROM fotos WHERE project_id = ".$_POST['project']." ORDER BY id ASC LIMIT $weergave,$max") or die (mysql_error());
?>
?>
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2,2' at line 1
Kan de fout niet ontdekken
Gewijzigd op 13/01/2006 10:17:00 door Ronnie
minwaarde is niet toegestaan
Maar wat klopt er dan niet in mijn scriptje
t zal met
$weergave = ceil($p * $max) - $max; // welke rijen je moet laten zien
te maken hebben
Gewijzigd op 13/01/2006 10:36:00 door Ronnie
$p = 0 (Staat nergens gedefinieert)
0 x 2 = 0 ($p * $max)
0 - 2 = -2 (($p * $max) - 2)
Dus weergave is min 2...
en dit had nog boven bovenstaand stukje code gemoeten
if (!isset($_GET['p'])) // als er in de url nog geen p={iets} staat dan is p 1
{
$p=1;
}
else
{
$p=$_GET['p'];
}
Ja, op de een of andere manier komt $weergave onder 0 te zitten en dat mag inderdaad niet in je LIMIT
Waar komt $p vandaan? Als die niet gezet is en als je error checking niet op E_ALL staat maakt hij gewoon 0 van $p.
Je code wordt dan:
// $max is 2 in jouw voorbeeld
$weergave = ceil (0 * 2) - 2;
en dat levert inderdaad -2 op.
Niet zo snel Jan, dat legt hij net uit :D
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
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
<?
function navigatie($p, $max, $paginas, $url)
{
$nav = '';
if ($paginas < 2) // als er maar 1 pagina is
{
$nav = "";
}
else
{
if ($p < 2) // als je op de eerste pagina zit
{
$nav .= "<<";
}
else
{
$nav .= "<a href=\"".$url."&p=".($p-1)."\"><<</a>";
}
## for lus om alle pagina-nummers te laten zien ([1][2][3])
for ($j=0; $j < $paginas; $j++)
{
$i = $j+1;
if ($i == $p) // als je op deze pagina zit
{
$nav .= " <b>[".$i."]</b> ";
}
else
{
$nav .= " <a href=\"".$url."&p=".$i."\">[".$i."]</a> ";
}
}
if ($p == $paginas) // als je op de laatste pagina zit
{
$nav .= ">>";
}
else
{
$nav .= "<a href=\"".$url."&p=".($p+1)."\">>></a>";
}
}
return $nav;
}
if (!isset($_GET['p'])) // als er in de url nog geen p={iets} staat dan is p 1
{
$p=1;
}
else
{
$p=$_GET['p'];
}
$max = 2; // maximale aantal rijen per pagina
$result = mysql_query("SELECT * FROM fotos WHERE project_id = '".$_POST['project']."'") or die (mysql_error()); // de query (nog wel even de tabelnaam aanpassen)
$aantal = mysql_num_rows($result); // aantal rijen tellen
$paginas = ($aantal / $max); // 'aantal rijen' gedeelt door de 'maximaal aantal rijen per pagina'
$weergave = ceil($p * $max) - $max; // welke rijen je moet laten zien?>
function navigatie($p, $max, $paginas, $url)
{
$nav = '';
if ($paginas < 2) // als er maar 1 pagina is
{
$nav = "";
}
else
{
if ($p < 2) // als je op de eerste pagina zit
{
$nav .= "<<";
}
else
{
$nav .= "<a href=\"".$url."&p=".($p-1)."\"><<</a>";
}
## for lus om alle pagina-nummers te laten zien ([1][2][3])
for ($j=0; $j < $paginas; $j++)
{
$i = $j+1;
if ($i == $p) // als je op deze pagina zit
{
$nav .= " <b>[".$i."]</b> ";
}
else
{
$nav .= " <a href=\"".$url."&p=".$i."\">[".$i."]</a> ";
}
}
if ($p == $paginas) // als je op de laatste pagina zit
{
$nav .= ">>";
}
else
{
$nav .= "<a href=\"".$url."&p=".($p+1)."\">>></a>";
}
}
return $nav;
}
if (!isset($_GET['p'])) // als er in de url nog geen p={iets} staat dan is p 1
{
$p=1;
}
else
{
$p=$_GET['p'];
}
$max = 2; // maximale aantal rijen per pagina
$result = mysql_query("SELECT * FROM fotos WHERE project_id = '".$_POST['project']."'") or die (mysql_error()); // de query (nog wel even de tabelnaam aanpassen)
$aantal = mysql_num_rows($result); // aantal rijen tellen
$paginas = ($aantal / $max); // 'aantal rijen' gedeelt door de 'maximaal aantal rijen per pagina'
$weergave = ceil($p * $max) - $max; // welke rijen je moet laten zien?>
De query
Code (php)
1
2
2
<? $sql = mysql_query("SELECT * FROM fotos WHERE project_id = ".$_POST['project']." ORDER BY id ASC LIMIT $weergave,$max") or die (mysql_error());
?>
?>
dit is de hele code
Willem-Jan:
Niet zo snel Jan, dat legt hij net uit :D
Pardon, die had ik ff niet gezien!
Ik zou gaan testen met echo $weergave en dan met de hand je url veranderen met verschillende waardes. Er moet een punt zijn waarop het fout gaat.
hmm nu nog een keer geupload en navigatie gechoed en het werkt ineens
Gewijzigd op 13/01/2006 11:26:00 door Ronnie
*poof*