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 :

Comparaison avec un champ à multiples valeurs. [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
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 40
    Par défaut Comparaison avec un champ à multiples valeurs.
    Bonjour à vous,

    Je suis actuellement en stage dans une boite pour développer un logiciel métier avec php/mysql.

    Pour se connecter à se logiciel, la boîte dispose déjà d'un SSO. Ils m'ont demandé de faire des menus différents suivant le groupe de l'utilisateur enregistré. Pour cela ils m'ont demandé d'utilisé la variable [GROUPE] de $_SERVER. Jusqu'à la pas de souci, j'ai fait mes différentes tables de menu suivant les groupes possibles, mais au moment d'effectuer la comparaison entre [GROUPE] et mon groupeId de mes tables, je me suis rendu compte qu'ils avaient chacun plusieurs valeur dans [GROUPE] (entre 5 à 8 valeurs suivant les membres ex:[GROUPE] => (toto;tutu;titi;toto-manager;blabla)

    Malgré plusieurs recherche sur internet, je n'ai pas trouvé de solution viable.

    Quelqu'un pourrait-il m'apporter quelques pistes ou indications sur la façon de comparer mon champ avec un champ contenant plusieurs valeurs ?

    ex :

    j'ai ma table groupe, avec un champ groupeId et un champ groupeNom.
    groupeId - groupeNom
    1 - voiture
    2 - chaise
    3 - maison

    et je veux comparer groupeNom avec $_SERVER[GROUPE] = toto;tutu;maison;titi; sachant que là le résultat doit être positif puisqu'il fait parti du groupe "maison".


    Cordialement,

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    => SQL : l'opérateur IN
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE NomChamp IN (valeur1, valeur2, ... , valeurX )

    Il faudra remplacer les ; par des ,.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $groupe = 'toto;tutu;titi;toto-manager;blabla';
     
    $groupe_list = str_replace(';', ',', $groupe);
    $sql = "SELECT ......... WHERE NomChamp IN ( ".$groupe_list." )";

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    les valeurs sont des chaines

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $groupe = 'toto;tutu;titi;toto-manager;blabla';
    $groupe_list= explode(';',$groupe);
    $sql = "SELECT ......... WHERE NomChamp IN ('".implode("', '", $groupe_list)."') ";

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 40
    Par défaut Merci
    Merci pour vos réponses ça marche pour certaines valeurs mais ça me pose un autre souci

    en fait dans $_server[groupe] j'ai des groupes genre ('COMPTA-BLEU', 'COMPTA-ROUGE', 'COMPTA-JAUNE').

    et si je fais un "SELECT ......... WHERE groupeNom IN ( ".$groupe_list." )"; sachant que mon groupeNom = 'COMPTA' car toutes les compta ont les mêmes accès ben ça ne me sort aucun résultat :/ et je ne peux pas rentrer les différentes valeurs de compta dans le tableau car j'ai mis 3 couleurs en exemple mais dans la BDD il y en a plusieurs dizaines, de même pour les autres types.


    J'ai pensé à faire avec les '-' comme vous avez fait pour les ';', c'est à dire les remplacer par des virgules, mais ce n'est pas une bonne solution car ça pose encore un autre souci :

    ex : j'ai dans $_SERVER[groupe] ('DEV-ROUGE', 'DEV-BLEU', 'DEV-MANAGER', 'RESEAU-ROUGE', 'RESEAU-BLEU', 'RESEAU-MANAGER') ... donc si j'enlève les '-', je pourrais plus différencier DEV-MANAGER et RESEAU-MANAGER :/

    une idée ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui.
    Revoir la CONCEPTION.

    Il faut "normaliser" les noms de groupe.

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 40
    Par défaut
    Revoir la conception ? Je suis en alternance dans une boite ENORME (elle porte à la fois le nom d'un fruit et d'une couleur pour ne pas la citer ^^)

    Je me vois pas aller voir le patron et lui dire "bon garçon on va revoir la conception de votre LDAP et renommer les milliers de groupes que vous avez !"

    ^^'

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

Discussions similaires

  1. [AC-2010] PB Comparaison avec un champ caché
    Par redbeard dans le forum VBA Access
    Réponses: 3
    Dernier message: 29/09/2013, 22h00
  2. [AC-2010] SELECT / WHERE Champ multiples valeurs
    Par Antoine B dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/04/2013, 18h49
  3. champs à multiples valeurs
    Par lalens dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/03/2009, 19h56
  4. jointure sur champ avec multiple valeur
    Par robert_trudel dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/05/2007, 17h40
  5. formulaire avec des champs multiples
    Par don'de dans le forum Struts 1
    Réponses: 13
    Dernier message: 16/02/2007, 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