Bonjour à tous.
Je me suis enfin décidé à mettre mon site en ligne afin d'opérer une période de test et détecter les problèmes.
Et on peut dire que je ne suis pas déçu!!
Au passage, j'heberge mon site chez
infomaniak.
Le problème le plus flagrant est le dernier.
Imaginez une page annuaire de camping qui affiche 8 enregistrements par page avec un système de pagination pour naviguer entre les pages.
Les enregistrements sont afficher aléatoirement et cet ordre est enregistré en session pour eviter que le random ne soit un problème lorsque l'on navigue entre les pages ou que l'on décide de voir le détail de la fiche d'un camping puis que l'on retourne sur la page annuaire.
Deux filtres sont proposés afin de trier les enregistrements par ville et/ou par étoiles.
Mon problème intervient à l'utilisation de ces filtres.
Par exemple je décide de filtrer mes campings par étoile et je choisi " 2 étoile". Je devrais donc voir apparaitre uniquement mes campings 2 étoiles (chose qui fonctionnait en local sous WAMP5 php myadmin).
Le résultat de ce filtre avec mon site hébergé est le suivant:
Les campings 2 étoiles apparaissent en premier mais on peut voir à la suite le reste de mes enregistrements quand aucun filtre n'est appliqué. Comme si on avait fait une impression écran de ma première page avec les 8 enregistrements et qu'une fois le filtre appliqué, on est collé les campings correspondants au filtre par dessus cette première image sans la dissimuler.
J'espère bien m'expliquer.
Est-ce que le problème pourrait venir des sessions? ou alors d'une fonction pas prise en charge par
infomaniak?
Je vous envoi le code de ma page ou du moins les requetes qui générent d'une part mes listes de filtres par ville et étoile, puis la requete qui va sélectionner les infos à afficher dans la page:
mysql_select_db($database_conn_develop, $conn_develop);
if ((($_GET['etoile']) != '') && (($_GET['etoile']) != 'toutes')){
$query_rs_ville = "SELECT DISTINCT ville_etab FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND type_etab='camping' AND nb_etoile_camping='".$_GET['etoile']."' AND active=1 ORDER BY ville_etab ASC";
} else {
$query_rs_ville = "SELECT DISTINCT ville_etab FROM tbl_etab WHERE type_etab='camping' AND active=1 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);
mysql_select_db($database_conn_develop, $conn_develop);
if ((($_GET['ville']) != '') && (($_GET['ville']) != 'toutes')){
$query_rs_etoile = "SELECT DISTINCT nb_etoile_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='".$_GET['ville']."' AND active=1 ORDER BY nb_etoile_camping ASC";
} else {
$query_rs_etoile = "SELECT DISTINCT nb_etoile_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND active=1 ORDER BY nb_etoile_camping ASC";
}
$rs_etoile = mysql_query($query_rs_etoile, $conn_develop) or die(mysql_error());
$row_rs_etoile = mysql_fetch_assoc($rs_etoile);
if ((!isset($_SESSION['liste_camping'])) ||
(($_SESSION['ville']) != ($_GET['ville'])) ||
(($_SESSION['etoile']) != ($_GET['etoile']))){
mysql_select_db($database_conn_develop, $conn_develop);
if (($_GET['ville']) == ''){ $_GET['ville'] = 'toutes';}
if (($_GET['etoile']) == ''){ $_GET['etoile'] = 'toutes';}
if ((($_GET['ville'])!='toutes') && (($_GET['etoile'])=='toutes')){
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, active, url_photo4, titre_photo4, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='".$_GET['ville']."' AND active=1 order by rand()";
}
else{
if ((($_GET['etoile'])!='toutes') && (($_GET['ville'])=='toutes')){
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, active, url_photo4, titre_photo4, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND nb_etoile_camping='".$_GET['etoile']."' AND active=1 order by rand()";
}
else{
if (($_GET['ville']=='toutes') && ($_GET['etoile']=='toutes')){
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, active, url_photo4, titre_photo4, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND active=1 order by rand()";
}
else{
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, active, url_photo4, titre_photo4, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='".$_GET['ville']."' AND nb_etoile_camping='".$_GET['etoile']."' AND active=1 order by rand()";
}
}
}
$_SESSION['ville'] = $_GET['ville'];
$_SESSION['etoile'] = $_GET['etoile'];
$resultat = mysql_query($query_rs_camping);
$i=0;
while($row_rs_camping = mysql_fetch_array($resultat)) {
$liste_camping[$i]['url_photo4'] = $row_rs_camping['url_photo4'];
$liste_camping[$i]['titre_photo4'] = $row_rs_camping['titre_photo4'];
$liste_camping[$i]['id_camping'] = $row_rs_camping['id_camping'];
$liste_camping[$i]['nom_etab'] = $row_rs_camping['nom_etab'];
$liste_camping[$i]['cp_etab'] = $row_rs_camping['cp_etab'];
$liste_camping[$i]['ville_etab'] = $row_rs_camping['ville_etab'];
$liste_camping[$i]['date_ouverture'] = $row_rs_camping['date_ouverture'];
$liste_camping[$i]['nb_etoile_camping'] = $row_rs_camping['nb_etoile_camping'];
$i = $i + 1;
}
$_SESSION['liste_camping'] = $liste_camping;
$nb_entrees = count($liste_camping);
$entrees_par_page = 8;
$total_pages = ceil($nb_entrees/$entrees_par_page);
}
else{
$liste_camping = $_SESSION['liste_camping'];
$nb_entrees = count($liste_camping);
$entrees_par_page = 8;
$total_pages = ceil($nb_entrees/$entrees_par_page);
}
et le code de ma page qui renvoit les informations:
<div id="contenu">
<?php
for($i=$start;$i<$page_courante*$entrees_par_page;$i++){ if ($liste_camping[$i]['id_camping'] != '') {
?>
<table class="tableau" height="110px" width="461px" border="0" cellspacing="0" cellpadding="0" background="Images/annuaire/vignette-annuaire.gif">
<tr>
<td class="photo" rowspan="4" height="97px" width="140px" ><img src="<?php echo $liste_camping[$i]['url_photo4']; ?>" alt="<?php echo $liste_camping[$i]['titre_photo4']; ?>" title="<?php echo $liste_camping[$i]['titre_photo4']; ?>"/></td>
<td class="nom" colspan="2" width="315px" height="30px"><a href="fiche-camping.php?num_camping=<?php echo $liste_camping[$i]['id_camping']; ?>"><?php echo $liste_camping[$i]['nom_etab']; ?></a></td>
</tr>
<tr>
<td width="315px" height="24px" colspan="2"><span class="Style1"><?php echo $liste_camping[$i]['cp_etab']; ?> <?php echo $liste_camping[$i]['ville_etab']; ?></span></td>
</tr>
<tr>
<td colspan="2" width="315px" height="18px" valign="top"><span class="Style1"><?php echo $liste_camping[$i]['date_ouverture']; ?></span></td>
</tr>
<tr>
<td width="150px" height="25px" valign="top"><span class="Style1"><?php if (($liste_camping[$i]['nb_etoile_camping']) != '0'){ echo '<img src="Images/etoile/etoile'.$liste_camping[$i]['nb_etoile_camping'].'.gif" alt="Camping '.$liste_camping[$i]['nb_etoile_camping'].' étoiles"></img>';}; ?></span></td>
<td class="fiche" width="165px" height="25px" valign="top"><a href="fiche-camping.php?num_camping=<?php echo $liste_camping[$i]['id_camping']; ?>">Fiche complète</a></td>
</tr>
</table>
<?php }
}?>
</div>
<div id="filtre">
<table class="tri" border="0" cellspacing="0" cellpadding="1" valign="top">
<tr>
<form id="frm_ville" name="frm_ville" method="GET" action="annuaire-camping.php">
<td class="ville" width="390px" >Villes
<select name="ville" id="ville" onchange="submit()">
<?php
if ($_GET['ville'] == 'toutes') {
echo '<option value="toutes" selected="selected">Toutes les villes</option>';
} else {
echo '<option value="toutes">Toutes les villes</option>';
}
do {
if ($_GET['ville'] == $row_rs_ville['ville_etab']) {
echo '<option value="'.$row_rs_ville['ville_etab'].'" selected="selected">'.$row_rs_ville['ville_etab'].'</option>';
} else {
echo '<option value="'.$row_rs_ville['ville_etab'].'">'.$row_rs_ville['ville_etab'].'</option>';
}
} while ($row_rs_ville = mysql_fetch_assoc($rs_ville));
?>
</select></td>
<td class="etoile" width="245px">Etoiles
<!--<form id="frm_etoile" name="frm_etoile" method="GET" action="annuaire-campingtest.php">-->
<select name="etoile" id="etoile" onchange="submit()">
<?php
if ($_GET['etoile'] == 'toutes') {
echo '<option value="toutes" selected="selected">Toutes les étoiles</option>';
} else {
echo '<option value="toutes">Toutes les étoiles</option>';
}
do {
if ($_GET['etoile'] == $row_rs_etoile['nb_etoile_camping']) {
echo '<option value="'.$row_rs_etoile['nb_etoile_camping'].'" selected="selected">'.$row_rs_etoile['nb_etoile_camping'].'</option>';
} else {
echo '<option value="'.$row_rs_etoile['nb_etoile_camping'].'">'.$row_rs_etoile['nb_etoile_camping'].'</option>';
}
} while ($row_rs_etoile = mysql_fetch_assoc($rs_etoile));
?>
</select>
</td></form>
<td valign="top" align="right" width="355px"><?php
echo pagination($total_pages,$page_courante);
?></td>
</tr>
</table>
</div>
J'avoue que je débute en php et que je ne vois pas vraiment d'où vient le problème et qu'un peu d'aide ne serait pas de refus.
Bonjour à tous.
Je me suis enfin décidé à mettre mon site en ligne afin d'opérer une période de test et détecter les problèmes.
Et on peut dire que je ne suis pas déçu!!
Au passage, j'heberge mon site chez [url=http://www.phpfrance.com/hebergement/click.php?id=1]infomaniak[/url].
Le problème le plus flagrant est le dernier.
Imaginez une page annuaire de camping qui affiche 8 enregistrements par page avec un système de pagination pour naviguer entre les pages.
Les enregistrements sont afficher aléatoirement et cet ordre est enregistré en session pour eviter que le random ne soit un problème lorsque l'on navigue entre les pages ou que l'on décide de voir le détail de la fiche d'un camping puis que l'on retourne sur la page annuaire.
Deux filtres sont proposés afin de trier les enregistrements par ville et/ou par étoiles.
Mon problème intervient à l'utilisation de ces filtres.
Par exemple je décide de filtrer mes campings par étoile et je choisi " 2 étoile". Je devrais donc voir apparaitre uniquement mes campings 2 étoiles (chose qui fonctionnait en local sous WAMP5 php myadmin).
Le résultat de ce filtre avec mon site hébergé est le suivant:
Les campings 2 étoiles apparaissent en premier mais on peut voir à la suite le reste de mes enregistrements quand aucun filtre n'est appliqué. Comme si on avait fait une impression écran de ma première page avec les 8 enregistrements et qu'une fois le filtre appliqué, on est collé les campings correspondants au filtre par dessus cette première image sans la dissimuler.
J'espère bien m'expliquer.
Est-ce que le problème pourrait venir des sessions? ou alors d'une fonction pas prise en charge par [url=http://www.phpfrance.com/hebergement/click.php?id=1]infomaniak[/url]?
Je vous envoi le code de ma page ou du moins les requetes qui générent d'une part mes listes de filtres par ville et étoile, puis la requete qui va sélectionner les infos à afficher dans la page:
[php]
mysql_select_db($database_conn_develop, $conn_develop);
if ((($_GET['etoile']) != '') && (($_GET['etoile']) != 'toutes')){
$query_rs_ville = "SELECT DISTINCT ville_etab FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND type_etab='camping' AND nb_etoile_camping='".$_GET['etoile']."' AND active=1 ORDER BY ville_etab ASC";
} else {
$query_rs_ville = "SELECT DISTINCT ville_etab FROM tbl_etab WHERE type_etab='camping' AND active=1 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);
mysql_select_db($database_conn_develop, $conn_develop);
if ((($_GET['ville']) != '') && (($_GET['ville']) != 'toutes')){
$query_rs_etoile = "SELECT DISTINCT nb_etoile_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='".$_GET['ville']."' AND active=1 ORDER BY nb_etoile_camping ASC";
} else {
$query_rs_etoile = "SELECT DISTINCT nb_etoile_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND active=1 ORDER BY nb_etoile_camping ASC";
}
$rs_etoile = mysql_query($query_rs_etoile, $conn_develop) or die(mysql_error());
$row_rs_etoile = mysql_fetch_assoc($rs_etoile);
if ((!isset($_SESSION['liste_camping'])) ||
(($_SESSION['ville']) != ($_GET['ville'])) ||
(($_SESSION['etoile']) != ($_GET['etoile']))){
mysql_select_db($database_conn_develop, $conn_develop);
if (($_GET['ville']) == ''){ $_GET['ville'] = 'toutes';}
if (($_GET['etoile']) == ''){ $_GET['etoile'] = 'toutes';}
if ((($_GET['ville'])!='toutes') && (($_GET['etoile'])=='toutes')){
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, active, url_photo4, titre_photo4, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='".$_GET['ville']."' AND active=1 order by rand()";
}
else{
if ((($_GET['etoile'])!='toutes') && (($_GET['ville'])=='toutes')){
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, active, url_photo4, titre_photo4, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND nb_etoile_camping='".$_GET['etoile']."' AND active=1 order by rand()";
}
else{
if (($_GET['ville']=='toutes') && ($_GET['etoile']=='toutes')){
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, active, url_photo4, titre_photo4, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND active=1 order by rand()";
}
else{
$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, active, url_photo4, titre_photo4, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='".$_GET['ville']."' AND nb_etoile_camping='".$_GET['etoile']."' AND active=1 order by rand()";
}
}
}
$_SESSION['ville'] = $_GET['ville'];
$_SESSION['etoile'] = $_GET['etoile'];
$resultat = mysql_query($query_rs_camping);
$i=0;
while($row_rs_camping = mysql_fetch_array($resultat)) {
$liste_camping[$i]['url_photo4'] = $row_rs_camping['url_photo4'];
$liste_camping[$i]['titre_photo4'] = $row_rs_camping['titre_photo4'];
$liste_camping[$i]['id_camping'] = $row_rs_camping['id_camping'];
$liste_camping[$i]['nom_etab'] = $row_rs_camping['nom_etab'];
$liste_camping[$i]['cp_etab'] = $row_rs_camping['cp_etab'];
$liste_camping[$i]['ville_etab'] = $row_rs_camping['ville_etab'];
$liste_camping[$i]['date_ouverture'] = $row_rs_camping['date_ouverture'];
$liste_camping[$i]['nb_etoile_camping'] = $row_rs_camping['nb_etoile_camping'];
$i = $i + 1;
}
$_SESSION['liste_camping'] = $liste_camping;
$nb_entrees = count($liste_camping);
$entrees_par_page = 8;
$total_pages = ceil($nb_entrees/$entrees_par_page);
}
else{
$liste_camping = $_SESSION['liste_camping'];
$nb_entrees = count($liste_camping);
$entrees_par_page = 8;
$total_pages = ceil($nb_entrees/$entrees_par_page);
}
[/php]
et le code de ma page qui renvoit les informations:
[php]
<div id="contenu">
<?php
for($i=$start;$i<$page_courante*$entrees_par_page;$i++){ if ($liste_camping[$i]['id_camping'] != '') {
?>
<table class="tableau" height="110px" width="461px" border="0" cellspacing="0" cellpadding="0" background="Images/annuaire/vignette-annuaire.gif">
<tr>
<td class="photo" rowspan="4" height="97px" width="140px" ><img src="<?php echo $liste_camping[$i]['url_photo4']; ?>" alt="<?php echo $liste_camping[$i]['titre_photo4']; ?>" title="<?php echo $liste_camping[$i]['titre_photo4']; ?>"/></td>
<td class="nom" colspan="2" width="315px" height="30px"><a href="fiche-camping.php?num_camping=<?php echo $liste_camping[$i]['id_camping']; ?>"><?php echo $liste_camping[$i]['nom_etab']; ?></a></td>
</tr>
<tr>
<td width="315px" height="24px" colspan="2"><span class="Style1"><?php echo $liste_camping[$i]['cp_etab']; ?> <?php echo $liste_camping[$i]['ville_etab']; ?></span></td>
</tr>
<tr>
<td colspan="2" width="315px" height="18px" valign="top"><span class="Style1"><?php echo $liste_camping[$i]['date_ouverture']; ?></span></td>
</tr>
<tr>
<td width="150px" height="25px" valign="top"><span class="Style1"><?php if (($liste_camping[$i]['nb_etoile_camping']) != '0'){ echo '<img src="Images/etoile/etoile'.$liste_camping[$i]['nb_etoile_camping'].'.gif" alt="Camping '.$liste_camping[$i]['nb_etoile_camping'].' étoiles"></img>';}; ?></span></td>
<td class="fiche" width="165px" height="25px" valign="top"><a href="fiche-camping.php?num_camping=<?php echo $liste_camping[$i]['id_camping']; ?>">Fiche complète</a></td>
</tr>
</table>
<?php }
}?>
</div>
<div id="filtre">
<table class="tri" border="0" cellspacing="0" cellpadding="1" valign="top">
<tr>
<form id="frm_ville" name="frm_ville" method="GET" action="annuaire-camping.php">
<td class="ville" width="390px" >Villes
<select name="ville" id="ville" onchange="submit()">
<?php
if ($_GET['ville'] == 'toutes') {
echo '<option value="toutes" selected="selected">Toutes les villes</option>';
} else {
echo '<option value="toutes">Toutes les villes</option>';
}
do {
if ($_GET['ville'] == $row_rs_ville['ville_etab']) {
echo '<option value="'.$row_rs_ville['ville_etab'].'" selected="selected">'.$row_rs_ville['ville_etab'].'</option>';
} else {
echo '<option value="'.$row_rs_ville['ville_etab'].'">'.$row_rs_ville['ville_etab'].'</option>';
}
} while ($row_rs_ville = mysql_fetch_assoc($rs_ville));
?>
</select></td>
<td class="etoile" width="245px">Etoiles
<!--<form id="frm_etoile" name="frm_etoile" method="GET" action="annuaire-campingtest.php">-->
<select name="etoile" id="etoile" onchange="submit()">
<?php
if ($_GET['etoile'] == 'toutes') {
echo '<option value="toutes" selected="selected">Toutes les étoiles</option>';
} else {
echo '<option value="toutes">Toutes les étoiles</option>';
}
do {
if ($_GET['etoile'] == $row_rs_etoile['nb_etoile_camping']) {
echo '<option value="'.$row_rs_etoile['nb_etoile_camping'].'" selected="selected">'.$row_rs_etoile['nb_etoile_camping'].'</option>';
} else {
echo '<option value="'.$row_rs_etoile['nb_etoile_camping'].'">'.$row_rs_etoile['nb_etoile_camping'].'</option>';
}
} while ($row_rs_etoile = mysql_fetch_assoc($rs_etoile));
?>
</select>
</td></form>
<td valign="top" align="right" width="355px"><?php
echo pagination($total_pages,$page_courante);
?></td>
</tr>
</table>
</div>
[/php]
J'avoue que je débute en php et que je ne vois pas vraiment d'où vient le problème et qu'un peu d'aide ne serait pas de refus.