pagination de mes résultats
bonsoir a tous
voici mon code :
Code:
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
|
<?.................................................................
$messagesParPage=4; //Nous allons afficher 5 messages par page.
$retour_total= mysql_query ("SELECT COUNT(*) AS total from membre WHERE metier like '%$metier%' AND departement like '%$departement%' AND codepostal like '%$codepostal%' AND lieu like '%$lieu%'") or die (mysql_error()); //Nous récupérons le contenu de la requete dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupere le total pour le placer dans la variable $total.
//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
{
$pageActuelle=$nombreDePages;
}
}
else // Sinon
{
$pageActuelle=1; // La page actuelle est la n°1
}
$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la premiere entrée a lire
// La requete sql pour récupérer les messages de la page actuelle.
$retour_messages=mysql_query("select * from membre where metier like '%$metier%' AND departement like '%$departement%' AND codepostal like '%$codepostal%' AND lieu like '%$lieu%' ORDER BY id DESC LIMIT ".$premiereEntree.', '.$messagesParPage.'');
$metier=$_POST['metier'];
$departement=$_POST['departement'];
$codepostal=$_POST['codepostal'];
$lieu=$_POST['lieu'];
while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une a une grâce a une boucle
{
//Je vais afficher les messages dans des petits tableaux. C'est a vous d'adapter pour votre design...
//De plus j'ajoute aussi un nl2br pour prendre en compte les sauts a la ligne dans le message.
echo '<table width="606" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="148" height="37" bgcolor="#FFFF99"><strong> '.stripslashes($donnees_messages['login']).' </strong></td>
<td width="95"><strong> CP: '.stripslashes($donnees_messages['codepostal']).'</strong></td>
<td width="175"><strong> Ville : '.nl2br(stripslashes($donnees_messages['ville'])).'</strong></td>
<td width="178" rowspan="2"><div align="center"><a href="traitementchoixresultat.php?id='.stripslashes($donnees_messages['id']).'" TARGET="_blank"><img src="images/Icone_loupe.png" width="40" height="40" alt="" border="0" ></a></div></td>
</tr>
<tr>
<td height="32" colspan="2"><strong> Type de résidence : '.stripslashes($donnees_messages['lieu']).'</strong></td>
<td height="32"> <strong> Exp : '.stripslashes($donnees_messages['experience']).'</strong></td>
</tr>
<tr>
<td height="36" colspan="3"><strong> <u></u> </strong></td>
<td bgcolor="#FFFFCC"><div align="center"><strong> <strong>'.stripslashes($donnees_messages['disponibilite']).'</strong></td>
</tr>
</table><br /><br />';
//J'ai rajouté des sauts a la ligne pour espacer les messages.
}
echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="rechercheresultat.php?page='.$i.'">'.$i.'</a> ';
}
}
}
echo '</p>';
?> |
et voici mon problème :
dans ma base de donnée j'ai 10 résultats qui conviendront a ma recherche
lorsque je fais une recherche sur mon site j'obtiens les 4 premiers résultat sur la première page de la pagination, ensuite lorsque que je clic sur le lien de la 2 éme page, j'ai aussi 4 bons résultats mais lors du clic sur la 3 éme page qui est censé me donner les 2 derniers résultats , je n'obtiens rien et effacement des 3 liens
de plus lorsque je suis sur la page 2 et que je veux revenir sur la page 1 je n'obtiens plus que 2 résultats sur la page 1..
voila j'espére avoir été clair et j'ai essayé de détailler le plus possible..
je suis bloquer depuis 3 jours sur ce code et j'en perd mon latin ^^
bon courage :cry: