par
dread » 07 févr. 2007, 12:47
Je comprends que ce ne soit pas facile. Voici une illustration de ma page:
http://develop.web.free.fr/ff.JPG
Comme tu pourras voir j'ai une barre de menus en haut rouge. Lorsqu'un visiteur passe la souris sur le menu hebergement, un sous menu apparait dans lequel se trouve "camping". Une fois camping selectionné, il est redirigé vers la page que tu peux voir avec les 8 enregistrements. Le menu reste bien sûr visible aussi sur cette page.
A présent, tu peux voir le filtre par ville qui apparait en dessous de ce menu rouge. La liste des villes s'affiche dans la liste déroulante.
Depuis hier soir, j'ai réussi quelques petits trucs.
En effet, le filtre par ville fonctionne à présent et lorsque l'on clique sur le "fameux" sous menu "camping du menu rouge, tous les enregistrements réaparaissent. Voici le code qui fonctionne:
<?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_touscamping = "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_touscamping = sprintf("%s LIMIT %d, %d", $query_rs_touscamping, $startRow_rs_touscamping, $maxRows_rs_touscamping);
$rs_touscamping = mysql_query($query_limit_rs_touscamping, $conn_develop) or die(mysql_error());
$row_rs_touscamping = mysql_fetch_assoc($rs_touscamping);
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 DISTINCT 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 AND ville_etab='".$_POST['ville']."'";
} 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";
}
$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);
?>
J'ai tout simplement nommé de facon différente ma première requête en rs_touscamping et laissé rs_camping dans la condition if...else.
Cependant, d'un point de vue de la navigation, si un visiteur après avoir effectué quelques filtres par ville souhaite retourner à un affichage où toutes les enregistrements seraient à nouveau tous visibles, il n'a d'autre choix que de faire "précédenteé autant de fois qu'il a fait de filtres ou en recliquant sur le sous menu "camping". Mais je doute que cette dernière solution ne lui saute aux yeux.
C'est pourquoi, je te parlais d'une possibilité de rajouter dans la liste déroulante du filtre par ville un "afficher tous les campings".
J'ai essayé cette possibilité en rajoutant dans le code un option value "afficher tous les campings":
<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">
<option value="<?php echo $row_rs_ville['ville_etab']?>">Afficher tous les campings</option>
<?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);
}
?>
Ce nouveau filtre apparait bien dans la liste des choix mais je ne sais absolument pas comment lui affecter comme action de réafficher tous les résultats comme le ferait le sous menu "camping".
Je comprends que ce ne soit pas facile. Voici une illustration de ma page:
http://develop.web.free.fr/ff.JPG
Comme tu pourras voir j'ai une barre de menus en haut rouge. Lorsqu'un visiteur passe la souris sur le menu hebergement, un sous menu apparait dans lequel se trouve "camping". Une fois camping selectionné, il est redirigé vers la page que tu peux voir avec les 8 enregistrements. Le menu reste bien sûr visible aussi sur cette page.
A présent, tu peux voir le filtre par ville qui apparait en dessous de ce menu rouge. La liste des villes s'affiche dans la liste déroulante.
Depuis hier soir, j'ai réussi quelques petits trucs.
En effet, le filtre par ville fonctionne à présent et lorsque l'on clique sur le "fameux" sous menu "camping du menu rouge, tous les enregistrements réaparaissent. Voici le code qui fonctionne:
[php]
<?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_touscamping = "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_touscamping = sprintf("%s LIMIT %d, %d", $query_rs_touscamping, $startRow_rs_touscamping, $maxRows_rs_touscamping);
$rs_touscamping = mysql_query($query_limit_rs_touscamping, $conn_develop) or die(mysql_error());
$row_rs_touscamping = mysql_fetch_assoc($rs_touscamping);
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 DISTINCT 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 AND ville_etab='".$_POST['ville']."'";
} 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";
}
$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);
?>
[/php]
J'ai tout simplement nommé de facon différente ma première requête en rs_touscamping et laissé rs_camping dans la condition if...else.
Cependant, d'un point de vue de la navigation, si un visiteur après avoir effectué quelques filtres par ville souhaite retourner à un affichage où toutes les enregistrements seraient à nouveau tous visibles, il n'a d'autre choix que de faire "précédenteé autant de fois qu'il a fait de filtres ou en recliquant sur le sous menu "camping". Mais je doute que cette dernière solution ne lui saute aux yeux.
C'est pourquoi, je te parlais d'une possibilité de rajouter dans la liste déroulante du filtre par ville un "afficher tous les campings".
J'ai essayé cette possibilité en rajoutant dans le code un option value "afficher tous les campings":
[php]
<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">
<option value="<?php echo $row_rs_ville['ville_etab']?>">Afficher tous les campings</option>
<?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);
}
?>
[/php]
Ce nouveau filtre apparait bien dans la liste des choix mais je ne sais absolument pas comment lui affecter comme action de réafficher tous les résultats comme le ferait le sous menu "camping".