Pagina nummering werkt niet
hier voor een voorbeeld. Op de 1e pagina doet hij netjes 10 nieuws items selecteren. Het stukje script wat hierbij hoort is:
Maar als je verder gaat kijken werken de volgende pagina's niet goed. Hij pakt wel steeds goed de eerste limit maar de 2e werkt niet echt. Hier de code die bij het stuk hoort als er een GET p is.
Wie o wie helpt mij uit de brand?
Ik heb een pagina nummering script in mijn oude nieuws script gezet. Kijk 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
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
<?php
$npp = "10";
$begin = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT 0, ".$npp) OR DIE(mysql_error());
while($row = mysql_fetch_array($begin))
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?item=".$row['id']."\"><b><i>".$row['titel']."</i></b></a> - <i>".$row['datum']."</i><br /><br />";
}
echo "<br />";
//Eerst delen we het totaal aantal pagina's door het aantal nieuwsberichten per pagina.
$nieuwepagina = $aantal / $npp;
//Daarna ronden we het af naar boven. Functie: ceil. http://www.phphulp.nl/php/tutorials/1/106/186/
$nieuwepagina = ceil($nieuwepagina);
echo "Pagina: ";
//P 1 sette en dan steeds hoger optellen zodat de nummer chronologisch blijven!
$p = 1;
for($i=$nieuwepagina; $i > 0;$i--)
{
if($p == 1)
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$p."\"><b>$p</b></a>";
}
else
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$p."\">$p</a>";
}
$p++;
}
?>
$npp = "10";
$begin = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT 0, ".$npp) OR DIE(mysql_error());
while($row = mysql_fetch_array($begin))
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?item=".$row['id']."\"><b><i>".$row['titel']."</i></b></a> - <i>".$row['datum']."</i><br /><br />";
}
echo "<br />";
//Eerst delen we het totaal aantal pagina's door het aantal nieuwsberichten per pagina.
$nieuwepagina = $aantal / $npp;
//Daarna ronden we het af naar boven. Functie: ceil. http://www.phphulp.nl/php/tutorials/1/106/186/
$nieuwepagina = ceil($nieuwepagina);
echo "Pagina: ";
//P 1 sette en dan steeds hoger optellen zodat de nummer chronologisch blijven!
$p = 1;
for($i=$nieuwepagina; $i > 0;$i--)
{
if($p == 1)
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$p."\"><b>$p</b></a>";
}
else
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$p."\">$p</a>";
}
$p++;
}
?>
Maar als je verder gaat kijken werken de volgende pagina's niet goed. Hij pakt wel steeds goed de eerste limit maar de 2e werkt niet echt. Hier de code die bij het stuk hoort als er een GET p is.
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
$npp = "10";
if(isset($_GET['p']))
{
echo "<font size=\"2\"><a href=\"".$_SERVER['PHP_SELF']."\"><b>Nieuws</b></a></font><hr style=\"color: #000000;\" /><br />";
//Dan bestaat er een pagina nummer! :)
$p = $_GET['p'];
//Maximaal in de limit statement in de SQL.
$maximaal = $p * $npp;
//Minimaal in de limit statement in de SQL.
$minimaal = $maximaal - $npp;
$sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$maximaal." ") OR DIE(mysql_error());
while($row = mysql_fetch_array($sql))
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?item=".$row['id']."\"><b><i>".$row['titel']."</i></b></a> - <i>".$row['datum']."</i><br /><br />";
}
//Pagina nummering
$pagina = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC") OR DIE(mysql_error());
$aantal = mysql_num_rows($pagina);
echo "<br />";
//Eerst delen we het totaal aantal pagina's door het aantal nieuwsberichten per pagina.
$nieuwepagina = $aantal / $npp;
//Daarna ronden we het af naar boven. Functie: ceil. http://www.phphulp.nl/php/tutorials/1/106/186/
$nieuwepagina = ceil($nieuwepagina);
echo "Pagina: ";
//P 1 sette en dan steeds hoger optellen zodat de nummer chronologisch blijven!
$pn = 1;
for($i=$nieuwepagina; $i > 0;$i--)
{
if($p == $pn)
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$pn."\"><b>$pn</b></a>";
}
else
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$pn."\">$pn</a>";
}
$pn++;
}
}
?>
$npp = "10";
if(isset($_GET['p']))
{
echo "<font size=\"2\"><a href=\"".$_SERVER['PHP_SELF']."\"><b>Nieuws</b></a></font><hr style=\"color: #000000;\" /><br />";
//Dan bestaat er een pagina nummer! :)
$p = $_GET['p'];
//Maximaal in de limit statement in de SQL.
$maximaal = $p * $npp;
//Minimaal in de limit statement in de SQL.
$minimaal = $maximaal - $npp;
$sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$maximaal." ") OR DIE(mysql_error());
while($row = mysql_fetch_array($sql))
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?item=".$row['id']."\"><b><i>".$row['titel']."</i></b></a> - <i>".$row['datum']."</i><br /><br />";
}
//Pagina nummering
$pagina = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC") OR DIE(mysql_error());
$aantal = mysql_num_rows($pagina);
echo "<br />";
//Eerst delen we het totaal aantal pagina's door het aantal nieuwsberichten per pagina.
$nieuwepagina = $aantal / $npp;
//Daarna ronden we het af naar boven. Functie: ceil. http://www.phphulp.nl/php/tutorials/1/106/186/
$nieuwepagina = ceil($nieuwepagina);
echo "Pagina: ";
//P 1 sette en dan steeds hoger optellen zodat de nummer chronologisch blijven!
$pn = 1;
for($i=$nieuwepagina; $i > 0;$i--)
{
if($p == $pn)
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$pn."\"><b>$pn</b></a>";
}
else
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$pn."\">$pn</a>";
}
$pn++;
}
}
?>
Wie o wie helpt mij uit de brand?
Gewijzigd op 01/01/1970 01:00:00 door Remy Brokke
Iemand met een geweldige php kennis? :)
Nielsvr:
Je begrijpt de limit functie verkeerd van mySQL. Het is niet LIMIT start, einde. Maar LIMIT start, hoeveelheid. In jou geval dus bijvoorbeeld LIMIT 0, 32. Laat resultaat 1 tot 32 zien. LIMIT 64, 32 laat resultaat 64 tot 96 zien...
Groetjes Remy!
Gewijzigd op 01/01/1970 01:00:00 door Remy Brokke
Wil je dit ook posten?
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
$npp = "10";
if(isset($_GET['p']))
{
echo "<font size=\"2\"><a href=\"".$_SERVER['PHP_SELF']."\"><b>Nieuws</b></a></font><hr style=\"color: #000000;\" /><br />";
//Dan bestaat er een pagina nummer! :)
$p = $_GET['p'];
//Maximaal in de limit statement in de SQL.
$maximaal = $p * $npp;
//Minimaal in de limit statement in de SQL.
$minimaal = $maximaal - $npp;
$sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$npp." ") OR DIE(mysql_error());
while($row = mysql_fetch_array($sql))
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?item=".$row['id']."\"><b><i>".$row['titel']."</i></b></a> - <i>".$row['datum']."</i><br /><br />";
}
//Pagina nummering
$pagina = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC") OR DIE(mysql_error());
$aantal = mysql_num_rows($pagina);
echo "<br />";
//Eerst delen we het totaal aantal pagina's door het aantal nieuwsberichten per pagina.
$nieuwepagina = $aantal / $npp;
//Daarna ronden we het af naar boven. Functie: ceil. http://www.phphulp.nl/php/tutorials/1/106/186/
$nieuwepagina = ceil($nieuwepagina);
echo "Pagina: ";
//P 1 sette en dan steeds hoger optellen zodat de nummer chronologisch blijven!
$pn = 1;
for($i=$nieuwepagina; $i > 0;$i--)
{
if($p == $pn)
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$pn."\"><b>$pn</b></a>";
}
else
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$pn."\">$pn</a>";
}
$pn++;
}
}
?>
$npp = "10";
if(isset($_GET['p']))
{
echo "<font size=\"2\"><a href=\"".$_SERVER['PHP_SELF']."\"><b>Nieuws</b></a></font><hr style=\"color: #000000;\" /><br />";
//Dan bestaat er een pagina nummer! :)
$p = $_GET['p'];
//Maximaal in de limit statement in de SQL.
$maximaal = $p * $npp;
//Minimaal in de limit statement in de SQL.
$minimaal = $maximaal - $npp;
$sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$npp." ") OR DIE(mysql_error());
while($row = mysql_fetch_array($sql))
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?item=".$row['id']."\"><b><i>".$row['titel']."</i></b></a> - <i>".$row['datum']."</i><br /><br />";
}
//Pagina nummering
$pagina = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC") OR DIE(mysql_error());
$aantal = mysql_num_rows($pagina);
echo "<br />";
//Eerst delen we het totaal aantal pagina's door het aantal nieuwsberichten per pagina.
$nieuwepagina = $aantal / $npp;
//Daarna ronden we het af naar boven. Functie: ceil. http://www.phphulp.nl/php/tutorials/1/106/186/
$nieuwepagina = ceil($nieuwepagina);
echo "Pagina: ";
//P 1 sette en dan steeds hoger optellen zodat de nummer chronologisch blijven!
$pn = 1;
for($i=$nieuwepagina; $i > 0;$i--)
{
if($p == $pn)
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$pn."\"><b>$pn</b></a>";
}
else
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?p=".$pn."\">$pn</a>";
}
$pn++;
}
}
?>
En dan zit de verrandering alleen in dit:
Code (php)
1
2
3
2
3
<?php
$sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$maximaal." ") OR DIE(mysql_error());
?>
$sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$maximaal." ") OR DIE(mysql_error());
?>
is dit geworden:
Code (php)
1
2
3
2
3
<?php
$sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$npp." ") OR DIE(mysql_error());
?>
$sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$npp." ") OR DIE(mysql_error());
?>
DANK je wel voor de heldere uitleg !!!