Navigation par page 10*10, petit soucis

Navigation par page 10*10, petit soucis - PHP - Programmation

Marsh Posté le 04-04-2006 à 21:43:43    

Bonjour, j'essaye de faire un système de navigation par page fonctionnant 10 pages par 10.
 
Le but étant de reproduire un système similaire de navigation par page que les catégories de ce forum.
La fonction marche presque trés bien, j'ai juste un soucis quand je rentre dans la dernière page possible (ici la 37), bizarrement il prolonge la liste jusqu'à 40 au lieu de stopé à 37...  
Des idées ?
 
 

Code :
  1. $total_sujet = "553";    // nbre de sujet
  2. if($total_sujet>"15" ){
  3. $nbpages = ceil($total_sujet/15); // Je veux un affichage par paquet de 15 donc
  4. if($page=="" || $page=="1" || $page=="0" ) {  // C'est pas trés beau
  5. $i3 = 10;
  6. $i = "1";   // Ma while vas de 1 à 10
  7. }elseif($page>10) {   // si j'ai commencé à selectionner une page, supérieur à 10 donc
  8. $pagem = $page/10;
  9. $i31 = ceil($pagem);    // j'obtient la dizaine en cours
  10. $i3 = $i31*10;
  11. $i = $i3-10;
  12. }else {
  13. $i3 = 10;    // sinon ma while vas de 1 à 10
  14. $i = 1;
  15. }
  16. // début de ma while
  17. while ($i <= $i3) {
  18. if($page==$i) {
  19.   // si c la page courante, pas de lien
  20. $l1 = ' <strong>['.$i.']</strong>';
  21. }elseif($i==$nbpages) {
  22. // si le numéro de page = nbre max je stop la while en lui donnant sa valeur max, limite
  23. $l1 = ' [<a href="page.php?page='.$i.'">'.$i.'</a>]';
  24. $i = $i3+1;
  25. }elseif($i==$i3 && $i3 < $nbpages) {
  26. // si je finis ma while mais que il y a d'autre pages, je fais un suite +1
  27. $is = $i+1;
  28. $l1 = ' [<a href="page.php?page='.$i.'">'.$i.'</a>]
  29. <a href="page.php?page='.$is.'">Suite</a>';
  30. }else {
  31.     // sinon un lien classique
  32. $l1 = ' [<a href="page.php?page='.$i.'">'.$i.'</a>]';
  33. }
  34. // j'ajoute enfin mon +1
  35. $i++;
  36.   // et je fous tout sa dans une var
  37.   $lt = ''.$lt.' '.$l1.'';
  38. }
  39. }
  40. echo' '.$lt.''; // héhé


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
Reply

Marsh Posté le 04-04-2006 à 21:43:43   

Reply

Marsh Posté le 05-04-2006 à 10:07:15    

salut,
 
ca ne te vas pas de faire un test  

Code :
  1. && $i < $nbpages


ligne 34 ?
 
pourquoi pas ?

Reply

Marsh Posté le 05-04-2006 à 12:17:15    

Salut,  
 
comme j'ai un peut de temps a perdre au boulot, j'ai repris un peut ton code et ca donne ca:
 

Code :
  1. <?php
  2. $total_sujet = 553;    // nombre de sujets
  3. $sujets_page = 15; // nombre de sujets / page
  4. $liens_page = 10; // nombre de liens en bas de page
  5. $page=$_GET['page'];
  6. if($total_sujet>$sujets_page){
  7. $nb_pages = ceil($total_sujet/$sujets_page); // nombre total de pages
  8. $nb_grp_page = ceil($nb_pages/$liens_page); // nombre total de "groupes" de page
  9. $groupe_actu = ceil($page/$liens_page); // groupe dans lequel se trouve la page courante
  10. $page = (empty($page) || $page == 0 || $page > $nb_pages)?1:$page;
  11. $init = ($groupe_actu-1)*$liens_page+1;
  12. $limit = ($groupe_actu == $nb_grp_page)?$nb_pages:$groupe_actu*$liens_page;
  13. $ligne = '';
  14. if($groupe_actu > 1) {
  15.  $ligne .= ' <a href="page.php?page='.($init-1).'">Precedant</a>';
  16. }
  17. for($i = $init; $i <= $limit; $i++) {
  18.  if($i == $page) {
  19.   $ligne .= ' <strong>['.$i.']</strong>';
  20.  } else {
  21.   $ligne .= ' [<a href="page.php?page='.$i.'">'.$i.'</a>]';
  22.  }
  23. }
  24. if($limit < $nb_pages) {
  25.  $ligne .= ' <a href="page.php?page='.($limit+1).'">Suite</a>';
  26. }
  27. print $ligne;
  28. }
  29. ?>


 
Voili, ca te permet de redefinir plus facilement combient tu veux de messages/page ou de liens en bas de page...
J'ai aussi rajoute un lien "precedant" qui s'affiche si l'on est pas dans le premier groupe de page.


Message édité par Woutcha le 05-04-2006 à 12:34:08
Reply

Marsh Posté le 05-04-2006 à 13:25:42    

Merci Woutcha pour ton aide. J'ai essayer de bien voir comment tu avais fait ton affaire, c'est super bien fait !
Je voix bien que ma fonction faisait un peu usine à gaz... Et puis ta syntaxe est beaucoups plus claire et complette ! Je pense notamment à  $ligne .= au lieu de  $lt = ''.$lt.' '.$l1.'';
Et puis l'incrémentation du $i directement dans les conditions de la while, bref du trés beau code. Merci encore pour ton tuyaux, je vais essayer de la refaire aprés avoir bien analyser ta fonction  ;)
 
Thx :jap:


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed