ci-dessous le code extrêmement long de ma page.
Cette page se divise en gros en deux parties en fonction des informations que reçoit la page en POST.
Si elle reçoit une variable POST elle doit afficher des résultats de recherche différents que si la page est chargée normalement.
J'ai fait un echo() sur la variable $_POST['ville'] et elle me renvoit bien le résultat attendu.
J'ose penser que le problème se situe dans ma première requête SQL, à savoir :
$sql = "SELECT * FROM `options_gites`,`annonces` WHERE ville='". $_POST['ville'] ."' ORDER BY Annonce_ID ";
sachant que le champ ville ne se trouve que dans la table options_gites et Annonce_ID dans la table annonces.
Il me sort des résultats incohérents. Par exemple, s'il y a deux résultats correspondants dans la bdd, il m'en renvoit 52, soit 2*26, 26 étant le nombre total d'annonces sur le site.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php require_once ('libs/connexion_bdd.php'); ?>
// [..] Je vous fais grâce des balises meta
<script type="text/javascript" src="include/js/popup_load.js"></script>
<script type="text/javascript" src="include/js/favoris.js"></script>
<link href="include/css/misenpage.css" rel="stylesheet" type="text/css" />
<link href="include/css/contenu_desc.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="hautPage">
<div id="contenuHaut"></div>
</div>
<div id="contenuPage">
<div id="contenuCoteGauche">
<ul id="contenuMenu">
<li><a id="menu1" href="index.php" title="ACCUEIL">Accueil</a></li>
<li><a id="menu2" href="hebergements.php" title="HÉBERGEMENTS">Hébergements</a></li>
<li><a id="menu3" href="index.php" title="LE PAYS CATALAN">Le Pays Catalan</a></li>
<li><a id="menu4" href="pages_stat/qui_sommes.php" title="QUI SOMMES-NOUS ?">Qui sommes-nous ?</a></li>
<li><a id="menu5" href="pages_stat/espace_prop.php" title="ESPACE PROPRIÉTAIRES">Espace propriétaires</a></li>
<li><a id="menu6" href="pages_stat/conditions.php" title="CONDITIONS GÉNÉRALES DE VENTE">Conditions générales</a></li>
<li><a id="menu7" href="contact.php" title="N'HÉSITEZ PAS À NOUS CONTACTER">Nous contacter</a></li> </ul>
</ul></div>
<?php if (isset($_POST['ville'])) {
$sql = "SELECT * FROM `options_gites`,`annonces` WHERE ville='". $_POST['ville'] ."' ORDER BY Annonce_ID ";
$req = mysqli_query($connexion,$sql) or die('Erreur SQL !'.$sql.''.mysqli_error($sql));
// Test
echo mysqli_num_rows($req); // renvoit le nombre de résultats réels *26, soit le nombre total d'annonces
echo $_POST['ville'];
// Test
$donnees = $req->fetch_array();
// lecture et affichage de titreFR
while( $row = $req->fetch_array()) {
echo '
<div><div class="annonce">
<div class="refs" style="width:450px"><p style="text-transform:capitalize;">'; echo $row['pays']; echo ' - '; echo $row['region']; echo ' - '; if ($row['departement'] == aucun) { echo ''; } else {echo $row['departement'] . ' - '; } echo $row['secteur']; echo ' - N° : '; echo $row['opt_gites']; echo '.</p></div>
<div class="vignette"><a href="detail_annonces.php?page=' . $row['opt_gites'] . '"><img src="im_spc/'.$row['opt_gites'].'/pics/v-fr-photo1.jpg" /><br /><span style="font-size:10px; padding:0 0 0 5px">Détail de l\'annonce</span></a></div>
<div class="refs">'; echo $row['ville'];
echo '</div>
<div class="refs">
<p>';
echo $row["titreFR"];
echo '
</p>
</div>
<div class="refs"><p><b>Gîte</b> : <b>'; echo $row['nombre_de_personnes']; echo ' personne(s)</b> - '; echo $row['surface']; echo ' m2 - '; echo $row['nombre_de_pieces']; echo ' pièce(s) - '; echo $row['nombre_de_chambres']; echo ' chambre(s).</p></div>
<div class="refs"><p><b>'; echo $row['semaine_basse_saison']; echo ' € à '; echo $row['semaine_tres_haute_saison']; echo ' € par semaine.</b></p></div>
<div class="refs">'; if (empty($row['ville_alentours'])) {echo '';}
else { echo '<span style="text-transform:capitalize;">' . $row['ville_alentours'] . ' : ' . $row['d_ville_alentours'] . ' km<span style="text-transform:none;">(s)</span> </span> - ' ;}
if (empty($row['prefecture'])) {echo '' ;}
else { echo '<span style="text-transform:capitalize;">' . $row['prefecture'] . ' : ' . $row['d_prefecture'] . ' km<span style="text-transform:none;">(s)</span> </span>' ;}
if (empty($row['d_argeles'])) {echo '';}
else {echo '<p>Argelès sur mer : ' . $row['d_argeles'] . ' km(s) ' . ' - ';}
if (empty($row['d_perpignan'])) { echo ''; }
else { echo 'Perpignan : ' . $row['d_perpignan'] .' km(s) - ';}
if (empty($row['d_andorre'])) { echo ''; }
else { echo'<br />Andorre : ' . $row['d_andorre'] . ' km(s) - ';}
if (empty( $row['d_mer'])) {echo ''; }
else { echo 'Mer : ' . $row['d_mer'] . ' km(s)';}
if (empty( $row['d_montagne'])) {echo ''; }
else {echo ' - Montagne : ' . $row['d_montagne'] . ' km(s).</p>';}
echo '.</div><div class="refs"><p> </p></div></div>
<hr class="separation" />';
} echo ' <div id="basPage">
<a href=""></a> -
<a href="javascript:void(aj_favoris());">AJOUTER AUX FAVORIS</a> -
<a href="#popMention" class="pop" onmouseup="window.scroll(0,0);">MENTIONS LÉGALES</a>
<br /><br />
<a href=""></a>
</div>
<div id="popMention">
<div id="ligneFermer"><a href="#popMention" class="pop">X</a></div>
<div class="ligne" style="text-align:center; "><b>MENTIONS LÉGALES</b></div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
</div>
</body>
</html>';
// on libère le résultat
mysqli_free_result($req);
} else {
$nombreresultat = 8;
// On récupère le nombre total de données
$sql = "SELECT COUNT(*) AS Annonce_ID FROM `annonces`";
$retour = mysqli_query($connexion,$sql) or die('Erreur SQL !'.$sql.''.mysqli_error($retour));
$donnees = $retour->fetch_array();
$totalresult = $donnees['Annonce_ID'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalresult / $nombreresultat );
if (isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
$premier_res = ($page - 1) * $nombreresultat ;
?>
<div id="contenuCoteDroit">
<div class="contenuRecherche">
<h5 class="titreRecherche">Rechercher un gîte</h5>
<form name="formRecherche" id="formRecherche" method="post" action="transactions.php">
<ul>
<li>
<select name="secteur" id="secteur">
<option value="secteur">Précisez une zone</option>
<option value="campagne">Campagne</option>
<option value="montagne">Montagne</option>
</select>
</li>
<li>
<select name="ville" id="ville">
<option value="ville">Précisez une ville</option>
<option value="argeles">Argelès sur mer</option>
<option value="catllar">Catllar</option>
<option value="caudies">Caudiès de fenouillèdes</option>
<option value="font_romeu">Font romeu odeillo via</option>
<option value="fuilla">Fuilla</option>
<option value="ille">Ille sur têt</option>
<option value="albère">L albère</option>
<option value="bastide">La bastide</option>
<option value="molitg">Molitg les bains</option>
<option value="rabouillet">Rabouillet</option>
<option value="rigarda">Rigarda</option>
<option value="saint_nazaire">Saint nazaire</option>
<option value="saint_pierre">Saint pierre dels forcats</option>
</select>
</li>
<li>
<input name="envoyer" id="boutonRecherche" type="submit" value="RECHERCHER" />
</li>
</ul>
</form>
</div>
<div class="contenuRecherche">
<h5 class="titreRecherche">Rechercher sur la carte</h5>
<div id="loupe"><a href="pages_stat/carte.php"><img src="images/loupe.jpg" /></a></div>
</div>
</div>
<?php
$req = mysqli_query($connexion,"SELECT * FROM `annonces`");
$num_rows = $req->num_rows;
// Je définis le nombre de résultats par pages
$nombreresultat = 8;
// On récupère le nombre total de données
$sql = "SELECT COUNT(*) AS Annonce_ID FROM `annonces`";
$retour = mysqli_query($connexion,$sql) or die('Erreur SQL !'.$sql.''.mysqli_error($req));
$donnees = $retour->fetch_array();
$totalresult = $donnees['Annonce_ID'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalresult / $nombreresultat );
?>
<div id="contenuTexte">
<div id="texte">
<div id="imgHautPage"><img src="images/fd_hebergements.jpg" /></div>
<div>
<p id="resultat"><?php echo $num_rows; ?> résultat(s)</p>
<p id="page">Page <?php echo $page . ' /' . $nombreDePages; ?>
</div>
<p> </p>
<div><ul id="menuNavig">
<li><< <a id="pagePrecedente" href="<?php if ($page <= 1) { echo '#"'; } else { echo 'hebergements.php?page=' . ($page - '1') . ''; } ?>">Page précédente</a></li>
<li style="color:#fff;">[</li>
<?php
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<li><a href="hebergements.php?page=' . $i . '">' . $i . '</a></li> ';
}
?>
<li style="color:#fff;">]</li>
<li><a id="pageSuivante" href="<?php if ($page >= $nombreDePages ) { echo '#"'; } else { echo 'hebergements.php?page=' . ($page + '1') . '';} ?>">Page suivante</a> >></li>
</ul>
</div></div></div>
<?php
$req = mysqli_query($connexion,"SELECT * FROM `annonces` INNER JOIN `options_gites` ON Annonce_ID=opt_gites ORDER BY Annonce_ID LIMIT " . $premier_res. ", " . $nombreresultat );
$num_rows = mysqli_num_rows($req);
// TEST
$req_opt = mysqli_query($connexion,"SELECT * FROM `options_gites` ORDER BY opt_gites");
$row_opt = $req_opt->fetch_array();
//TEST
// si $num_rows contient des résultats.
if($num_rows) {
// lecture et affichage des annonces
while( $row = $req->fetch_array()) {
echo '
<div><div style="margin-left:200px;" class="annonce">
<div class="refs" style="width:450px"><p style="text-transform:capitalize;">'; echo $row["pays"]; echo ' - '; echo $row['region']; echo ' - '; if ($row['departement'] == aucun) { echo ''; } else {echo $row['departement'] . ' - '; } echo $row['secteur']; echo ' - N° : '; echo $row['opt_gites']; echo '.</p></div>
<div class="vignette"><a href="detail_annonces.php?page=' . $row['opt_gites'] . '"><img src="im_spc/'.$row['opt_gites'].'/pics/v-fr-photo1.jpg" /><br /><span style="font-size:10px; padding:0 0 0 5px">Détail de l\'annonce</span></a></div>
<div class="refs">'; if (empty($row['ville'])) { echo '';} else {echo '<p style="text-transform:capitalize;"><b>Ville</b> : ' . $row['ville'] . '.</p>';}
echo '</div>
<div class="refs">
<p>';
echo $row["titreFR"];
echo '
</p>
</div>
<div class="refs"><p><b>Gîte</b> : <b>'; echo $row['nombre_de_personnes']; echo ' personne(s)</b> - '; echo $row['surface']; echo ' m2 - '; echo $row['nombre_de_pieces']; echo ' pièce(s) - '; echo $row['nombre_de_chambres']; echo ' chambre(s).</p></div>
<div class="refs"><p><b>'; echo $row['semaine_basse_saison']; echo ' € à '; echo $row['semaine_tres_haute_saison']; echo ' € par semaine.</b></p></div>
<div class="refs">'; if (empty($row['ville_alentours'])) {echo '';}
else { echo '<span style="text-transform:capitalize;">' . $row['ville_alentours'] . ' : ' . $row['d_ville_alentours'] . ' km<span style="text-transform:none;">(s)</span> </span> - ' ;}
if (empty($row['prefecture'])) {echo '' ;}
else { echo '<span style="text-transform:capitalize;">' . $row['prefecture'] . ' : ' . $row['d_prefecture'] . ' km<span style="text-transform:none;">(s)</span> </span>' ;}
if (empty($row['d_argeles'])) {echo '';}
else {echo '<p>Argelès sur mer : ' . $row['d_argeles'] . ' km(s) ' . ' - ';}
if (empty($row['d_perpignan'])) { echo ''; }
else { echo 'Perpignan : ' . $row['d_perpignan'] .' km(s) - ';}
if (empty($row['d_andorre'])) { echo ''; }
else { echo'<br />Andorre : ' . $row['d_andorre'] . ' km(s) - ';}
if (empty( $row['d_mer'])) {echo ''; }
else { echo 'Mer : ' . $row['d_mer'] . ' km(s)';}
if (empty( $row['d_montagne'])) {echo ''; }
else {echo ' - Montagne : ' . $row['d_montagne'] . ' km(s).</p>';}
echo '.</div><div class="refs"><p> </p></div></div>';
}
}
else
{
echo '<br /> <br /> <br /> <br /> <div style="margin-left:300px;"><p><b>Vous êtes arrivé à la fin de la liste des résultats.</b></div></div>';
}
// on libère le résultat
mysqli_free_result($req);
?>
</div>
<hr class="separation" />
<div><ul id="menuNavig">
<li><< <a id="pagePrecedente" href="<?php if ($page <= 1) { echo '#"'; } else { echo 'hebergements.php?page=' . ($page - '1') . ''; } ?>">Page précédente</a></li>
<li style="color:#fff;">[</li>
<?php
$nombreresultat = 8;
// Je récupère le nombre total de données
$sql = "SELECT COUNT(*) AS Annonce_ID FROM `annonces`";
$retour = mysqli_query($connexion,$sql) or die('Erreur SQL !'.$sql.''.mysqli_error($req));
$donnees = $retour->fetch_array();
$totalresult = $donnees['Annonce_ID'];
// Je calcule le nombre de pages à créer
$nombreDePages = ceil($totalresult / $nombreresultat );
// Puis je fais une boucle pour écrire les liens vers chacune des pages
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<li><a href="hebergements.php?page=' . $i . '">' . $i . '</a></li> ';
}
if (isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 1;
}
$premier_res = ($page - 1) * $nombreresultat ;
?>
<li style="color:#fff;">]</li>
<li><a id="pageSuivante" href="<?php if ($page >= $nombreDePages) { echo '#"'; } else { echo 'hebergements.php?page=' . ($page + '1') . '';} ?>">Page suivante</a> >></li>
</ul>
</div> <hr class="separation" />
<div <?php if(!$num_rows) { echo 'style="margin-left:350px;"'; } else { echo' style="margin-left:200px;"'; } ?> id="publication">Le contenu des annonces a été rédigé d'après les informations transmises et validées par les propriétaires</div>
<hr class="separation" />
<div id="basPage">
<a href="mailto:"></a> -
<a href="javascript:void(aj_favoris());">AJOUTER AUX FAVORIS</a> -
<a href="#popMention" class="pop" onmouseup="window.scroll(0,0);">MENTIONS LÉGALES</a>
<br /><br />
<a href=""></a>
</div>
<div id="popMention">
<div id="ligneFermer"><a href="#popMention" class="pop">X</a></div>
<div class="ligne" style="text-align:center; "><b>MENTIONS LÉGALES</b></div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
<div class="ligne">xxx</div>
</div>
</body>
</html><?php } ?>
Si quelqu'un a une idée je suis preneur.
La page est extrêmement longue alors je ne vous en voudrai pas si vous n'avez pas envie, car moi-même je commence à la trouver rébarbative.
Bonne après-midi.
@ plus.
Fab.
<?php if (isset($_POST['ville'])) {
$sql = "SELECT * FROM `options_gites`,`annonces` WHERE ville='". $_POST['ville'] ."' ORDER BY Annonce_ID ";
$req = mysqli_query($connexion,$sql) or die('Erreur SQL !'.$sql.''.mysqli_error($sql));
$donnees = $req->fetch_array();
// lecture et affichage de titreFR
while( $row = $req->fetch_array())
par
<?php if (isset($_POST['ville'])) {
$ville = htmlentities($_POST['ville']);
$sql = "SELECT * FROM `options_gites` INNER JOIN `annonces` ON opt_gites=Annonce_ID WHERE ville='". $ville."' ORDER BY opt_gites";
$req = mysqli_query($connexion,$sql) or die('Erreur SQL !'.$sql.''.mysqli_error($sql));
$num_rows = mysqli_num_rows($req);
if ($num_rows) {
Trouvez des réponses à vos questions sur la création de sites web, le référencement et les meilleures pratiques pour gérer un site. Échangez avec d'autres webmasters passionnés pour améliorer vos compétences en ligne et optimiser vos projets de site web.