Ik heb een pagina nummering script in mijn oude nieuws script gezet. Kijk hier voor een voorbeeld. Op de 1e pagina doet hij netjes 10 nieuws items selecteren. Het stukje script wat hierbij hoort is:


<?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++;
  		  }

?>


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.


<?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++;
  	  }	
  }
?>


Wie o wie helpt mij uit de brand?
Iemand met een geweldige php kennis? :)
Al gefixt! Ik had de LIMIT functie verkeerd begrepen. Van wmcity.nl:

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!
Hoe is het nu geworden?
Wil je dit ook posten?
Heb alleen het laatste aangepast. Dus dat is dit geworden:


<?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++;
        }    
  }
?> 


En dan zit de verrandering alleen in dit:


<?php
$sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$maximaal." ") OR DIE(mysql_error());
?>


is dit geworden:


<?php
    $sql = mysql_query("SELECT * FROM tpnieuws ORDER BY id DESC LIMIT ".$minimaal.", ".$npp." ") OR DIE(mysql_error());
?>
DANK je wel voor de heldere uitleg !!!

Reageren