Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1024 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Navigation par page 10*10, petit soucis

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Navigation par page 10*10, petit soucis

n°1339173
scull
MySCULL cay bon mangez en!
Posté le 04-04-2006 à 21:43:43  profilanswer
 

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
mood
Publicité
Posté le 04-04-2006 à 21:43:43  profilanswer
 

n°1339445
___
Posté le 05-04-2006 à 10:07:15  profilanswer
 

salut,
 
ca ne te vas pas de faire un test  

Code :
  1. && $i < $nbpages


ligne 34 ?
 
pourquoi pas ?

n°1339557
Woutcha
Posté le 05-04-2006 à 12:17:15  profilanswer
 

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
n°1339618
scull
MySCULL cay bon mangez en!
Posté le 05-04-2006 à 13:25:42  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Navigation par page 10*10, petit soucis

 

Sujets relatifs
[HTML/CSS/Javascript] "popup" dans une pagecréer un page html à partir de visual basic
Une page AVANT l'index d'un dossier ?Page de chargement
inserer une page HTML dans un fichier xslRecharger une page spécifique
[RESOLU] Petit script VBSProbleme de mise en page
Possible ou pas : Inserer une page PHP dans un Flash[HTML] insérer un document PDF dans une page web
Plus de sujets relatifs à : Navigation par page 10*10, petit soucis


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR