pagination des résultats d'une requête

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 : pagination des résultats d'une requête

pagination des résultats d'une requête

par acatmp » 16 mars 2007, 17:33

Bonjour,
j'utilise un code recopiè sur un site pour faire de la pagination.Le souci c'est que les liens me revoient toujours à la page courante.Et cette page n'affiche pas le nombre d'enregistrement souhaité(tout le résultat est affiché).Je me demande si c'est parceque dans ma requête je fais une jointure ?
Voilà le code copié en question.

Code : Tout sélectionner

// 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;<<&nbsp;</A>".$pagine; else $pagine ="<A href='".$url.$t.$query."=".($p-1)."'>&nbsp;<<&nbsp;</A>".$pagine; if($p>2) $pagine ="<A href='".$url."'>&nbsp;|<&nbsp;</A>".$pagine; } // Suivant, dernier if($pagine&&($p<$nbpage)) { $pagine.="<A href='".$url.$t.$query."=".($p+1)."'>&nbsp;>>&nbsp;</A>"; if($p<$nbpage-1) $pagine.="<A href='".$url.$t.$query."=".($nbpage)."'>&nbsp;>|&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 />"; ?>
Je vous remercie de votre aide.