par
lyla » 17 avr. 2006, 23:40
Ben les variables s'affichent bien et le lien a l'air correct :
echo '<td class="txt" align="center">| <a href = "'.$page.'?limite='.$limite.'&type1='.$offre.'&type='.$type2.'&type2='.$type3.'" class="lien">'.$numeroPages.'</a></td>';
En fait, non j'ai pas les variables dans l'url au 1er chargement sauf si je met le formulaire en get mais là j'ai essayé et ça marche pas non plus.
Pour être un plus claire sur le déroulement:
- j'ai une page "index.php" avec le formulaire de recherche
- ce formulaire envoie vers la page "result.php"
- result.php récupère d'abord les données
$offre = (isset($_POST["type1"])) ? $_POST["type1"] : ( (isset($_GET["type1"])) ? $_GET["type1"] : "" ) ;
$type = (isset($_POST["type2"])) ? $_POST["type2"] : ( (isset($_GET["type2"])) ? $_GET["type2"] : "" ) ;
$type2 = (isset($_POST["type3"])) ? $_POST["type3"] : ( (isset($_GET["type3"])) ? $_GET["type3"] : "" ) ;
-puis requête sql:
if($type2 == '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>");
- puis affiche les résultats, selon $offre
if($offre == 'Location'){
include "affich-loc.php";
}else {
include "affich-vente.php";
}
- affich-vente.php et affich-loc.php contiennent :
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);
}
- Si il y a plus de 4 résultats, on affiche les liens vers les autres pages. Fonction contenue dans fonctions.php :
//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.'&type1='.$offre.'&type='.$type2.'&type2='.$type3.'" 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>';
}
Et c'est là que ça bug, puisque le lien de la page 2 récupère des variables vides ...
](*,)