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

 MySQL Discussion :

Mise à jour de 2 listes déroulantes en fonction du choix de la 3ème liste déroulante


Sujet :

MySQL

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Mise à jour de 2 listes déroulantes en fonction du choix de la 3ème liste déroulante
    BOnjour,

    J'ai 3 listes déroulantes et j'aimerais que lorsque l'on clique sur une liste deroulante cela mette à jour les deux autres.
    Mais je souhaites que l'on puisse choisir n'importe quel liste deroulante en premier.

    J'ai fais 3 requetes qui me remplissent mes listes déroulantes mais qui ne s'actualise pas ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql0 = "select distinct activite FROM table ORDER BY activite";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql0 = "select distinct ville FROM table ORDER BY ville";
    Si quelqu'un pouvait m'aider?

    merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 111
    Points : 28 450
    Points
    28 450
    Par défaut
    Peut-être qu'en ajoutant une clause WHERE le nombre de lignes retournées serait limité à une condition définie...

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Mise à jour de 2 listes déroulantes en fonction du choix de la 3ème liste déroulante
    Et oui j'ai testé avec WHERE mais du coup la liste deroulante avec le where devient vide et attends le post de l'autre liste deroulante....

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 490
    Points : 19 534
    Points
    19 534
    Par défaut
    Salut Marc31.

    Une liste déroulante, c'est ça :

    donc je ne comprends pas trop le rapport entre vos trois listes déroulantes et vos requêtes MySql.
    Si vous avez des problèmes avec le HTML, déposez votre sujet dans le forum consacré à html :
    --> https://www.developpez.net/forums/f3...alidation-w3c/

    Sans descriptif de la table, il est difficile de répondre avec exactitude à votre problème.
    Hormis la réponse évidente de Al1_24 qui consiste à mettre un "where" dans la requête, votre problème repose sur la construction de vos requêtes.

    Au démarrage vous avez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql0 = "select distinct activite FROM table ORDER BY activite";
    $sql0 = "select distinct ville    FROM table ORDER BY ville";
    Quand l'utilisateur à par exemple sélectionné une ville, normalement, vous rebouclez sur la même page et vos requêtes deviennent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql0 = "select distinct activite FROM table where ville = '".$ville."' ORDER BY activite";
    $sql0 = "select distinct ville    FROM table ORDER BY ville";
    Si maintenant, il a cliqué sur une activité, vos requêtes deviennent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql0 = "select distinct activite FROM table ORDER BY activite";
    $sql0 = "select distinct ville    FROM table where activite = '".$activite."' ORDER BY ville";
    A chaque clique sur l'un des menu déroulant, vous devez produire un affichage de vos résultats.

    Juste une question, comment faites-vous pour revenir à la configuration initiale ?

    @+

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Mise à jour de 2 listes déroulantes en fonction du choix de la 3ème liste déroulante
    Oui c'est ce que j'avais fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql0 = "select distinct activite FROM table where ville = '".$ville."' ORDER BY activite";
    $sql0 = "select distinct ville    FROM table where activite = '".$activite."' ORDER BY ville";
    Mais en faisant ceci, du coup les lsites déroulantes deviennent vides puisqu'elle attendent une variable.

    Et pour la configuration initiale aucune idée....

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 362
    Points : 39 806
    Points
    39 806
    Billets dans le blog
    9
    Par défaut
    Une astuce de contournement
    Codez votre requete en filtrant sur des plages et non sur une égalité

    Par exemple

    sql0 = "select distinct activite FROM table where ville between '".$ville1."' and '".$ville2."' ORDER BY activite";

    Dans votre application, vous affectez à chaque borne la valeur choisie dans la liste déroulante si non vide, les valeurs mini et maxi possibles sinon

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Mise à jour de 2 listes déroulantes en fonction du choix de la 3ème liste déroulante
    J'ai pas vraiment compris en fait...parce que moi je remplis mes listes avec des données de la base de données..

  8. #8
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 490
    Points : 19 534
    Points
    19 534
    Par défaut
    Salut Marc31.

    Citation Envoyé par Marc31
    Mais en faisant ceci, du coup les lsites déroulantes deviennent vides puisqu'elle attendent une variable.
    Vous n'avez pas compris ce que j'ai dit ! Je vous ai dit de construire votre requête et non de procéder comme vous faites.

    Au départ, il n'y a aucun sélection et donc vos requêtes sont ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql0 = "select distinct activite FROM table ORDER BY activite";
    $sql0 = "select distinct ville    FROM table ORDER BY ville";
    Je ne sais pas trop ce que fait votre utilisateur, mais il clique sur l'une des deux fenêtres déroulantes et sélectionne par exemple une ville.
    Donc a priori, la variable $ville n'est pas vide. Et dans ce cas là, vous construisez votre requête ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql0 = "select distinct activite FROM table where ville = '".$ville."' ORDER BY activite";
    $sql0 = "select distinct ville    FROM table ORDER BY ville";
    Autrement dit, quand la variable $ville n'est pas vide, vous concatenez l'ajout à votre requête de base.

    Or ce que vous faites, c'est faire le test tout le temps.

    Citation Envoyé par Marc31
    J'ai pas vraiment compris en fait...parce que moi je remplis mes listes avec des données de la base de données..
    Oui, j'avais bien compris que vos listes déroulantes se construisaient avec des informations venant de vos tables.
    Mais c'est la structure de votre programme que vous n'avez pas compris !

    En premier, il y a l'initialisation ! C'est ce que vous faites actuellement. Mais en second, vous devez gérer un test et construire votre requête, ce que vous ne faites pas.

    Vous décomposer votre requête en quatre morceaux :
    --> $req1 = "select distinct activite FROM table ";
    --> $req2 = "where ville = '";
    --> $req3 = "' ";
    --> $req4 = "ORDER BY activite";

    Si la variable $ville contient "Paris", alors vous faites :
    --> $req = $req1.$req2.$ville.$req3.$req4;
    sinon, vous faites :
    --> $req = $req1.$req4;

    Ce qui donne soit :
    --> $req = "select distinct activite FROM table where ville = 'Paris' ORDER BY activite";
    ou bien :
    --> $req = "select distinct activite FROM table ORDER BY activite";

    Ce n'est pas plus simple que ça !

    @+

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Mise à jour de 2 listes déroulantes en fonction du choix de la 3ème liste déroulante
    Ah merci je savais pas que c'était possible de décomposer sa requête! merci!!!
    Et niveau rapidité la requête décomposé c'est pas gênant?

  10. #10
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 490
    Points : 19 534
    Points
    19 534
    Par défaut
    Salut Marc31.

    Citation Envoyé par Marc31
    Et niveau rapidité la requête décomposé c'est pas gênant?
    Pourquoi voulez-vous que cela soit gênant ?

    La construction de votre requête se fait en php. Aucun rapport avec son exécution en MySql.

    @+

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Mise à jour de 2 listes déroulantes en fonction du choix de la 3ème liste déroulante
    ah je pensais que l'execution de la requete serait plus longue mais pas du tout en fait....

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/02/2017, 10h55
  2. Réponses: 3
    Dernier message: 23/06/2010, 11h41
  3. Réponses: 2
    Dernier message: 23/06/2008, 16h24
  4. Réponses: 15
    Dernier message: 02/05/2007, 18h04
  5. Réponses: 2
    Dernier message: 05/02/2007, 10h19

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