97 en ligne Comparateur | Sites | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  

 Recherche

 Newsletter





 

Pagination générique d'un listing

Code PHP par Didier



  <Accueil>  Déjà 671 codes ! 
AJAX [4]AS 2.0 [1]ASP [110]ASP.NET [29]CSharp [7]CSS [13]
D [1]Delphi [5]DHTML [3]Divers [5]HTML [16]JavaScript [151]
JSP [9]Maths [1]PHP [252]PHP5 [18]PowerShell [19]Regex [4]
SQL [2]V.Basic [4]VBScript [11]VS.NET [5]XML [1]



DidierPHP - Pagination générique d'un listing

Cette petite fonction permet de gérer entièrement la pagination d'un listing. Je pense que l'exemple en bas et les commentaires du code sont suffisamment parlants :)


Pour pouvoir le télécharger, connectez-vous ! ;)
<?
// Pagination générique d'un listing

function pagine(
   &$sql      // Elément commun de requête : "FROM..." auquel sera ajouté le "LIMIT..."
   ,$mpp      // Nombre max de lignes par page
   ,$query      // Elément de querystring indiquant le n° de page
   ,$url      // URL de la page
   ,$long=5   // Nombre max de pages avant et après la page courante
   ) {
   // Pour construire les liens, regarde si $url contient déjà un ?
   $t = (strpos($url,"?"))?"&":"?";
   // Nombre total d'enregistrements retournés
   $res = mysql_query("SELECT count(*) ".$sql);
   $nbres = mysql_result($res,0,0);
   // Calcul du nombre de pages
   $nbpage = ceil($nbres/$mpp);
   // La page courante est
   $p=@$_GET[$query]; if(!$p) $p=1;
   if($p>$nbpage) $p = $nbpage;
   // Longueur de la liste de pages
   $deb = max(1,$p-$long);
   $fin = min($nbpage,$p+$long);
   // Construction de la liste de pages
   $pagine = "";
   if($nbpage>1) {
      for($i=$deb;$i<=$fin;$i++) {
         // Page courante ?
         if($i==$p) $pagine.="<font color=red><strong>&nbsp;".$i."&nbsp;</strong></font>";
         // Page 1 > lien sans query
         elseif($i==1) $pagine.="<A href='".$url."'>&nbsp;".$i."&nbsp;</A>";
         // Autre page -> lien avec query
         else $pagine.="<A href='".$url.$t.$query."=".$i."'>&nbsp;".$i."&nbsp;</A>";
      }
      if($pagine) $pagine = "&nbsp;Page".$pagine;
      // Premier, précédent
      if($pagine&&($p>1)) {
         if($p==2) $pagine ="<A href='".$url."'>&nbsp;&lt;&lt;&nbsp;</A>".$pagine;
         else $pagine ="<A href='".$url.$t.$query."=".($p-1)."'>&nbsp;&lt;&lt;&nbsp;</A>".$pagine;
         if($p>2) $pagine ="<A href='".$url."'>&nbsp;|&lt;&nbsp;</A>".$pagine;
      }
      // Suivant, dernier
      if($pagine&&($p<$nbpage)) {
         $pagine.="<A href='".$url.$t.$query."=".($p+1)."'>&nbsp;&gt;&gt;&nbsp;</A>";
         if($p<$nbpage-1) $pagine.="<A href='".$url.$t.$query."=".($nbpage)."'>&nbsp;&gt;|&nbsp;</A>";
      }
      // Modification de la requête
      $sql .= " LIMIT ".(($p-1)*$mpp).",".$mpp;
   }
   return $pagine;
}

// Exemple d'appel

$SQL = "FROM matable WHERE champ1='critere' ORDER BY champ2 DESC";
$pagine = pagine($SQL,20,"p","index.php");
$res = mysql_query("SELECT * ".$SQL);

echo "<center><table>"; $i=0;

while($val=mysql_fetch_array($res)) { $i++;

   echo "<tr class=ligne".($i%2).">
      <td>".$val["champ1"]."</td>
      <td>".$val["champ2"]."</td>
   </tr>";
}

echo "</table><br />".$pagine."</center><br /><br />";

?>

Proposé par Didier le 27/09/2004 [vu 14675 fois]
Commentaires
opeo31
opeo31
16/03/07

Bonjour,
j'ai utilisé ce code dans ma page.Mais lorsque je souhaite afficher duex enregistrements par page, j'ai tous les enregistrements affichés.Toutefois les liens de pagination apparaissent mais dirige toujours vers la page courante.
Comment faire?

