login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Navigatie systemen > PageNav Class

PageNav Class

Auteur: Rens - 09 juli 2005 - 14:08 - Gekeurd door: Tuinstoel - Hits: 7134 - Aantal punten: 4.58 (6 stemmen)



Ik heb even een pagina navigatie class gemaakt.

Ik heb even een paar simpele queries genomen, voor het voorbeeld.
Ze moeten natuurlijk wel aangepast worden voor eigen gebruik.

Als je nog vragen hebt, stuur maar een pm of plaats een reactie op dit script.

In het script zelf staan ook nog comments, dus het is denk ik wel duidelijk.

Code:
class.PageNav.inc.php:
  1. <?PHP
  2. // class beginnen
  3. class PageNav
  4. {
  5. // de functie die onze navigatie gaat maken
  6. // $iPagina = pagina waarop de gebruiker zit
  7. // $iTotaalPagina = totaal aantal paginas
  8. // $sPagina = link naar de pagina
  9. function nav($iPagina, $iTotaalPagina, $sPagina)
  10. {
  11. // nieuwe var maken, hierin komt de nav te staan
  12. $this->sNav = "";
  13.  
  14. // kijken of er al een ? in de url staat
  15. // als dit zo is, gebruiken we de & om nav in de url te zetten
  16. if(ereg("[?]", $sPagina))
  17. {
  18. // er staat een ? in de url, dus gaan we & gebruiken
  19. $this->sAdd = "&amp;";
  20. } else
  21. {
  22. // er staat nog geen ? in de url, dus gaan we ? gebruiken
  23. $this->sAdd = "?";
  24. }
  25.  
  26. // kijken of de gebruiker op de eerste pagina zit
  27. if(($iPagina-1) > -1)
  28. {
  29. // nee, de gebruiker zit op een pagina hoger dan 0
  30. $this->sNav .= "<A HREF='".$sPagina.$this->sAdd."nav=".($iPagina-1)."'>Vorige</A> - ";
  31. }
  32.  
  33. // de nummering
  34. // 1 - 2 - 3
  35. for($i = 0; $i < $iTotaalPagina; $i++)
  36. {
  37. // is de huidige pagina gelijk aan &i ?
  38. if($i == $iPagina)
  39. {
  40. // ja, de gebruiker zit op pagina $i
  41. // dus maken we hier de $i bold
  42. // de gebruiker zit immers al op deze pagina
  43. $this->sNav .= "<b>".($i+1)."</b> - ";
  44. } else
  45. {
  46. // nee, de gebruiker zit op een andere pagina
  47. // dus we maken er een gewone link van
  48. $this->sNav .= "<A HREF='".$sPagina.$this->sAdd."nav=".$i."'>".($i+1)."</A> - ";
  49. }
  50. }
  51.  
  52. // zit de gebruiker op de laatste pagina
  53. if(($iPagina+1) <= $iTotaalPagina)
  54. {
  55. // nee, de gebruiker zit nog niet op de laatste pagina
  56. $this->sNav .= "<A HREF='".$sPagina.$this->sAdd."nav=".($iPagina+1)."'>Volgende</A> - ";
  57. }
  58.  
  59. // het laatste streepje van $this->sNav afhalen
  60. $this->sNav = subStr($this->sNav, 0, strLen($this->sNav)-3);
  61.  
  62. // de nav teruggeven
  63. return $this->sNav;
  64. }
  65. }
  66. ?>


Voorbeeld:
  1. <?PHP
  2. // de class includen
  3. include("class.PageNav.inc.php");
  4. // de class starten
  5. $cPageNav = new PageNav;
  6.  
  7. // max aantal berichten per pagina
  8. $iMax = 5;
  9.  
  10. // checken of er een nav= in de url staat
  11. if(IsSet($_GET['nav']) && Is_Numeric($_GET['nav']))
  12. {
  13. // ja, die staat er
  14. // hier ophalen, *$iMax doen en in $iPagina zetten
  15. $iPagina = $_GET['nav']*$iMax;
  16. } else
  17. {
  18. // nee, die staat er niet
  19. // dus niet ophalen, en *$iMax hoeft ook niet
  20. // 0*$iMax is natuurlijk nog steeds 0
  21. $iPagina = 0;
  22. }
  23.  
  24. // query voor het tellen van aantal berichten
  25. $sQueryAantal = "SELECT COUNT(id) AS aantal FROM reacties WHERE topicID=".$_GET['id'];
  26. // query uitvoeren
  27. if(!$rResultAantal = MySQL_Query($sQueryAantal))
  28. {
  29. // er is een fout in de query
  30. echo "Error!- Kan de query niet uitvoeren!";
  31. } else
  32. {
  33. // aantal berichten in $iAantal zetten
  34. $iAantal = ceil(MySQL_Result($rResultAantal, 0, "aantal")/$iMax);
  35. // normale query, deze is voor de gegevens van pagina $iPagina
  36. $sQuery = "SELECT titel FROM reacties ORDER BY id DESC LIMIT ".$iPagina.", ".$iMax." WHERE topicID=".$_GET['id'];
  37. if(!$rResult = MySQL_Query($sQuery))
  38. {
  39. // de query kan niet worden uitgevoerd
  40. echo "Error!- Kan de query niet uitvoeren!";
  41. } else
  42. {
  43. // loopje die titels e.d. weergeeft
  44. while($aFetch = MySQL_Fetch_Assoc($rResult))
  45. {
  46. echo $aFetch['titel']."<br />";
  47. }
  48. // de navigatie echoën
  49. echo $cPageNav->nav($iPagina, $iAantal, "forum/viewtopic.php?id=5");
  50. }
  51. }
  52. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (10)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.037s