Bonjour,

Je suis en train de développer un composant. J'ai les fichiers suivants : contrats.php et contrats.html.php. Vous vous doutez que c'est pour la gestion de contrats.

Dans une fonction "creer" (dans contrats.php) je récupère la liste des catégories de produits
Code : Sélectionner tout - Visualiser dans une fenêtre à part
"select id_cat, nom_cat from #__win_categorie;"
et la liste des produits
Code : Sélectionner tout - Visualiser dans une fenêtre à part
"select id_prod, id_cat, titre_prod from #__win_produit;"
pour les transmettre à la fonction "creer" du fichier contrats.html.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
HTML_contrats::creer($pays, $categories, $produits );
où je voudrais proposer la liste des catégories dans une Listbox et en fonction du choix de la catégorie par l'utilisateur, afficher la liste des produits correspondants dans une deuxième Listbox.

Le code de la fonction "creer" du fichier contrats.html.php se présente comme suit :
Au début, j'ai mis un script Javascript...
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
 
function creer ($pays, $categories, $produits ){
        global $database;
        ?>  
              <script>
                   var liste=new Array()
                   liste[0]="<select name='list_produits'><OPTION VALUE=0>---</OPTION></select>";
                   <% liste.movefirst
                          while not liste.eof
                               temp="<select name='list_produits'>"
                          <?php                                         
                          $id_cat1 = "<script language='Javascript'> document.write(&liste(\"id_cat\")); </script>";
                          $query_produits = "select * from #__win_produit where id_cat=".$id_cat1;
                          $database->setQuery($query_produits);
                          $produits = $database->loadObjectList();
                         ?>
                         set produit=<?php echo $produits ;?>;             
                         while not produit.eof
                                    temp=temp&"<OPTION VALUE="&produit("id_prod")&">"&produit("titre_prod")&"</option>"
                                    produit.movenext
                         wend
                         temp= temp&"</select>"%>
                         liste[<%=liste("id_cat")%>]="<%=temp%>";
                                <%
                                liste.movenext
                                wend
                                %>
 
               function changeliste() {
                                    choix=document.monform.list_categories.value;
                                    document.monform.list_produits.outerHTML=liste[choix];
                                }
 
                        </script>
La liste des catégories :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<select id="listcat" name="list_categories" size="1"  onChange='changeliste()'>
                        <option value="">Sélection de la catégorie</option>  
                            <option value="">-----------------------------</option>
                          <?php
                            $count = count($categories);
                              for($i = 0; $i< $count ; $i++){
                                  ?><option value="<?php echo $categories[$i]->id_cat;?>"><?php echo $categories[$i]->nom_cat; ?></option><?php
                              }
                          ?>
                          </select>
Pour la liste des produits, j'ai un autre SELECT :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<select id="listprod" name="list_produits" size="1">
                            <option value="">Sélection du produit</option>
                            <option value="">-----------------------------</option>
                          </select>
Le problème est que ca ne marche pas, vous vous en doutiez

Auriez-vous une idée pour que ca marche ?

Merci.