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 :

requete & recherche [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut requete & recherche
    Bonjour,
    j'ai crée un outil de recherche avec plusieurs champs, aucun de ces champs n'est obligatoire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM table WHERE ville='$ville' AND type='$type' ORDER BY id DESC LIMIT 0,3
    je voudrai faire en sorte que lorsqu'on fait une recherche on est pas obliger de tout remplir, il suffit de remplir un champ pour avoir un resultat.

    j'ai essayé de remplacer AND par OR mais on ne peut pas avoir un resultat preci avec plusieurs critère

    avez vous une idée?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Bonjour dans ce cas, tu fais un test sur tes critères pour construire ta requete.

    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $requete="select * from table where 1=1 ";
    if(!empty($critere1))
    {
       $requete.=" and critere1='".$critere1."'";
    }
    if(!empty($critere2))
    {
       $requete.=" and critere2='".$critere2."'";
    }
    echo $requete;

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut
    merci de votre réponse, le pb c'est que j'ai 4 critères, donc il doit y avoir 16 possibilité ..

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Ben non tu fais quatre conditions, la requete ne sera concaténé qu'a chaque fois qu'un critère est rempli.
    En reprenant mon exemple:
    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
    $requete="select * from table where 1=1 ";
    if(!empty($critere1))
    {
       $requete.=" and critere1='".$critere1."'";
    }
    if(!empty($critere2))
    {
       $requete.=" and critere2='".$critere2."'";
    }
    if(!empty($critere3))
    {
       $requete.=" and critere3='".$critere3."'";
    }
    if(!empty($critere4))
    {
       $requete.=" and critere4='".$critere4."'";
    }
    echo $requete;
    Si tu n'as que les criteres 3 et 4 renseignés, cela te donnera la requete:
    SELECT * FROM table where critere3="une_valeur" and critere4="une_autre_valeur"

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut
    whaouuu ! j'ai rien compris mais sa a marché... une derniere question le where 1=1 qu'est ce que sa signifie !

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Content que ca marche !
    Le "1=1", c'est, je le reconnais, pas très propre. En fait ca permet de pouvoir rajouter des bouts de requete de type
    " and critere1=XX"
    " and critere2=XXX"
    etc...
    en conservant une syntaxe sql correcte. le "1=1" est une condition toujours vraie donc qui ne change rien à la requete si ce n'est de pouvoir rajouter des "and=" derriere sans se soucier de la syntaxe.
    Sans celà, j'aurais une requete de type:
    select * from table where and critere1=critere1, et le "where and" est syntaxiquement faux. Pour faire les choses proprement, il faudrait tester le premiere élément que l'on ajoute à la requete de base et ne pas y mettre le "and".

    Je sais pas si j'ai été très clair ^^

    Content que ca fonctionne pour toi en tout cas.

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

Discussions similaires

  1. Requete et recherche
    Par jojo57 dans le forum Access
    Réponses: 6
    Dernier message: 17/05/2006, 13h54
  2. Requete pour rechercher tous les parents
    Par richard038 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/11/2005, 21h37
  3. Amélioration d'une requete de recherche
    Par sacrejohn dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/10/2005, 11h36
  4. optimisation d'une requete de recherche
    Par moog dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/04/2005, 16h58
  5. requete de recherche ? ou autre?
    Par Little-Freud dans le forum Access
    Réponses: 13
    Dernier message: 26/10/2004, 19h32

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