IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

recherche de plusieurs champs [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut recherche de plusieurs champs
    bonjouuuuuur


    alors voila, j'ai 3 champs appartenant a une bdd, age, taille, couleur et je voudrais faire une recherche par champs grace a des formulaires....j'ai qu'a faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $taille=$_POST['taille'];
    $age=$_POST['age'];
    $couleur=$_POST['couleur'];
    mysql_query("select * from utilisateur where
     age='$age' and taille='$taille' and couleur='$couleur'");?>


    sauf que je voudrais pouvoir lancer la recherche meme si $age et $couleur sont vide...

    comment faire siouplais ? -en n'utilisant qu'une seule requete comme c est le cas ici...


    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Par défaut
    Tu peux construire ta requête en fonction des valeurs des champs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    $requete = 'select * from utilisateur ';
    $condition = '';
    $and = '';
    if(isset($_POST['taille']) && $_POST['taille'] <> '') {
     $condition .= $and.'taille="'.$_POST['taille'].'"';
     $and = ' AND ';
    }
     
    if(isset($_POST['age']) && $_POST['age'] <> '') {
     $condition .= $and.'age="'.$_POST['age'].'"';
    $and = ' AND ';
    }
     
    if(isset($_POST['couleur']) && $_POST['couleur'] <> '') {
     $condition .= 'couleur="'.$_POST['couleur'].'"';
     $and = ' AND ';
    }
     
    if($condition <> '') {$requete.=' WHERE '.$condition;}
    mysql_query($requete);

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    ou remplacer le de ta requete par un En clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_query("select * from utilisateur where
     age LIKE '%$age%' and taille LIKE '%$taille%' and couleur LIKE '%$couleur%'");?>
    Pour l'info : LIKE regarde dans le champ si la valeur recherchée est présente (et non si le champ vaut entièrement la valeur de la variable, ce que fait le égal )
    Donc si ta variable est vide il ne recherche rien dans ton champ

  4. #4
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    oui merci jibouze mais en fait ca n'etait qu'un exemple.....j'ai plus de 17 champs recherche!

    donc par cette methode ca me parait pas tres judicieux



    ????ha ca marche avec like???


    super! merci beaucoup!!!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Par défaut
    Et bien si tes champs de formulaire sont tous correctement formatés comme les champs de ta base, tu peux essayer de faire une boucle. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    foreach($_POST as $nom => $valeur) {
     $condition .= $and.$nom ." LIKE '%$variable%' ";
     $and = ' AND ';
    }
    ...
    Bien sûr, il faut exclure les champs de ton formulaire inutiles pour la recherche, comme le bouton submit par exemple.
    Tu ajoutes donc un if dans ton foreach :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    foreach(...
    if($nom <> "nom_du_bouton_submit") {
      ...
    }
    ...
    Je ne sais pas si c'est très clair !

  6. #6
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    wow merci pour tout ces conseils

    bon, je vais potasser la derniere reponse mais c est tres bien!



    vraiment sympa!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête a/ recherche dans plusieurs champs de la table
    Par 810mcu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/11/2007, 20h05
  2. Filtrer un formulaire - Recherche dans plusieurs champs
    Par LaurentD dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/11/2007, 11h19
  3. [Débutant]Recherche sur plusieurs champs
    Par Touareg dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/03/2007, 14h04
  4. [SQL Server] rechercher dans plusieurs champs d'une table
    Par houla! dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/08/2006, 09h37
  5. Réponses: 2
    Dernier message: 30/11/2004, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo