Bonjour à tous,
Voilà le code utilisé pour un moteur de recherche :

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&eacute;sultats</b> avec ce crit&egrave;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>"; 
	}
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).
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