[Résolu] isset qui veut pas marché :(

isset qui veut pas marché :( [Résolu] - PHP - Programmation

Marsh Posté le 31-12-2005 à 15:13:24    

Bonjour, j'ai un ptit souci avec mon code de recherche multi-critères, et je voit pas d'ou ça peut venir. Pourtant le code est très simple, j'ai un formulaire:  

Citation :


<form action="resultatrecherche.php" method="post" >
      nom de l'adherent
      <input type="text" name = "nom" /><br />
      prenom
      <input type="text" name = "prenom" /><br />
      le login IUT
      <input type="text" name = "logiut" /><br />
      l'adresse email
      <input type="text" name = "mail" /><br />
      <input type="submit" value="envoyer" />
</form>


 
et puis ma page resultatrecherche.php avec le code suivant:

Citation :


 <?php
           $sql = "SELECT numAdherent FROM `adherent` WHERE ";
           $i = 0;
           if(isset($_POST['nom']))
           {
               $sql.= "`NomAdherent` = '".$_POST['nom']."'";
               $i++;
           }
           if(isset($_POST['prenom']))
           {
               if($i !=0)
                     $sql.= " AND `PrenomAdherent` = '".$_POST['prenom']."'";
               else
               {
                     $sql.= "`PrenomAdherent` = '".$_POST['prenom']."'";
                     $i++;
               }
           }
           if(isset($_POST['logiut']))
           {
               if($i !=0)
                     $sql.= " AND `LoginEtudAdherent` = '".$_POST['logiut']."'";
               else
               {
                     $sql.= "`LoginEtudAdherent` = '".$_POST['logiut']."'";
                     $i++;
               }
           }
           if(isset($_POST['mail']))
           {
               if($i !=0)
                     $sql.= " AND `emailAdherent ` = '".$_POST['mail']."'";
               else
               {
                     $sql.= "`emailAdherent ` = '".$_POST['mail']."'";
                     $i++;
               }
           }
           $sql.= ";";
           echo $sql;
      ?>


 
Le souci c'est que les isset ne sont pas pris en compte et je me retrouve donc avec des requêtes du style :

Citation :


SELECT numAdherent FROM `adherent` WHERE `NomAdherent` = 'pit' AND `PrenomAdherent` = '' AND `LoginEtudAdherent` = 'log' AND `emailAdherent ` = '';  


Pas terrible pour rechercher :s
 
Si qqn peut me donner un ti coup d'pouce :D
Merci bien.


Message édité par clam8692 le 31-12-2005 à 16:10:00
Reply

Marsh Posté le 31-12-2005 à 15:13:24   

Reply

Marsh Posté le 31-12-2005 à 15:16:45    

les variables sont affectés mais elles sont vides.
 
Utilise empty pour savoir si elles sont vides ou pas


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 31-12-2005 à 15:18:12    

oki je test sa :)
Ouaip sa marche. J'avoue j'ai été un peu couillon sur s'coup la, mais ça fait perpette que j'ai pas touché au php :P
Bon réveillon et bonne année !!


Message édité par clam8692 le 31-12-2005 à 15:20:21
Reply

Marsh Posté le 02-01-2006 à 11:08:11    

Par ailleurs je pense que tu pourrais alléger ton code en faisant ça :
 


 <?php
           $sql = "SELECT numAdherent FROM `adherent` WHERE ";
           $i = 0;
           if(isset($_POST['nom']))
           {
               $sql.= "`NomAdherent` = '".$_POST['nom']."'";
               $i=1;
           }
           if(isset($_POST['prenom']))
           {
               if($i == 1) {
                     $sql.= " AND ";
               }
               $sql.= "`PrenomAdherent` = '".$_POST['prenom']."'";
               $i=1;
            }
           if(isset($_POST['logiut']))
           {
               if($i == 1) {
                     $sql.= " AND ";
               }
               $sql.= "`LoginEtudAdherent` = '".$_POST['logiut']."'";
               $i=1;
           }
           if(isset($_POST['mail']))
           {
               if($i == 1) {
                     $sql.= " AND ";
               }
               $sql.= "`emailAdherent ` = '".$_POST['mail']."'";
               $i=1;
           }
           $sql.= ";";
           echo $sql;
      ?>


 
Maintenant je te conseillerais même autre chose, que je vais te soumettre dans un nouveau post le temps de le coder :D
 
Edit : Au fait, il ne faut pas utiliser isset tout seul, mais empty aussi, car tes valeurs seront passée même si elles sont vides.


Message édité par Dj YeLL le 02-01-2006 à 11:09:53

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 02-01-2006 à 11:15:01    

Voilà :
 

<?php
           $whereList = array();
           if(!empty(trim($_POST['nom']))) {
               $whereList[] = "`NomAdherent` = '".$_POST['nom']."'";
           }
           if(!empty(trim($_POST['prenom']))) {
               $whereList[] = "`PrenomAdherent` = '".$_POST['prenom']."'";
           }
           if(!empty(trim($_POST['logiut']))) {
               $whereList[] = "`LoginEtudAdherent` = '".$_POST['logiut']."'";
           }
           if(!empty(trim($_POST['mail']))) {
               $whereList = "`emailAdherent ` = '".$_POST['mail']."'";
           }
           $where = implode(' AND ',$whereList);
           $sql = 'SELECT numAdherent FROM `adherent` WHERE ' . $where;
?>


 
Je l'ai fais de tête donc à vérifier si je n'ai pas fais d'erreur.


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 05-01-2006 à 12:44:49    

Ok merci beaucoup :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed