affichage page par page avec affichage page courante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : affichage page par page avec affichage page courante

par choubix » 16 janv. 2008, 09:09

regarde sur phpdebutant (.com ou .org) il y a un tuto tres bien dessus (et le script est utilisable immediatement est facilement comprehensible)

bonne continuation

par AB » 16 janv. 2008, 08:23

Wahou ! j'ai déjà vu plus simple comme système de navigation.
La question serait plutôt de quoi as-tu besoin pour faire afficher "page 1 sur 2" et regardons ensuite si nous pouvont trouver ces éléments dans cette fonction.

2 c'est le nombre total de page. Avec le nombre total d'enregistrements et le nombre d'éléments affichés par page ça devrait pouvoir se faire. D'ailleurs ça tombe bien c'est déjà fait :
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page); 


Pour le reste il suffit de savoir quelle page on affiche. Si l'on connait la limite inférieure de la requête ainsi qu'également le nombre d'éléments affichés par page ça devrait pouvoir se faire. D'ailleurs ça tombe bien c'est déjà fait
 $page_active = floor(($debut/$nb_affichage_par_page)+1);
En plus ces lignes sont documentées dans ton code. T'arrives pas à lire les commentaires ?

affichage page par page avec affichage page courante

par chris51200 » 16 janv. 2008, 07:20

Bonjour a tous,
comment a partir de ce script je peux avoir en plus de la barre de navigation un truc du genre "page 1/2"
<?php

function barre_navigation ($nb_total, 
      $nb_affichage_par_page, 
      $debut, 
      $nb_liens_dans_la_barre) { 
 
   $barre = ''; 
   
   // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT 
   if ($_SERVER['QUERY_STRING'] == "") { 
      $query = $_SERVER['PHP_SELF'].'?debut='; 
   } 
   else { 
      $tableau = explode ("debut=", $_SERVER['QUERY_STRING']); 
      $nb_element = count ($tableau); 
      if ($nb_element == 1) { 
         $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut='; 
      } 
      else { 
         if ($tableau[0] == "") { 
            $query = $_SERVER['PHP_SELF'].'?debut='; 
         } 
         else { 
            $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut='; 
         } 
      } 
   } 
   
   // on calcul le numéro de la page active 
   $page_active = floor(($debut/$nb_affichage_par_page)+1);  
   // on calcul le nombre de pages total que va prendre notre affichage 
   $nb_pages_total = ceil($nb_total/$nb_affichage_par_page); 
   
   // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin) 
   // exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11 
   if ($nb_liens_dans_la_barre%2==0) { 
      $cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1; 
      $cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
	   
   } 
   else { 
      $cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2)); 
      $cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2)); 
   } 
   
   if ($cpt_deb1 <= 1) { 
      $cpt_deb = 1; 
      $cpt_fin = $nb_liens_dans_la_barre; 
   } 
   elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) { 
      $cpt_deb = $cpt_deb1; 
      $cpt_fin = $cpt_fin1; 
   } 
   else { 
      $cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1; 
      $cpt_fin = $nb_pages_total; 
   } 
 
   if ($nb_pages_total <= $nb_liens_dans_la_barre) { 
      $cpt_deb=1; 
      $cpt_fin=$nb_pages_total; 
   } 
   
   // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page 
   if ($cpt_deb != 1) { 
      $cible = $query.(0); 
      $lien = '<A HREF="'.$cible.'"><<</A>&nbsp;&nbsp;'; 
   } 
   else { 
      $lien=''; 
   } 
   $barre .= $lien; 
 
   // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active 
   for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) { 
      if ($cpt == $page_active) { 
         if ($cpt == $nb_pages_total) { 
            $barre .= $cpt; 
         } 
         else { 
            $barre .= $cpt.'&nbsp;-&nbsp;'; 
         } 
      } 
      else { 
         if ($cpt == $cpt_fin) { 
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); 
            $barre .= "'>".$cpt."</A>"; 
         } 
         else { 
            
            $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); 
            $barre .= "'>".$cpt."</A>&nbsp;-&nbsp;"; 
         } 
      } 
   } 
   
   $fin = ($nb_total - ($nb_total % $nb_affichage_par_page)); 
   if (($nb_total % $nb_affichage_par_page) == 0) { 
      $fin = $fin - $nb_affichage_par_page; 
   } 
 
      // si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation 
   if ($cpt_fin != $nb_pages_total) { 
      $cible = $query.$fin; 
      $lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">>></A>'; 
   } 
   else { 
      $lien=''; 
   } 
   $barre .= $lien; 
 
   return $barre;   
}