Pour participer, il faut d'abord vous identifier !
280 visiteurs ont déjà participé dont :
DB77 [46]fmarie [26]Fabrice69 [24]Didier [22]Bisou [20]
tedheu [20]CedX [18]mohman [17]romuluslepunk [15]foxmaster [13]
jreaux62 [13]Vonscott [11]iubito [10]Redo [9]Balin [8]
poppy [7]fmaunier [6]cyrillus [6]pseudomenace [6]CrazyCat [5]
antoun [5]Pozzy [5]TBliss [5]Aurelien [5]daoudi [5]
Ours [5]bahdot [5]david96 [5]Chrigou [4]debackp [4]
lex [4]hyoucef [4]Jips [4]zut69 [3]salem [3]
berguerand01 [3]phenixbd [3]twins20 [3]kandal [3]mhaido [3]
mcorgnet [3]philouonline [3]master-killer [3]crocxx [3]Maclearner [3]
laetyboop [3]Poucet [3]olivierland94 [3]

Didier Stockez et partagez gratuitement vos documents !!!

Au fil des news  
ASP.NET - Générateur de clefs de chiffrement
Hebergement - Dedibox - Serveurs dédiés à bas prix
Outils - ZoneCheck - Validateur de configuration DNS
Outils - Inno Setup
Outils - Doxygen - Générateur de documentation
Outils - TortoiseSVN
Composants - NUnit - Tests unitaires en .NET
Editeurs - MonoDevelop
.NET - Silverlight sur Linux
Divers - DSource.org - Open Source development for D
Divers - Vala Programming Language
Divers - D Programming Language
PowerShell - Afficher les informations de profil d'un user
PHP - Lister les combinaisons de p objets pris parmi n.
Utiliser un MOSS 2007 Search avec SPS 2003 - Comment utiliser un MOSS Search avec SPS Portail
Microsoft Office SharePoint Server 2007 (MOSS) fournit de nombreuses fonctionnalités qui ne sont ...
Modules - DHTMLgoodies.com
Dreamweaver CS3 + Php + Mysql - Objet formulaire - Les fondamentaux Part-2
La suite des fondamentaux, le bouton radio, la liste-menu (select) et la case cocher, sont ...
AJAX - Heure, Date et Fête du jour.
Magazines - Le n°114 de Programmez est disponible
JavaScript - Drag and Drop Javascript
Adobe - Mise à jour du plug-in Photoshop Camera Raw
Adobe - ADOBE lance un appel à candidature.....
PHP5 - Compteur de visites (hit) paramétrable (v1.1.0.a)
[MAJ] [PHP] Un calendrier très complet -
Remplacement de balises pour le PHP5 et modifications du script pour l'affichage des jours afin ...
Magazines - Le n°113 de Programmez est disponible
PHP - Compteur de visites (hit) paramétrable
Amélioration du Search MOSS : Recherche avancée - Modification de la page de recherche avancée
Dans la série des optimisations potentielles sur le moteur de recherche de MOSS, nous verrons cette ...
Dreamweaver CS3 + Php + Mysql - Ajout-Modif-Suppression. Les fondamentaux Part-1
Suite à de nombreuses questions sur le forum, je pense que ce sujet sur les comportements d'ajout, ...
SharePoint et Silverlight - Premiers pas - Lecture de données SharePoint et intégration
Silverlight et SharePoint sont deux technologies récentes et connaissant un essor significant. En ...
Développement d'applications SharePoint - depuis une Workstation XP ou Vista
Lorsque que l'on développe pour SharePoint, on se retrouve dans un dilemme auquel nous avons tous ...
JavaScript - sudoky - jeux du sudoku en javascript
Adobe - Creative Suite 4 en Français
PHP - La 8ème édition du Forum PHP est lancée !
Magazines - Le n°112 de Programmez est disponible
PHP - Interpreteur de commande SQL en PHP
Listes liées (dépendantes) : avec ou sans XMLHTTPR - Les délires «Ajax or not Ajax»
Comme toujours, c'est à la suite d'un coup de pouce que je me suis décidé à faire ce tuto. Merci à ...
Amélioration du Search MOSS : Les scopes - Quelques possibilités d'amélioration du Search
Lorsqu'on installe le moteur de recherche de MOSS et qu'on le configure basiquement, on veut ...
SharePoint - Lister les templates utilisés - Identifier les définitions utilisées par vos sites
Un site SharePoint est créé à partir d'un modèle ou définition de site. Mais comment savoir après ...
PowerShell - Profile avec la participation de mon ami Tigrou :)
Adobe - Lancement de la CS4, tous à vos agendas !
  Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats | Recherches
v4.3 © Didier YVER
2001-2009
 
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
CodePPC Wygwam Groupes Utilisateurs Microsoft TechNet El Roubio The Inquirer FR ASP-magazine DotNet Project Codes Sources MVP