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 :

Requête et logique [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Par défaut Requête et logique
    Bonjour,
    J'ai un pb pour faire une requete. J'ai un page php qui contient un formulaire avec des cases a cocher. Je veux afficher des articles en fonction des cases cochés.
    Pour etre clair ma BD possede une table article qui contient des attributs Type et Sexe. Je veux pouvoir recuperer la liste des articles correspondant au cases coché.
    Le pb c'est que je n'arrive pas a trouver la bonne requete. Il y a 4 cases pour le choix du type, et 3 cases pour le choix du sexe.

    J'ai tester ca entre autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $requete = " SELECT RefArticle 
    FROM ARTICLE 
    WHERE (Type='$Choix1' or Type='$Choix2' or Type='$Choix3' or Type='$Choix4') 
    AND (Sexe='$Choix5' or Sexe='$Choix6' or Sexe='$Choix7').
    Mais ca ne fonctionne que si l'utilisateur choisis un type ET un sexe. J'ai essayé plein de combinaison, sans resultat. Help plz !

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 814
    Billets dans le blog
    14
    Par défaut
    Et en remplaçant le AND par un OR ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 averti
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Par défaut
    Si je met un OR entre les 2 expressions, cela donne trop de resultats. j'obtiens tout les articles du type selectionné(tout sexe confondu) + tout les articles du sexe sélectionné (tout type confondu),
    alors qu'il me faut les articles du type ET du sexe.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 814
    Billets dans le blog
    14
    Par défaut
    Alors il faut préparer la requête en PHP en fonction de ce qui est choisi par l'utilisateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $requete = "SELECT RefArticle 
    FROM ARTICLE 
    WHERE 1";
     
    If(isset($choix1))
    {
      $requete .= " AND Type = '$choix1'";
    }
     
    //idem pour les autres choix
    Ainsi ne figureront dans la requête que les choix de l'utilisateur.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 averti
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Par défaut
    Hey hey, ca m'a l'air bien, je teste ca.

  6. #6
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Par défaut
    L'dée est bonne, mais je n'y arrive toujours pas.

    le pb c'est ma requete en fonction de certain choix peut ressembler a cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT RefArticle FROM ARTICLE WHERE ( or Type="VeloVTT" or Type="VeloEnfant") AND ( or Sexe="F" )
    Comment faire pour mettre remplir les "vides" par qqchose qui n'a aucun effet sur la requete.

    Voici ou j'en suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     if ( isset( $_POST['Choix1']) or isset( $_POST['Choix2']) or isset( $_POST['Choix3']) or isset( $_POST['Choix4']) or isset( $_POST['Choix5'])or isset( $_POST['Choix6'])or isset( $_POST['Choix7'])) {
     
    			 	if (isset( $_POST['Choix1'])) { $Choix1=' Type="'.$_POST['Choix1'].'"' ; } else { $Choix1="";}
    				if (isset( $_POST['Choix2'])) { $Choix2=' or Type="'.$_POST['Choix2'].'"' ; } else $Choix2=" " ;
    				if (isset( $_POST['Choix3'])) { $Choix3=' or Type="'.$_POST['Choix3'].'"' ; } else $Choix3="" ;
    				if (isset( $_POST['Choix4'])) { $Choix4=' or Type="'.$_POST['Choix4'].'"' ; } else $Choix4=" " ;
    				if (isset( $_POST['Choix5'])) { $Choix5=' Sexe="'.$_POST['Choix5'].'"' ; } else $Choix5=" " ;
    				if (isset( $_POST['Choix6'])) { $Choix6=' or Sexe="'.$_POST['Choix6'].'"' ; } else $Choix6=" " ;
    				if (isset( $_POST['Choix7'])) { $Choix7=' or Sexe="'.$_POST['Choix7'].'"' ; } else $Choix7=" " ;
     
     
    				if ($requete = " SELECT RefArticle FROM ARTICLE WHERE ($Choix1 $Choix2  $Choix3  $Choix4) AND ($Choix5  $Choix6  $Choix7)

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

Discussions similaires

  1. Suite logique de mois dans requête
    Par Invité dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 30/03/2008, 19h06
  2. Requête logique Access !
    Par tinose dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/12/2007, 08h25
  3. [VBA]Execution de Requêtes automatique et test logique
    Par nicacc dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/08/2007, 18h31
  4. Condition logique sur une requête
    Par NiKoS29 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 25/07/2007, 15h40
  5. Réponses: 2
    Dernier message: 09/03/2006, 14h28

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