8791 sujets

Développement web côté serveur, CMS

Bonjour,

Dans une page php, j'ai 5 <select> avec chacun, plusieurs <option> à l'intérieur.
Les <option> du 2e select sont fonction du choix dans le 1er <select>
Les <option> du 3e select sont fonction du choix dans le 2e <select>
Les <option> du 4e select sont fonction du choix dans le 3e <select>
Les <option> du 5e select sont fonction du choix dans le 4e <select>

En php, il n'est pas possible de remplir les listes des <select>.

Par contre en jquery, il existe le pluggin "cascade" qui répond tout-à-fait à mes attentes.
Mais... c'est là le problème...
je ne trouve nulle part sur le net une vidéo explicative pour "paramétrer" ce pluggin.
De plus, ces éléments <option> des <select> proviennent de bdd mysql...

Pouvez-vous m'aider, dans cette combinaison "cascade" et "mysql" ?
D'avance merci.
Modifié par jytest (25 Jul 2011 - 11:32)
Salut,

Soit tu déclares sur ta page plusieurs tableaux Javascript remplis avec tes requêtes SQL.
Du coup, un énorme tableau en perspective, qui doit contenir tous les choix possibles par Select.
Et à chaque onchange d'un select tu remplis l'autre select avec ce tableau statique.

Soit, mieux, tu pars sur de l'Ajax. Sur le onchange des selects tu fais un appel Ajax qui appelle un script PHP où tu passes la valeur du Select en POST et tu renvoies du JSON puis tu construis le nouveau Select avec les éléments renvoyés.

Enfin si tu maitrises un peu Ajax ?
Bonsoir à toutes et à tous,

je n'ai pas bien compris ce que tu veux faire ?

Pourrais-tu détailler un peu plus ce que tu désires mettre en tant qu'option dans le remplissage des balises <select> ?

Car je ne comprends pas s'il s'agit d'un problème de remplissage ou un problème de sélection ?

Car s'il s'agit d'un problème de sélection, tu ne peux pas donner toutes les balises <select> d'un seul coup. Tu dois afficher la première balise <select> et laisser le choix à l'utilisateur. Puis lorsque tu as la réponse, tu affiches alors la deuxième balise <select> qui aura été rempli, au préalable à son affichage, avec les résultats du choix de l'utilisateur de la première balise <select>, et ainsi de suite.

Tu as le choix entre le JavaScript et le Php pour faire cela, mais pour des raisons de communications entre le client et le serveur, il vaut mieux faire cela en local, c'est à dire en JavaScript.

@+
Modifié par Artemus24 (25 Jul 2011 - 23:17)
Après plusieurs heures passées,
j'opte définitivement pour de l'ajax...

Plus simplement, il s'agit de listes liées,
complétées par du mysql.

Pouvez-vous m'aider ?
Modifié par jytest (26 Jul 2011 - 06:31)
En supposant que tu es une table avec l'ID du menu, un ID parent, et la value du menu.

Côté HTML :
<div id="selects">
        <select id="1" name="1" onchange="onChange(this);">
              <?php 
                  ton premier résultat de requête pour afficher tes options ....
              ?>
        </select> 
</div>


Côté JS :

<script>
      function onChange(obj)
      {
           $.post('/tonscript.php', {id:obj.val()}, function (data)
           {
                  $('#selects').append(data);
           });
      }
</script>


Côté PHP :


<?php
     $id = $_POST['id'];

     $sql = 'SELECT id, name
            FROM menu_select
            WHERE id_parent = :id_parent';
     $sth = $dbh->prepare($sql);
     $sth->execute(array(':id_parent' => $id));
     $res = $sth->fetchAll();
 
     $buffer = '';
     foreach($res as $o)
     {
          $buffer .= '<option value="'.$o->id.'">'.$o->name.'</option>';
     }

     echo '<select id="',$id,'" name="',$id,'" onchange="onChange(this);">',$buffer,'</select>';


Ceci devrait donner une bonne base, j'utilise PDO par habitude, tu peux changer après.