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 :

Creation d'une requete de recherche [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut Creation d'une requete de recherche
    slt à tous,
    je me tourne vers vous car j'ai un petit blem pour construire ma requête.
    la table :
    id | type |ville .....
    1 - appartement - paris
    2 - maison - bordeaux
    3 - maison - Marseille
    4 - bureaux - lille ....
    5 - appartement - paris

    la recherche effectue en fonction des checkbox cochées ou non par l'internaute dans un formulaire.Les checkbox se nomment :
    case1 Appartement
    case2 maison
    case3 bureau ....

    le blem c'est quel instruction pour que les choix du formulaire soit pris en compte
    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = mysql_query("SELECT * FROM latable WHERE ville = $ville  AND type= $case1 OR type= $case2 OR type= $case3 ...") or die("Erreur SQL !");
    mais cela ne fonctionne pas.

    Y a t'il une instruction style ET/OU AND/OR ?

    Merci de votre aide

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Quand tu mélanges les AND et les OR, ne pas oublier les parenthèses car A AND B OR C n'est pas identique à A AND (B OR C).

    Ce qui serait mieux que d'utiliser la série de OR, c'est d'utiliser IN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT -- les colonnes nécessaires et pas étoile ! 
    FROM latable 
    WHERE ville = '$ville'  
    	AND type IN('$case1', '$case2', '$case3')
    Par ailleurs, vous devriez revoir votre modèle de données en externalisant les types et les villes et éviter la guerre des étoiles !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    merci de ton aide,
    je ne connait pas bien cette instruction IN mais ce me parait dur a mettre en place étant donnée que je 7 case à coché.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT -- les colonnes nécessaires et pas étoile ! 
    FROM latable 
    WHERE ville = '$ville'  
    	AND type IN('$case1', '$case2', '$case3', '$case4', '$case5', '$case6', '$case7')
    le souci comme c'est des cases a cocher, dans l'exemple ci dessus si l'internaute na pas coché toutes les cases cela ne fonctionne pas.
    cela veux dire que je doit faire un IN pour chaque cas soit 5047 cas

    ça va être dur...

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il faut que ton programme paramètre la requête en fonction des cases à cocher ou non.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    + de ce qui a été dit par CinePhil.
    si ta requête sur un seul choix c'est bon y a pas de problème , sinon sur plusieurs choix:
    ta requête doit être constitué sous forme de phrase ou chaine de caractères avec concaténation en cas de chaque choix de plus.
    sinon tu récupère chaque coche dans un tableau exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $tab=$_POST['choix1'];
    $tab=$_POST['choix2'];
    .......................
    ensuite tu constitue ta requête

  6. #6
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    ok je vois la manip

    Merci les gars.

    Cordialement

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

Discussions similaires

  1. Création d'une requête de non correspondance
    Par angélique dans le forum Access
    Réponses: 2
    Dernier message: 18/07/2006, 16h50
  2. Creation d'une requete
    Par leloup84 dans le forum Requêtes
    Réponses: 10
    Dernier message: 21/02/2006, 15h00
  3. Réponses: 5
    Dernier message: 25/12/2005, 15h17
  4. Amélioration d'une requete de recherche
    Par sacrejohn dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/10/2005, 11h36
  5. optimisation d'une requete de recherche
    Par moog dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/04/2005, 16h58

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