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

Langage PHP Discussion :

[PHP-JS] Listes déroulantes dynamiques - suite -


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 44
    Points : 20
    Points
    20
    Par défaut [PHP-JS] Listes déroulantes dynamiques - suite -
    Bonjour,
    Je reviens sur le sujet des listes déroulantes dynamiques.
    Ce sujet est bien résolu : ça marche du tonnerre
    Seulement voilà, la page est rafraichie via une fonction javascript qui demande de réafficher le même fichier avec des paramètres supplémentaires, lesquels apparaissent dans l'url.
    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
     
    <script language=javascript>
    function modifcombo(){
    document.location.replace("essai3.php?lieux=" + document.form1.selectlieu.value );
    document.form1.selectlieu.value = $lieux;
    }
    </script>;
    ...
    <form name="form1" method="post" action="">
    ...
    <select name="selectlieu" class="txt16-000000" onChange="javascript : modifcombo()">
    ...
    </select>
    <select name="selectsalle" class="txt16-000000">
    ...
    </select>
    </form>
    J'ai eu beau chercher ces derniers jours, je n'ai pas trouvé comment faire pour que ces informations, en l'occurrence "lieux" dans l'exemple, soient cachées à l'utilisateur ?... Avez-vous une idée ? J'ai pensé aux variables de sessions, mais ça suppose un submit si je ne me trompe pas, or justement, j'aimerais minimiser au maximum le nombre d'actions de l'utilisateur ....
    Merci

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pourquoi ne fais tu pas cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    <form name="form1" method="post" action="essai3.php">
    ...
    <select name="selectlieu" class="txt16-000000" onChange="this.form.submit()">
    ...
    </select>
    <select name="selectsalle" class="txt16-000000">
    ...
    </select>
    </form>

    NB: onchange est forcément javascript, donc tu n'as pas besoin de mettre 'javascript:'

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 44
    Points : 20
    Points
    20
    Par défaut
    Je n'ai pas recopié tout le texte bien sûr mais les options de la deuxième liste déroulantes étaient conditionnées par le choix dans la première et ce choix était récupéré via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    if (isset($_GET['lieux']))    $lieux = $_GET['lieux'];
    else                          $lieux = NULL;
    ?>
    Du coup, je ne vois plus très bien comment je peux récupérer cette info ...
    Pardon si c'est vraiment du bas niveau mais je débute en php et en plus je suis complètement autodidacte il est donc possible que je n'ai pas toutes les bases ...

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je ne vois pas ce que ça change.
    Voici un exemple (que tu peux tester dans un nouveau script.php)
    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
    <?php
     
    $c1 = array(
        10 => 'Fruits',
        20 => 'Légumes',
    );
    $c2 = array(
        10 => array('Pomme', 'Peches', 'Poires'),
        20 => array('Poireaux', 'Carottes', 'Choux'),
    );
     
     
    ?>
    <html>
        <body>
            <form action="" method="POST" name="post">
                <div>
                <select name="sel_1" onchange="this.form.submit();">
                    <option value="-1">-- Choisir une valeur --</option>
                    <?php foreach($c1 as $key => $value) {
                        $selected = isset($_REQUEST['sel_1']) && $_REQUEST['sel_1'] == $key ? 'selected="selected"' : '';
                        echo '<option value="'. $key .'" '. $selected .'>'. $value .'</option>';
                    } ?>
                </select>
                <select name="sel_2">
                <?php if (isset($_REQUEST['sel_1']) && isset($c2[$_REQUEST['sel_1']])) {
                    foreach($c2[$_REQUEST['sel_1']] as $key => $value) {
                        $selected = isset($_REQUEST['sel_2']) && $_REQUEST['sel_2'] == $key ? 'selected="selected"' : '';
                        echo '<option value="'. $key .'" '. $selected .'>'. $value .'</option>';
                    } 
                } ?>
                </select>
                <input type="submit" name="choix" value="Go" />
            </form>
        </body>
    </html>
    La deuxième selectbox est bien conditionnée par le choix de la première. Est un simple this.form.submit() suffit

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 44
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup J'ai encore beaucoup de travail pour apprendre le php !! Avant aujourd'hui, je n'avais jamais utilisé encore $_REQUEST ni appliqué la fonction submit comme ça ...
    Si tu ne m'avais pas éclairé, sais-tu où est-ce que j'aurais pu trouver toutes ces infos ? J'ai cherché un bon moment avant de poster le message ce matin mais il y a tellement d'infos disponibles sur le net que je ne dois pas savoir utiliser le bon mots clés pour y accéder ...

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    $_REQUEST c'est juste que je sais pas si tu prefere tourner avec $_POST ou avec $_GET. Utilise ce dont tu as l'habitude, c'est un simple exemple ce que je t'ai donné

Discussions similaires

  1. [PHP-JS] Liste déroulante dynamique
    Par bom8407@hotmail.com dans le forum Langage
    Réponses: 3
    Dernier message: 27/02/2007, 14h09
  2. [PHP-JS] Listes déroulantes dynamiques
    Par Sarrus dans le forum Langage
    Réponses: 4
    Dernier message: 22/01/2007, 12h33
  3. [PHP-JS] Deux listes déroulantes dynamiques
    Par zana74 dans le forum Langage
    Réponses: 9
    Dernier message: 29/08/2006, 12h36
  4. [SQL] Liste déroulante dynamique PHP only
    Par gforce dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 11/05/2006, 21h30
  5. [PHP-JS] Création de liste déroulante dynamique
    Par eeckhout dans le forum Langage
    Réponses: 2
    Dernier message: 28/02/2006, 13h41

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