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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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>&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 />"; 
 
?>
Je vous remercie d'avance.