| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 
 |  
// 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> ".$i." </strong></font>"; 
         // Page 1 > lien sans query 
         elseif($i==1) $pagine.="<A href='".$url."'> ".$i." </A>"; 
         // Autre page -> lien avec query 
         else $pagine.="<A href='".$url.$t.$query."=".$i."'> ".$i." </A>"; 
      } 
      if($pagine) $pagine = " Page".$pagine; 
      // Premier, précédent 
      if($pagine&&($p>1)) { 
         if($p==2) $pagine ="<A href='".$url."'> << </A>".$pagine; 
         else $pagine ="<A href='".$url.$t.$query."=".($p-1)."'> << </A>".$pagine; 
         if($p>2) $pagine ="<A href='".$url."'> |< </A>".$pagine; 
      } 
      // Suivant, dernier 
      if($pagine&&($p<$nbpage)) { 
         $pagine.="<A href='".$url.$t.$query."=".($p+1)."'> >> </A>"; 
         if($p<$nbpage-1) $pagine.="<A href='".$url.$t.$query."=".($nbpage)."'> >| </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 />"; 
 
?> | 
Partager