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 :

liste déroulante liée


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 105
    Par défaut liste déroulante liée
    Bonjour,
    Après plusieurs recherche dans google et sur le forum je n'ai aps trouvé la solution à ma question.
    J'utilise 2 listes déroulante remplis par base de données ou la 2eme est lié au choix de la 1er.
    voici le code
    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
    $connexion = mysql_pconnect($serveur, $admin, $mdp);
    if($connexion != false)
    {
        $choixbase = mysql_select_db($base, $connexion);
        $sql1 = "SELECT `id_categories`, `nom`".
        " FROM `categories`".
        " ORDER BY `id_categories`";
        $rech_cat = mysql_query($sql1);
        $code_cat = array();
        $cat = array();
     
        $nb_cat = 0;
        if($rech_cat != false)
        {
            while($ligne = mysql_fetch_assoc($rech_cat))
            {
                array_push($code_cat, $ligne['id_categories']);
                array_push($cat, $ligne['nom']);
                /* On incrémente de compteur */
                $nb_cat++;
            }
        }
        ?>
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgscat">
    <fieldset style="border: 3px double #333399">
    <legend>choix catégorie</legend>
    <select name="cat" id="cat" onchange="document.forms['chgscat'].submit();">
      <option value="-1">- - - Choisissez une catégorie - - -</option>
        <?php
        for($i = 0; $i < $nb_cat; $i++)
        {
    ?>
      <option value="<?php echo($code_cat[$i]); ?>"<?php echo((isset($idr) && $idr == $code_cat[$i])?" selected=\"selected\"":null); ?>><?php echo($cat[$i]); ?></option>
    <?php
        }
        ?>
    </select>
        <?php
        mysql_free_result($rech_cat);
     
        if(isset($idr) && $idr != -1)
        {
     
            $sql2 = "SELECT `id_sous-categories`, `nom`".
            " FROM `sous-categories`".
            " WHERE `id_categories` = ". $idr ."".
            " ORDER BY `id_sous-categories`;";
            if($connexion != false)
            {
                $rech_scat = mysql_query($sql2, $connexion);
     
                $nd = 0;
     
                $code_scat = array();
                $nom_scat = array();
     
                while($ligne_scat = mysql_fetch_assoc($rech_scat))
                {
                    array_push($code_scat, $ligne_scat['id_sous-categories']);
                    array_push($nom_scat, $ligne_scat['nom']);
                    $nd++;
                }
     
                ?>
    <select name="scat" id="scat">
                <?php  
                for($d = 0; $d<$nd; $d++)
                {
                    ?>
      <option value="<?php echo($code_scat[$d]); ?>"<?php echo((isset($scat_selectionne) && $scat_selectionne ==$code_scat[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_scat[$d]." (". $code_scat[$d] .")"); ?></option>
                    <?php
                }
    ?>
     
    </select>
    <?php
          echo $cat_selectionnee = $_POST['cat'];  }
     
           mysql_free_result($rech_scat);
        }
    ?>
    <br />
    <br /><input type="submit" name="ok" id="ok" value="Envoyer" />
    </fieldset>
    </form>
    Je vais ajouter des champs input supplémentaire dans le formulaire et je voudrais que lors de l'action "envoyer", l'utilisateur soit diriger sur une nouvelle page et que toutes les variables soit transmises dans en $post dans la page destinatrice.
    Merci d'avance de votre aide
    Cyb

  2. #2
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Eh, je croyais être tout seul à essayer de faire de l'Ajax sans Ajax.

    Si tu ne veux pas passer par Ajax, pour moi le plus simple serait de :

    - démarrer une session (session_start())

    - récupérer les variables de ton premier formulaire dans une variable de session (ou un tableau)

    - ajouter un deuxième formulaire - avec tes <input> - qui s'affiche sous condition que tes variables de session soient renseignées par exemple, et dont le submit redirige vers ton autre page. Petite astuce: il faut placer ton deuxième formulaire en premier dans le code, c'est à dire AVANT ton premier formulaire affiché, et ne l'afficher que si tes variables de session sont renseignées.

    - dans ton autre page, tu auras conservé de toutes façons ta variable de session (ne pas oublier de replacer un session_start en entete de ta nouvelle page) et tu pourras récupérer les datas via POST de ton deuxième formulaire.

    C'est une approche différente d'Ajax, elle a notamment l'inconvénient du rafraichissement imposé de la page, mais au final, cela reste une approche malgré tout plus simple/moins lourde que de jongler entre le client et le serveur, et cela a l'avantage de simplifier la gestion des aspects "sécurité".

    Je suis curieux du résultat !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 105
    Par défaut
    merci de ta réponse hornetbzz
    On peut dire que c'est comment faire de l'ajax sans ajax lollll
    Je vais partie dans cette direction que tu me donnes
    Je te tiens au courant
    Merci du coup de pouce

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 105
    Par défaut
    super ca marche nickel avec la session.
    Tu aurais une petite piste pour remplacer le bouton submit par un onchange lors du choix de la 2eme colonne?
    merci de ton aide
    Cyb

  5. #5
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //le name ici
    <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgscat" name="chgscat">
    //puis
    <select name="cat" id="cat" onchange="document.chgscat.submit();">

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 105
    Par défaut
    Bonjour nsanabi
    Merci de ta réponse mais ce que tu me donnes c'est pour la 1er colonne.
    Comment l'appliquer sur la 2eme colonne, c'est à dire eviter le bouton submit et donc envoyer le formulaire lors de la selection du 2eme choix.
    Merci d'avance

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Il faudrait à mon avis, modifier "dynamiquement" l'URL indiquée dans le <form acction"la_page.php">, étant donnée qu'il y a 2 pages différentes selon le cas.

    Faudrait le faire dans le bouton submit, un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="ok" id="ok" value="Envoyer" onclick="document.chgscat.action='autre_page.php'" />
    Théoriquement, l'évènement onclick devrait se faire avant l'évènement onsubmit, donc changer la valeur de "action".

Discussions similaires

  1. Debug script listes déroulantes liées
    Par AnTiX dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/04/2005, 12h03
  2. Griser 1 liste déroulante liée à une autre, pb de concaténat
    Par linou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/03/2005, 16h45
  3. listes déroulantes liées
    Par k4eve dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/04/2004, 15h11
  4. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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