Bonjour à toutes et à tous
Je souhaite faire la pagination du résultat d'un moteur de recherche c'est à dire qu'a la suite d'un tri j’obtiens une liste de produits que je souhaite trier par prix.
Donc voici le code de la page :
<form id="searchForm" name="moteurSubmit" method="GET" action="../web/Capitale.php">
<label for="moteur"><b>Votre recherche :</b></label>
<br/>
<input type="text" value="<?php if(isset($_GET'moteur'])) { echo htmlspecialchars($_GET'moteur']); } ?>" name="R" id="R" />
<input type="checkbox" name="prix" id="prix" /> <label for="prix">Trier par prix</label>
<br/>
<input type="submit" value="Chercher" />
</form>
<?php
//----------------------------------------- 1 //// DE LA MISE EN PLACE DE LA REQUETE DE PAGINATION -------
//
$sql1 = "SELECT COUNT(ID) as nbArt FROM gtable WHERE valide = '1'"; // prends toutes les annonces de la base
/*si prix existe*/
if ((isset($_GET'prix'])) AND ($_GET'prix'] == "on")){
$sql1.= " ORDER BY prix ASC";
}
$req1 = mysql_query($sql1) or die(mysql_error());
$data1 = mysql_fetch_assoc($req1);
$nbArt = $data1'nbArt'];
$perPage = 1; // nombre d'éléments par page
$nbPage = ceil ($nbArt / $perPage);
$cPage = 1 ; // defini la première page a afficher
if(isset($_GET'p']) && $_GET'p'] > 0 && $_GET'p'] <= $nbPage){
$cPage = $_GET'p'];
}else{
$cPage = 1;
}
//
//----------------------------------------- 2 //// REQUETE -----------
//
$sql = "SELECT gtable.titre, gtable.categorie FROM gtable WHERE valide ='1' ";
/*si prix existe*/
if ((isset($_GET'prix'])) AND ($_GET'prix'] == "on")){
$sql.= " ORDER BY prix ASC";
}
$sql.= " LIMIT ".(($cPage-1)*$perPage).",$perPage";
$req = mysql_query ($sql) or die (mysql_error());
while ($result = mysql_fetch_assoc ($req)){
//
//----------------------------------------- 3 //// AFFICHAGE DU RESULTAT --------------
//
for($i=1; $i <= $nbPage; $i++){
if($i == $cPage) {
echo " $i /";
}else{
echo "<a href=\"../web/Capitale-Nationale.php?p=$i\"> $i </a> /";
}
}
?>
</body>
</html>
Ce code fonctionne, j’obtiens une liste de produit trié par prix.
Le problème c'est que lorsque je clique sur la page 2 de la pagination pour continuer à consulter la liste des articles, le code repart sur la requête initiale c'est à dire celle-ci :
$sql1 = "SELECT COUNT(ID) as nbArt FROM gtable WHERE valide = '1'";
et donc sur la page 2 je retrouve la liste des articles dans l'ordre tel qu'ils sont dans la base de donnée et sans la continuité du tri par prix...
Je ne voit pas comment faire pour que lorsque je clique sur la deuxième page, je puisse continuer à consulter la liste des articles dans l'ordre du prix ?
J'avoue que je sèche un peu, auriez vous s'il vous plait une idée pour me dépanner.
Merci