Je débute en php et j'aurais bien besoin d'un pti coup de pouce!!
Je réalise un annuaire où sur une page est présent 8 enregistrements de camping contenu dans une base de données.
Je souhaiterais que sur cette page on puisse avoir la possibilité de filtrer les enregistrements de mes campings par ville. J'ai donc mis une liste déroulante où l'on retrouve l'ensemble des villes de mes enregistrements.
Un premier problème apparait: des doublons apparaissent et une même ville peut se retrouver plusieurs fois dans la liste.
Un deuxième problème: lorsque je choisit la ville et que je clique sur "ok" rien ne s'affiche et la liste revient à sa première valeur par défaut cad la 1ère ville par ordre alphabétique.
Pour illustrer le cheminement, lorsqu'un visiteur arrive sur la page camping, 8 enregistrements doivent apparaitre dans le désordre au niveau des villes. Le filtre doit alors permettre de n'afficher que les campings dont telle ville m'interesse et ce sur la même page qu'auparavant.
Je vous transmet le code php de ma page
<?php require_once('Connections/conn_develop.php'); ?>
<?php
$maxRows_rs_camping = 8;
$pageNum_rs_camping = 0;
if (isset($_GET['pageNum_rs_camping'])) {
$pageNum_rs_camping = $_GET['pageNum_rs_camping'];
}
$startRow_rs_camping = $pageNum_rs_camping * $maxRows_rs_camping;
mysql_select_db($database_conn_develop, $conn_develop);
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, url_photo4, alt_photo1, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab";
$query_limit_rs_camping = sprintf("%s LIMIT %d, %d", $query_rs_camping, $startRow_rs_camping, $maxRows_rs_camping);
$rs_camping = mysql_query($query_limit_rs_camping, $conn_develop) or die(mysql_error());
$row_rs_camping = mysql_fetch_assoc($rs_camping);
if (isset($_GET['totalRows_rs_camping'])) {
$totalRows_rs_camping = $_GET['totalRows_rs_camping'];
} else {
$all_rs_camping = mysql_query($query_rs_camping);
$totalRows_rs_camping = mysql_num_rows($all_rs_camping);
}
$totalPages_rs_camping = ceil($totalRows_rs_camping/$maxRows_rs_camping)-1;
mysql_select_db($database_conn_develop, $conn_develop);
$query_rs_ville = "SELECT ville_etab FROM tbl_etab ORDER BY ville_etab ASC";
$rs_ville = mysql_query($query_rs_ville, $conn_develop) or die(mysql_error());
$row_rs_ville = mysql_fetch_assoc($rs_ville);
$totalRows_rs_ville = mysql_num_rows($rs_ville);
mysql_select_db($database_conn_develop, $conn_develop);
if (!isset($_POST['ville'])) {
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, url_photo4, alt_photo1, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab";
} else {
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, url_photo4, alt_photo1, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='". $_POST['ville'] ."'";
}
?>
<!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" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Menu CSS avec contenu</title>
<meta name="Description" content="Comment faire un menu CSS"/>
<meta name="Keywords" content=" Menu CSS, menu CSS, menu déroulant, test menu horizontal, menu hover"/>
<link href="style1.css" rel="stylesheet" type="text/css" />
<link href="1_menu_bandeau_piedpage.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="style1_ie.css" media="screen" />
<![endif]-->
<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
for (var i = 1; i<=10; i++) {
if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}
//-->
</script>
</head>
<body>
<div id="global">
<?php
include('menu_bandeau_piedpage.htm');
?>
<div id="contenu">
<table class="tri" height="35px" width="900px" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Tri par ville</td>
<td><form id="frm_parville" name="frm_parville" method="post" action="annuaire-camping.php">
<label>
<select name="ville" id="ville">
<?php
do {
?>
<option value="<?php echo $row_rs_ville['ville_etab']?>"><?php echo $row_rs_ville['ville_etab']?></option>
<?php
} while ($row_rs_ville = mysql_fetch_assoc($rs_ville));
$rows = mysql_num_rows($rs_ville);
if($rows > 0) {
mysql_data_seek($rs_ville, 0);
$row_rs_ville = mysql_fetch_assoc($rs_ville);
}
?>
</select>
</label>
<label>
<input name="submit" value="Ok" type="submit" />
</label>
</form></td>
<td>Tri par étoiles</td>
<td><select name="trietoile"> </select></td>
<td><input name="Submit" value="Ok" type="submit" /></td>
</tr>
</table>
<?php do { ?>
<table class="tableau" height="110px" width="461px" border="0" cellspacing="0" cellpadding="0" background="vignette_annuaire.gif">
<tr>
<td class="photo" rowspan="4" height="97px" width="140px" ><img src="<?php echo $row_rs_camping['url_photo4']; ?>" alt="<?php echo $row_rs_camping['alt_photo1']; ?>"/></td>
<td class="nom" colspan="2" width="315px" height="30px"><a href="camping.php?num_camping=<?php echo $row_rs_camping['id_camping']; ?>"><?php echo $row_rs_camping['nom_etab']; ?></a></td>
</tr>
<tr>
<td width="315px" height="24px" colspan="2"><span class="Style1"><?php echo $row_rs_camping['cp_etab']; ?> <?php echo $row_rs_camping['ville_etab']; ?></span></td>
</tr>
<tr>
<td colspan="2" width="315px" height="18px" valign="top"><span class="Style1"><?php echo $row_rs_camping['date_ouverture']; ?></span></td>
</tr>
<tr>
<td width="150px" height="25px" valign="top"><span class="Style1"><?php echo '<img src="Images/etoile'.$row_rs_camping['nb_etoile_camping'].'.gif" alt="Camping '.$row_rs_camping['nb_etoile_camping'].' étoiles"></img>'; ?></span></td>
<td width="165px" height="25px" valign="top"><a href="camping.php?num_camping=<?php echo $row_rs_camping['id_camping']; ?>"><span class="Style1"> Fiche complète</span></a></td>
</tr>
</table>
<?php } while ($row_rs_camping = mysql_fetch_assoc($rs_camping)); ?></div>
</body>
</html>
<?php
mysql_free_result($rs_camping);
mysql_free_result($rs_ville);
?>
Comme vous pourrez le voir, j'ai tenté de mettre une condition if else:
mysql_select_db($database_conn_develop, $conn_develop);
if (!isset($_POST['ville'])) {
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, url_photo4, alt_photo1, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab";
} else {
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, url_photo4, alt_photo1, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='". $_POST['ville'] ."'";
}
afin d'afficher les résultats en fonction de l'action choisie.En éspérant avoir été clair sur ce qui me tracasse, merci par avance pour toute aide apportée.