Bonjour,
j'essai depuis un moment de faire une pagination des résultats d'une requête en vain.
On m'a dirigé vers un script qui pagine les images mais qui ne correspond pas à ce que je cherche.
j'aimerai par exemple afficher 10 infos par page et en paquet de 10 c'est à dire :
les premiers liens:1 2 3 4 5 6 ........10
quand clique sur 10 on a
les deuxièmes liens: 10 11 12 13 14 15 .......21
ainsi de suite.
je ne sais pas comment faire.
J'ai récupéré le script suivant qui je crois fait ce que je souhaite .Toutefois les liens sont affichés mais tous les résultats sont sur la première page même quand je clique sur la deuxième j'ai toujours tous les résultats qui ne sont pas divisé en paquet.Je me demande si LIMIT est bien pris en compte.S'il vous plais aidez moi merci.
Voilà le code:
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
72
73
74
75
76
77
78
79
 
 
<?
// 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;&
lt;/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;&n
bsp;</A>".$pagine;
    else $pagine ="<A href='".$url.$t.$query."=".($p-1)."'>&nbsp;&
amp;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;&
amp;gt;&gt;&nbsp;</A>";
    if($p<$nbpage-1) $pagine.="<A href='".$url.$t.$query."=".($nbpage)."'>&nbs
p;&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 />";