Condition ne fonctionne pas.

Fermé
Zeuz - Modifié par jordane45 le 9/08/2015 à 03:47
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 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.

2 réponses

jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 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;

}



0
Zeuz218 Messages postés 1 Date d'inscription samedi 8 août 2015 Statut Membre Dernière intervention 9 août 2015
9 août 2015 à 10:26
Bonjour Jordane. Merci pour ta réponse.
Tu as raison, mon code est celui d'un débutant et je vois ou tu veux en venir avec le switch.
Excellent.

Je teste cela ce matin et te reviens.

Encore merci.
0
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
9 août 2015 à 16:16
Une fois ton code corrigé et remis en forme n'hésites pas à revenir nous voir si tu rencontres encore des soucis.
0