par
airbem » 11 juil. 2005, 11:13
Bonjour
Je souhaite afficher le resultat d'une requete sur plusieurs page , voici donc mon programme.
<?
// Cas d'une requête renvoyant des résultat que l'on
// souhaite afficher en plusieurs pages
// Ici on affiche les résultats par 4
// on effectue la requête
$db = mysql_connect('****', '***', '******');
mysql_select_db('base1',$db);
if(isset($_GET['recherche']))
{
if($_GET['recherche']=='')
{
echo"<h2>Recherche</h2>";
echo"Veuillez saisir un critère de recherche";
}
elseif(strlen($_GET['recherche'])<3)
{
echo"<h2>Recherche</h2>";
echo"Veuillez saisir un critère de recherche de plus de 3 caractères";
}
$recherche=$_GET['recherche'];
$sqlquery= "SELECT * FROM cv WHERE titre LIKE '%$recherche%' OR ref LIKE '%$recherche%' OR nom LIKE '%$recherche%' OR prenom LIKE '%$recherche%' OR secteur LIKE '%$recherche%' OR ville LIKE '%$recherche%'";
//$result = mysql_query($sqlquery);
$nombre_total_de_resultat = mysql_num_rows(mysql_query($sqlquery));
if($nombre_total_de_resultat <=0)
{
echo"<br>Aucun résultat trouvé dans la base de donnée<br><br>";
}
}
// on récupère le nombre de résultat que la requête renvoie
// on découpe ce nombre en X pages de 4 résultats
$nombre_de_page=ceil($nombre_total_de_resultat/4);
// pour savoir sur quelle page on se trouve on recherche
// la valeur de la variable $page.
// si elle est "égale à rien" alors on l'initialise à 1
$page=($_GET[page]) ? "$_GET[page]" : "1";
// on calcul la valeur du début de la clause SQL LIMIT
// d'après la page où l'on se trouve...
$debut=($page*4)-4;
// on concatène le tout à la requête de départ et on va ensuite
// travailler sur le résultat de CETTE requête.
$sqlquery2 = mysql_query("SELECT * FROM cv WHERE titre LIKE '%$recherche%' OR ref LIKE '%$recherche%' OR nom LIKE '%$recherche%' OR prenom LIKE '%$recherche%' OR secteur LIKE '%$recherche%' OR ville LIKE '%$recherche%' LIMIT $debut,4");
$nombre=mysql_num_rows($sqlquery2);
// on veut afficher au maximum 9 pages sous la forme
// " <<-1-2-3-4-5-6-7-8-9->> "
// on va donc faire une boucle que l'on va décaler
// à chaque fois de une page, à partir de la cinquième page
// et jusqu'à l'avant avant ...n page.
if($_GET[page]>5 && $_GET[page]<=($nombre_de_page-4)) {$decale=$_GET[page]-5;}
elseif($_GET[page]<5) {$decale=0;}
elseif($_GET[page]>($nombre_de_page-5)) {$decale=$nombre_de_page-9;}
// ensuite on veut afficher des "boutons" précedent et suivant
$plus=($page==$nombre_de_page) ? "" : "<a href='rechercher.php?page=".($page+1)."> suivant </a>";
$moins=($page==1) ? "" : "<a href='rechercher.php?page=".($page-1)."> précedent </a>";
// en fonction du nombre de page on distingue deux fin de boucle
// possible...
$fin_de_boucle=($nombre_de_page<10) ? "$nombre_de_page" : "".(9+$decale)."";
// on fait une boucle avec tout le bazar du haut...
for($i=1+$decale;$i<=$fin_de_boucle;$i++){
$menu.=($i==$page) ? " $i " : " <a href='rechercher.php?page=$i>$i</a> ";
}
// et c'est tout !
// il faudra bien entendu faire une boucle pour afficher
// le résultat de votre requête du genre :
for ($i=1;$i<=$nombre;$i++) {
$tablo = mysql_fetch_object($sqlquery2) ;
print "<TR>";
print "<TD><BR></TD>";
print "</TR>";
print "<TR bgcolor=\"#E0ECF8\">";
print "<TD nowrap class=\"style2\" bgcolor=\"#E0ECF8\" ><b>Numero: </b>$tablo->ref</TD>";
print "<TD>";
-----------------------------
----------------------------
--------------
------------------------
--------------
}
mysql_close();
?>
</table> </td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
<table width='85%' border='0' align="center" cellpadding='0' cellspacing='0'>
<tr>
<td align="center"><? echo "$moins $menu $plus";?></td>
</tr>
</table>
Mais j'ai un petit souci
Le souci est au niveau des liens qui permettent d'accedé au page suivant ou precedantte.
Je m'explique lorsque je lance m'a recherche le resultat s'affiche dans une page en bas de la page j'ai :
1 suivant
Je clique sur suivant , donc j'arrive a la page suivant et en bas de cette j'ai :
suivant
Ce qui n'est pas nomal car je devrais avoir aussi le lien precedent.
Je clique sur ce lien" suivant " , je tombe sur la page suivante et en bas de cette page j'ai litteralement ceci ;
<a href='rechercher.php?page=2> suivant
Si quelqu'un peut m'aider , MERCI BIEN