Bonjour à tous,
Voilà le code utilisé pour un moteur de recherche :
La partie qui me pose problème est celle du for dans l'affichage des pages suivantes. J'aimerais n'afficher que les 3 pages précédentes et 4 pages suivantes à celle actuelle (genre si on est à la page 8, je veux qu'on puisse aller à la page 4,5,6 et 9,10,11 mais pas plus).
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 if(isset($_GET["debut"])) { $debut=$_GET["debut"]; } else { $debut=0; } $limit=6; // Nombre de resultats affiches a chaque fois $req=mysql_query("SELECT ... FROM ... WHERE theme LIKE '%$theme%' LIMIT $debut,$limit") or die ("Erreur de connexion a la BDD : ".mysql_error()); $req_nb=mysql_query("SELECT ... FROM ... WHERE theme LIKE '%$theme%'") or die ("Erreur de connexion a la BDD : ".mysql_error()); $nrows=mysql_num_rows($req_nb); // Nb resultats echo "Il y a <b>".$nrows." résultats</b> avec ce critère.<br>"; $nombre=ceil($nrows/$limit); // Entier superieur = nb de pages de recherche if($debut>0) { echo "<a href='carte.php?theme=".$theme."&debut=".($debut-$limit)."'><< Resultats precedents</a> "; } $page_num=($debut/$limit)+1; // Page actuelle = $i qui suit $test=array(); if ($nombre>1) { for ($i=1; $i<=$nombre; $i++) { if ($i<$page_num+3) { echo "<a href='carte.php?theme=".$theme."&debut=".(($i-1)*$limit)."'>".$i."</a> "; array_push($test,$i); } } } if(($debut+$limit)<$nrows) { echo "<a href='carte.php?theme=".$theme."&debut=".($debut+$limit)."'>Resultats suivants >></a>"; }
Le ($i<$page_num+3) ajouté au FOR me permet de ne pas m'afficher toutes les pages suivantes (pour le moment si je suis à la page 3, je vois "1, 2, 3, 4, 5). Problème : j'aimerais que ça marche aussi dans l'autre sens (avec les pages précédentes) !
J'ai essayé de bricoler un for faisant l'inverse : rien à faire, ça ne marche pas.
Si quelqu'un a une idée...
Merci d'avance![]()
Partager