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 :

4 listes déroulantes dynamiques


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
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Par défaut 4 listes déroulantes dynamiques
    Bonjour à tous,

    Je débute en php, et pour tout vous dire je rame franchement!
    J'ai besoin de faire 4 listes déroulantes dynamiques.
    Après aide d'un membre du site, mes 2 listes déroulantes dynamiques fonctionnent. Le problème, c'est qu'il faut que j'en rajoute 2 autres. Et là, c'est le blanc. Je ne sais pas où rajouter mes boucles if, je ne sais pas non plus s'il faut que je recrée des form... Enfin, bref, vous l'aurez compris, je suis un peu perdue, ça devient vraiment trop compliqué pour mon niveau.

    Alors si mon sauveur est dans les parages, je serais ravie qu'il puisse m'aider

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Bonjour,

    Pourrais-tu nous montrer ton code actuel ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Par défaut code
    Merci pour ta réponse (qui en plus est d'une rapidité étonnante!).

    Voici mon code:
    Il fonctionne actuellement pour les 2 listes déroulantes "affaire" et "localisation".

    Voilà les champs de ma table "analyses", bd "essai":
    - Numéro analyse
    - Date analyse
    - Affaire
    - Localisation
    - Info1
    - Info2

    Voici un exemple de contenu:
    1 16/09/2008 1A1 GRANVILLE PLACE DE LA MAIRIE OOP ET
    2 16/09/2008 1A1 GRANVILLE PLACE DE LA GARE OOP ET
    3 16/09/2008 1B2 JULLOUVILLE RUE DU CASINO IEP EB ...

    Les 4 listes déroulantes dynamiques sont sur Affaire, puis localisation, puis Info1, puis Info2.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    <?php 
    echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); 
     
    /* On récupère si elle existe la valeur de l'affaire envoyée par le formulaire */
    $idr = isset($_POST['affaire'])?$_POST['affaire']:null;
    ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
    <head> 
    </head> 
     
     
    <body style="font-family: verdana, helvetica, sans-serif; font-size: 85%"> 
     
    <?php 
    if(isset($_POST['ok']) && isset($_POST['localisation']) && $_POST['localisation'] != "")
    { 
        $affaire_selectionnee = $_POST['affaire'];
        $localisation_selectionnee = $_POST['localisation'];
    ?> 
    <p>Vous avez sélectionné la localisation <?php echo($localisation_selectionnee); ?> dans l'affaire <?php echo($affaire_selectionnee); ?></p>
    <?php 
    } 
    ?> 
    <h3>Trouver une localisation </h3>
    <?php 
    /* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect() 
    *  car on aura besoin de la connexion un peu plus loin dans le script */ 
    $connexion = mysql_pconnect('localhost', 'root', '');
    if($connexion != false) 
    { 
        $choixbase = mysql_select_db('essai', $connexion);
        $sql1 = "SELECT distinct `affaire`".
        " FROM `analyses`".
        " ORDER BY `affaire`";
        $rech_affaires = mysql_query($sql1);
        $affaire = array();
        /* On active un compteur pour les affaires */
        $nb_affaires = 0;
        if($rech_affaires != false)
        { 
            while($ligne = mysql_fetch_assoc($rech_affaires))
            { 
                array_push($affaire, $ligne['affaire']);
     
                /* On incrémente le compteur */
                $nb_affaires++;
            } 
        } 
        ?> 
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chglocalisation">
    <fieldset style="border: 3px double #333399"> 
    <legend>Sélectionnez une affaire</legend>
    <select name="affaire" id="affaire" onchange="document.forms['chglocalisation'].submit();">
      <option value="-1">- - - Choisissez une affaire - - -</option>
        <?php 
        for($i = 0; $i < $nb_affaires; $i++)
        { 
    ?> 
      <option value="<?php echo($affaire[$i]); ?>"
      <?php echo((isset($idr) && $idr == $affaire[$i])?" selected=\"selected\"":null); ?>>
      <?php echo($affaire[$i]); ?></option>
     
    <?php 
        } 
        ?> 
    </select> 
        <?php 
        mysql_free_result($rech_affaires);
        /* On commence par vérifier si on a envoyé une affaire et le cas échéant s'il est différent de -1 */
     
        if(isset($idr) && $idr != -1) 
        { 
            /* Création de la requête pour avoir les localisations de cette affaire */
            $sql2 = "SELECT distinct `localisation` FROM `analyses` WHERE `affaire` = '".$idr."' ORDER BY `localisation`";
            if($connexion != false) 
            { 
                $rech_localisation = mysql_query($sql2, $connexion);
                /* Un petit compteur pour les localisations */
                $nb_localisation = 0;
                /* On crée un tableau pour les localisations */
                $localisation = array();
                /* On va mettre les localisations dans le tableau */
                while($ligne_localisation = mysql_fetch_assoc($rech_localisation))
                { 
                    array_push($localisation, $ligne_localisation['localisation']);
                    $nb_localisation++;
                } 
                /* Maintenant on peut construire la liste déroulante */ 
                ?> 
    <select name="localisation" id="localisation">
                <?php   
                for($d = 0; $d<$nb_localisation; $d++)
                { 
                    ?> 
      <option value="<?php echo($localisation[$d]); ?>"
      <?php echo((isset($localisation_selectionnee) && $localisation_selectionnee == $localisation[$d])?" selected=\"selected\"":null); ?>>
      <?php echo($localisation[$d]." (". $localisation[$d] .")"); ?></option>
                    <?php 
                } 
    ?> 
    </select> 
    <?php 
            } 
            /* Un petit coup de balai */ 
            mysql_free_result($rech_localisation);
        } 
    ?> 
    <br /><input type="submit" name="ok" id="ok" value="Envoyer" /> 
    </fieldset> 
    </form> 
    <?php 
        /* Terminé, on ferme la connexion */ 
        mysql_close($connexion); 
    } 
    else 
    { 
        /* Si on arrive là, c'est pas bon signe, il faut vérifier les  
        * paramètres de connexion, mot de passe, serveur pas démarré etc... */ 
    ?> 
    <p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p> 
    <?php 
    } 
    ?> 
    </body> 
    </html>

  4. #4
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Par défaut 3 listes pas 4 listes
    ATTENTION: finalement, ce n'est pas sur 4 listes déroulantes dynamiques que je dois travailler, mais seulement sur 3. (Mais même 3, je n'y arrive pas non plus! Je ne sais pas comment adapter mon code pour 3! ).
    Merci

  5. #5
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    Et tu veux mettre quoi dans ta troisième liste? Y a t il des contraintes à respecter, des conditions pour que quand il choisisse une option dans une liste cela influe sur le choix de la deuxième? Donne plus de détail.

  6. #6
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Par défaut
    Bonjour Ilys05.
    J'ai mal exprimé mon problème, la 3e liste ne doit pas influencer sur la 2e.

    Voici le principe:
    l'utilisateur saisit une AFFAIRE dans une liste déroulante d'"AFFAIRES".
    S'affiche alors une liste déroulante des LOCALISATIONS, filtrée en fonction de l'AFFAIRE sélectionnée
    l'utilisateur saisit une LOCALISATION dans la liste déroulante des LOCALISATIONS
    S'affiche alors une liste déroulante du champs INFO3, filtrée en fonction de l'AFFAIRE et de la LOCALISATION sélectionnés.
    l'utilisateur saisit une INFO3 dans la liste déroulante des INFO3.

    Voili voilou. Et donc mon script fonctionne pour les listes déroulantes sur AFFAIRE et LOCALISATION. Mais je n'arrive pas à ajouter la liste sur INFO3. Je ne sais pas comment gérer les boucles if et le form.
    Demain, je vais tester Ajax. Apparemment, il est difficile de gérer 3 listes déroulantes dynamiques avec seulement php. Comme je ne connais pas Ajax, je ne suis sûre d'y arriver. Mais bon, je teste.


    Si tu voies une solution relativement simple en php, je suis preneuse!

Discussions similaires

  1. récupérer la valeur d'une liste déroulante dynamique
    Par grinder59 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 23/01/2006, 17h51
  2. Liste déroulante dynamique
    Par Screw16 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/10/2005, 20h37
  3. [HTML] liste déroulante dynamique
    Par lacousinee dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2005, 20h51
  4. Liste déroulante dynamique ?
    Par Regis.C dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2005, 12h09
  5. [FORMULAIRE] Liste déroulante dynamique
    Par bchristo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2005, 10h07

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