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
Bonjour,
Voici une de mes requetes pour un moteur de recherche sur un site :
$pagemin = $_REQUEST'page']*$nbsujet_par_page-$nbsujet_par_page;
$sql = "SELECT * FROM objets WHERE $conditions LIKE '%".$search."%' LIMIT ".$pagemin.", ".$nbsujet_par_page.";
Heu ok hihi merci mais justement je suis déjà allé sur une grosse partie de ces sites sans trouver de réponse. Je tente de trouver une solution avec mon code car mon niveau en php est un peu limite par conséquent lorsque j'essaye de lire le code des autres et en plus avec des noms de variables qui ne me parlent pas je ne trouve pas de solution.
Je me doute que ce sujet à déjà été abordé. Si je pose la question sur ce forum c'est parce que je ne parviens pas à trouver de solution tout seul.
Si quelqu'un peut m'aider je le remercie infiniment...