Voilà j'ai un pb très bizarre avec mon moteur de recherche: il affiche les résultats mais seulement sur la 1ère page !
En fait c'est pour un site de petites annonces immo, le moteur est assez simple: on choisi le type d'annonce (vente ou location) , et le type de bien (maison, appart, etc ...), on valide et on tombe sur la page de résultat.
Jusqu'ici tout va bien, les annonces correspondantes ont été trouvées mais quand on clique sur la page suivante ... plus rien !
Voici une partie du code:
Code : Tout sélectionner
//récupère choix du formulaire
$offre = $_POST["type1"] ;
$type = $_POST["type2"] ;
$type2 = $_POST["type3"] ;
//requête SQL:
if($_POST["type3"] == 'all'){
$sql1 = "SELECT count(id) FROM annonces WHERE offre='$offre' AND type='$type'";
$sql2 = "SELECT * FROM annonces WHERE offre='$offre' AND type='$type' ORDER BY id DESC limit ";
}else{
$sql1 = "SELECT count(id) FROM annonces WHERE offre='$offre' AND type='$type' AND type2='$type2'";
$sql2 = "SELECT * FROM annonces WHERE offre='$offre' AND type='$type' AND type2='$type2' ORDER BY id DESC limit ";
}
$select = $sql1 ;//compte le nombre à afficher au total
$result = mysql_query($select,$cnx) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
echo ("<b><br>RECHERCHE DE BIENS </b>- ".$total." résultat(s) trouvé(s)<br><br>");
require "fonctions.php";
$nombre = 4; // afficher 4 résultats par page.
if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois: limite = 0.
// on cherche le nom de la page.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];
$select = $sql1 ;//compte le nombre à afficher au total
$result = mysql_query($select,$cnx) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//vérifier la validité de notre variable $limite;
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
// requête SQL qui ne prend que le nombre d'enregistrements nécessaire à l'affichage.
$select = $sql2.$limite.",".$nombre;
$result = mysql_query($select,$cnx) or die ('Erreur : '.mysql_error() );
// si on a récupéré un resultat on l'affiche.
if($total) {
while($row = mysql_fetch_array($result)) {
special($row['special'],$row);
}
}
else echo "<br><br><div class='txt' align='center'><B>Aucune annonce ne correspond<br> à votre recherche pour le moment ...<br><br></B></div>";
mysql_free_result($result);
// si le nombre d'enregistrement à afficher est plus grand que $nombre
if($total > $nombre) {
// affichage des liens vers les pages
affichePages($nombre,$page,$total);
}
echo "<table width='400' align='right' cellspacing='2'><tr><td align='center'>";
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;
if($limite != 0) {
echo '<a href="'.$page.'?limite='.$limiteprecedente.'"><< Page précédente</a>';
}
echo "</td><td align='center'>";
if($limitesuivante < $total) {
echo '<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante >></a>';
}
echo "</td></tr></table><br>";
Code : Tout sélectionner
//Fonction qui vérifie la validité de $limite récupération de $limite
if(isset($_GET['limite']))
$limite=$_GET['limite']; else $limite=0;
function verifLimite($limite,$total,$nombre) {
if(is_numeric($limite)) {
// si $limite est entre 0 et $total, $limite est ok
// sinon $limite n'est pas valide.
if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
// j'assigne 1 à $valide si $limite est entre 0 et $max
$valide = 1;
}
else {
// sinon j'assigne 0 à $valide
$valide = 0;
}
}
else {
// si $limite n'est pas numérique j'assigne 0 à $valide
$valide = 0;
}
// je renvois $valide
return $valide;
}
//Fonction qui affiche les liens vers les pages
function affichePages($nb,$page,$total) {
$nbpages=ceil($total/$nb);
$numeroPages = 1;
$compteurPages = 1;
$limite=0;
$page_active = ceil(($_GET['limite']/$nb)+1);
echo '<table border = "0" align="right" cellspacing="2"><tr>';
while($numeroPages <= $nbpages) {
if($numeroPages!=$page_active){echo '<td class="txt" align="center">| <a href = "'.$page.'?limite='.$limite.'" class="lien">'.$numeroPages.'</a></td>';}
else{echo '<td class="txtOrange" align="center">| <b>'.$numeroPages.'</b></td>';}
$limite = $limite + $nb;
$numeroPages = $numeroPages + 1;
$compteurPages = $compteurPages + 1;
}
echo '</tr></table><br>';
}
Code : Tout sélectionner
$sql1 = "SELECT count(id) FROM annonces WHERE offre='Vente'";
$sql2 = "SELECT * FROM annonces WHERE offre='Vente' ORDER BY id DESC limit ";