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 :

Ajouter un filtre supplémentaire dynamiquement à ma requête


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Points : 503
    Points
    503
    Par défaut Ajouter un filtre supplémentaire dynamiquement à ma requête
    Bonjour,

    voila ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT b.service_description FROM service AS b,host_service_relation AS t WHERE t.host_host_id='".$hostdetails["host_id"]."' AND b.service_id=t.service_service_id
    Je récupere ainsi un ensemble de "service_descritpion".
    Mon probleme est que j'ai besoin d'ajouter un filtre supplémentaire sur ce que je récupere .....

    Exemple de ce que j'ai en sortie:
    - e_toto_aaa
    - e_toto_bbbb
    - e_toto_ccc
    - e_test_ccc
    - e_test_bbb
    ........

    Dans l'exemple présenté je n'arrive pas à trouver comment recupérer seulement e_toto_aaa et non les trois, sachant que ce que je récupere est dynamique.

    Merci beaucoup d'avance!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Dans l'exemple présenté je n'arrive pas à trouver comment recupérer seulement e_toto_aaa et non les trois, sachant que ce que je récupere est dynamique.
    Ta question n'est pas très claire, je pense qu'il te faut un GROUP BY, mais pas bien compris ce que tu souhaite.

    Exemple de ce que j'ai en sortie:
    - e_toto_aaa
    - e_toto_bbbb
    - e_toto_ccc
    - e_test_ccc
    - e_test_bbb
    ........
    Pas compris non plus, quelle sont les données ? c'est quoi le _ ?
    Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème

  3. #3
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Bonjour,


    tu as essayé avec un LIKE ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND b.service_description LIKE 'e_toto_aaa'
    que tu ajustes à ta convenance.
    Zend PHP5 Certification
    MySQL 4 Core Certification

  4. #4
    Membre confirmé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Points : 503
    Points
    503
    Par défaut
    c'est vrai que ce n'est pas tres clair.

    les données que je récupere sont sous la forme :

    "un caractere"_"chaine1"_"chaine2"

    Ce que j'essaye d'avoir c'est une seule donnée du type
    "un caractere"_"chaine1"_"chaine21"

    lorsque j'ai :
    "un caractere"_"chaine1"_"chaine21"
    "un caractere"_"chaine1"_"chaine22"
    "un caractere"_"chaine1"_"chaine23"
    "un caractere"_"chaine1"_"chaine24"

    pour ensuite la couper et n'obtenir que "un caractere"_"chaine1" sachant que "chaine1" peut das certains cas sous cette forme "chaine1"_"parametresupplémentaire"

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    C'est quoi ton underscore, on sait pas ou commence et fini la donnée et à quelle colonne elle appartient.

    "un caractere"_"chaine1"_"chaine21"
    "un caractere"_"chaine1"_"chaine22"
    "un caractere"_"chaine1"_"chaine23"
    "un caractere"_"chaine1"_"chaine24"
    Ca veux dire quoi ?????? à quoi correspondent un caractere, chaine1, chaine2

    Dans ta requete je vois 2 colonnes : service_description et host_service_relation

    Je sais pas faire le lien, dans ton tableau d'exemple met le titre des colonnes et les données en dessous. Tu as 2 colonnes dans ta requête et j'ai l'impression que tu met 3 données dans ton exemple, bref pas clair
    Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème

  6. #6
    Membre confirmé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Points : 503
    Points
    503
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "un caractere"_"chaine1"_"chaine21"
    "un caractere"_"chaine1"_"chaine22"
    "un caractere"_"chaine1"_"chaine23"
    "un caractere"_"chaine1"_"chaine24"
    Cela est contenu dans un seul champ d'une table.
    La décomposition que j'ai faite ci dessus correspond au format de la donnée contenu dans un champ de la table.

    Exemple :: pour un table info qui possede un champ "nom" , voila ce que donnerais les données contenu dans le champ nom :

    A_entreprise_sud
    A_entreprise_nord
    A_entreprise_est
    A_client_sud
    A_client_nordsud
    A_potentiel_sudsudest
    A_potentiel_ouest
    etc etc


    Dans ma requete je récupere les infos du champ "service_description" qui correspondrait dans mon exemple au champ "nom".

    j'aimerais que le resultat de ma requete contienne cela :
    A_entreprise_sud
    A_client_nordsud
    A_potentiel_ouest


    J'espere que c'est plus clair....

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Ca se précise, mais si
    A_entreprise_sud
    A_entreprise_nord
    A_entreprise_est
    A_client_sud
    A_client_nordsud
    A_potentiel_sudsudest
    A_potentiel_ouest
    représente un seul champ, ca deviens beaucoup plus compliqué pour faire ce que tu veux, tu ne peux pas exploiter les possibilité de MySQL.

    Je pense que ta base est mal concu, tu devrais décomposer tes champs en plusieurs champs. Je sait pas ce que représente les données entre chaque tiret, mais dans cet exemple je verrais biens 3 champs (colonnes).

    Après je pourrais t'aider pour les requêtes qui vont bien.
    Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème

  8. #8
    Membre confirmé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Points : 503
    Points
    503
    Par défaut
    J'imagine , mais je n'ai pas la main sur la BDD => impossible de la modifier....

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Ok, on va essayer de faire avec, dommage de pas exploiter les fonctionnalités d'un SGBD.

    Par contre j'ai pas compris :
    A_entreprise_sud
    A_entreprise_nord
    A_entreprise_est
    A_client_sud
    A_client_nordsud
    A_potentiel_sudsudest
    A_potentiel_ouest
    Tu veux
    A_entreprise_sud
    A_client_nordsud
    A_potentiel_ouest
    J'ai compris que tu souhaite une occurrence des 2 premieres données, mais comment choisit tu la 3ème (sud, nordsud et ouest) ?

    Tu prend le premier (sud) pour A_entreprise et les dernière (nordsur et ouest) pour A_client et A_potentiel
    Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Ah mon avis, vu que tes données sont dans une seule colonne, tu peux pas faire ca directement par SQL et donc exploiter ses possibilités, tu vas devoir faire ton filtre supplémentaire en PHP.

    Pose toujours la question sur les forum MySQL et surtout SQL ou ya quelques craks en SQL

    Je dois partir, je reviendrais voir demain ou tu en es
    Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème

Discussions similaires

  1. paramétrage dynamique de requête
    Par tojiji dans le forum VBA Access
    Réponses: 16
    Dernier message: 06/07/2006, 12h15
  2. Ajouter/Supprimer un select dynamiquement
    Par n@n¤u dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/06/2006, 10h22
  3. ADOTable : ajouter un champ en dynamique aux champs existant
    Par Sunchaser dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/03/2006, 17h06
  4. Réponses: 4
    Dernier message: 15/11/2005, 12h19
  5. Récupérer valeur contrôle en dynamique via requête
    Par nicburger dans le forum Access
    Réponses: 10
    Dernier message: 15/09/2005, 15h41

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