Zeuz
-
Modifié par jordane45 le 9/08/2015 à 03:47
jordane45
Messages postés38308Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 2024
-
9 août 2015 à 16:16
Bonjour à tous,
Je suis débutant php, je préfère le préciser. JE n'ai eu aucune base et j'ai appris par moi-meme. Donc déjà, mes excuses pour le manque de clareté. :)
J'ai un petit souci avec une page de recherche dans des db's.
Je ne comprends pas d'ou cela peut venir. Et il ne me reste plus bcp de cheveux :)
Il s'agit d'un site de profils et casting.
J'ai donc 4 menus déroulants et un bouton "Rafraichir" qui permet de filtrer une liste de membres selon ces critères :
- Menu 1 : Silouhette, portrait, hobby
- Menu 2 : se rempli selon le menu 1
- et menu 3 se rempli selon le menu 2
Une fois rafraichi, un 4 ieme menu déroulant apparait devant les 3 autres et on peut y choisir "et" ou "ou" et ainsi pouvoir refaire un choix et filtrer à nouveau.
Voici la page. je pense que l'erreur est située au niveau de la condition du "clic"
Comme je dois re-soumettre le form lorsque je change mes menus 2 et 3, on dirait que le serveur interprête le clic comme étant cliqué à chaque fois... je ne sais pas comment faire en sorte de différencier le fait de cliquer et le fait de sousmettre le form pour le remplissage de menu déroulant. Pour info, dans la page ces menus s'appellent "Search", "Search2", "Search3" et "choice"
Merci d'avance pour votre aide,
Jonathan.
<?php
include ('DB_connect.php');
$username=$_COOKIE['username'];
if(!empty($_POST['filter_global']) )
$filter_global=$_POST['filter_global'];
if(!empty($_POST['step']))
$step=$_POST['step'];
else
$step=0;
if(isset($_POST['Rafraichir']) && $_POST['Rafraichir']=='Rafraichir') {
$step++;
if($_POST['Search3']<>""){
$filter=$_POST['Search2'];
$value=$_POST['Search3'];
$filter_temp[$step]='`'.$filter.'`' . '="' .$value. '"';
}
if (isset($_POST['choice'])){
if($_POST['choice']=='et')
$filter_global=$filter_global. ' AND ' .$filter_temp[$step];
if($_POST['choice']=='ou')
$filter_global=$filter_global. ' OR ' .$filter_temp[$step];
}else
$filter_global=$filter_temp[$step];
}
$_POST['Search3'] = "";
$_POST['Rafraichir'] = "";
?>
<form method="POST" action="archi.php?page=agence_membre_recherche" enctype="multipart/form-data" >
<table width="99%" border="0" cellspacing="0" cellpadding="0">
<tr >
<td width="175"> </td>
<td colspan="4"><?php echo $step ; echo $filter_global; ?></td>
<td width="103"> </td>
<td width="160"> </td>
</tr>
<tr>
<td valign="top"> </td>
<td width="91"> </td>
<td width="90"> </td>
<td width="91"> </td>
<td width="91"> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td width="175" rowspan="4" valign="top"><?php include('agence_menu.php'); ?></td>
<td>
<?php
if ($step<>0){ ?>
<select name="choice" >
<option><?php if (isset($_POST['choice'])) echo $_POST['choice'] ; else echo '' ; ?></option>
<option value='et' >et</option>
<option value='ou' >ou</option>
</select>
<?php } ?>
</td>
<td >
<select name="Search" onchange="this.form.submit()" >
<option><?php if (isset($_POST['Search'])) echo $_POST['Search'] ; else echo '' ; ?></option>
<option value='Silouhette' >Silouhette</option>
<option value='Portrait' >Portrait</option>
<option value='Hobby' >Hobby</option>
</select>
</td>
<td>
<select name="Search2" onchange="this.form.submit()" >
<option><?php if (isset($_POST['Search2'])) echo $_POST['Search2'] ; else echo '' ; ?></option>
<?php if ($_POST['Search']=="Silouhette") { ?>
<option value='Taille' >Taille</option>
<option value='Tour de taille' >Tour de taille</option>
<option value='Tour de hanche' >Tour de hanche</option>
<option value='Tour de poitrine' >Tour de poitrine</option>
<option value='Poids' >Poids</option>
<option value='Pointure' >Pointure</option>
<?php } if ($_POST['Search']=="Portrait"){ ?>
<option value='Couleur des yeux' >Couleur des yeux</option>
<option value='Couleur des cheveux' >Couleur des cheveux</option>
<option value='Couleur de peau' >Couleur de peau</option>
<option value='Taille des cheveux' >Taille des cheveux</option>
<option value='Type de cheveux' >Type de cheveux</option>
<option value='Moustache' >Moustache</option>
<option value='Oreille percee' >Oreille percee</option>
<option value='Barbe' >Barbe</option>
<option value='Piercing' >Pirecing</option>
<option value='Lentilles' >Lentiles</option>
<?php } if ($_POST['Search']=="Hobby"){ ?>
<option value='Instrument' >Instrument</option>
<option value='Sport' >Sport</option>
<option value='Chant' >Chant</option>
<option value='Theatre' >Theatre</option>
<?php } ?>
</select>
</td>
<td>
<select name="Search3" >
<option><?php if (isset($_POST['Search3'])) echo $_POST['Search3'] ; else echo '' ; ?></option>
<?php
if ($_POST['Search2']=="Taille"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Taille'];?>' ><?php echo $data['Taille'];?></option>
<?php }}
if ($_POST['Search2']=="Tour de taille"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Tour de taille'];?>' ><?php echo $data['Tour de taille'];?></option>
<?php }}
if ($_POST['Search2']=="Tour de hanche"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Tour de hanche'];?>' ><?php echo $data['Tour de hanche'];?></option>
<?php }}
if ($_POST['Search2']=="Tour de poitrine"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Tour de poitrine'];?>' ><?php echo $data['Tour de poitrine'];?></option>
<?php }}
if ($_POST['Search2']=="Poids"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Poids'];?>' ><?php echo $data['Poids'];?></option>
<?php }}
if ($_POST['Search2']=="Pointure"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Pointure'];?>' ><?php echo $data['Pointure'];?></option>
<?php }}
if ($_POST['Search2']=="Couleur des yeux") {
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Couleur des yeux'];?>' ><?php echo $data['Couleur des yeux'];?></option>
<?php }}
if ($_POST['Search2']=="Couleur des cheveux"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Couleur des cheveux'];?>' ><?php echo $data['Couleur des cheveux'];?></option>
<?php }}
if ($_POST['Search2']=="Couleur de peau"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Couleur de peau'];?>' ><?php echo $data['Couleur de peau'];?></option>
<?php }}
if ($_POST['Search2']=="Taille des cheveux"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Taille des cheveux'];?>' ><?php echo $data['Taille des cheveux'];?></option>
<?php }}
if ($_POST['Search2']=="Type de cheveux"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Type de cheveux'];?>' ><?php echo $data['Type de cheveux'];?></option>
<?php }}
if ($_POST['Search2']=="Moustache"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Moustache'];?>' ><?php echo $data['Moustache'];?></option>
<?php }}
if ($_POST['Search2']=="Oreille percee"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Oreille percee'];?>' ><?php echo $data['Oreille percee'];?></option>
<?php }}
if ($_POST['Search2']=="Barbe"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Barbe'];?>' ><?php echo $data['Barbe'];?></option>
<?php }}
if ($_POST['Search2']=="Piercing"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Piercing'];?>' ><?php echo $data['Piercing'];?></option>
<?php }}
if ($_POST['Search2']=="Lentilles"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Lentilles'];?>' ><?php echo $data['Lentilles'];?></option>
<?php }}
if ($_POST['Search2']=="Instrument"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Instrument'];?>' ><?php echo $data['Instrument'];?></option>
<?php }}
if ($_POST['Search2']=="Sport"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Sport'];?>' ><?php echo $data['Sport'];?></option>
<?php }}
if ($_POST['Search2']=="Chant"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Chant'];?>' ><?php echo $data['Chant'];?></option>
<?php }}
if ($_POST['Search2']=="Theatre"){
$query = mysql_query ("SELECT * FROM membres");
$i=0;
while ($data = mysql_fetch_array($query)) {
$i++; ?>
<option value ='<?php echo $data['Theatre'];?>' ><?php echo $data['Theatre'];?></option>
<?php }} ?>
</select>
</td>
<td>
<input type="hidden" name="step" id="step" value=<?php echo $step; ?> />
<input type="hidden" name="filter_global" id="filter_global" value="<?php echo $filter_global; ?> " />
<input type="submit" name="Rafraichir" value="Rafraichir" />
</td>
<td><a href="archi.php?page=agence_contact_selection<?php echo $data['Id']; ?>">Contacter la sélection</a></td>
</tr>
<tr>
<td height="2"></td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan="5">
<table width="630">
<?php
if ($step<>0)
$req = "SELECT * FROM membres where " . $filter_global;
else
$req = "SELECT * FROM membres";
$query = mysql_query($req);
$j=0;
while (($data = mysql_fetch_array($query))) {
$j++;
$id[$i] = $data['Id'];
$user[$i] = $data['Username'];
$nom[$i] = $data['Nom'];
$prenom[$i] = $data['Prenom'];
$date[$i] = $data['Date de naissance'];
$sexe[$i] = $data['Sexe'];
?>
<tr>
<td width="101" align="left"><?php echo $nom[$i]; ?></td>
<td width="82" align="left"><?php echo $prenom[$i]; ?></td>
<td width="101" align="left"><?php echo $date[$i]; ?></td>
<td width="95" align="left"><?php echo $sexe[$i]; ?></td>
<td width="227"><a href="archi.php?page=agence_contact&id=<?php echo $data['Id']; ?>">Contacter</a> - <a href="archi.php?page=agence_fiche&id=<?php echo $data['Id']; ?>">Voir Fiche</a></td>
</tr>
<?php }
?>
</table>
</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</form>
EDIT : Ajout du LANGAGE dans les balises de code.
Merci d'y penser à l'avenir.
jordane45
Messages postés38308Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 20244 705 9 août 2015 à 03:56
Bonjour,
1 - tu utilises l'ancienne extension Mysql_* ... considérée comme obsolète.
Je t'invite à passer à mysqli ou (je préfère...) la PDO.
2 - Pourquoi as tu 20 fois la même requête ? (SELECT * FROM membres)
3 - Plutot que de faire 20 IF .... (
if ($_POST['Search2']=="MachinTruc..."){
)penses à utiliser un SWITCH.
cela rendra ton code plus lisible
4 - ... plutôt que d'utiliser du SUBMIT (ce qui impose un refresh de ta page....) commence donc à regarder du côté de l' AJAX ( javascript + php ) (idéalement en JQUERY )
PS: Pense également à récupérer tes variables 'proprement' AVANT de les utiliser via des ISSET (ou !empty) et l'écriture TERNAIRE.
Par exemple :
$Search2 = !empty($_POST['Search2']) ? $_POST['Search2'] : NULL;
switch($Search2) {
case "Sport" :
//ici ton code... pour sport
break;
case "Chant" :
//ici ton code...pour chant
break;
default:
//ici le code si aucune valeur correspondante
break;
}