Page 1 sur 1

Valeur introuvable

Posté : 13 août 2005, 11:37
par pingoo
Bonjour à tous.
Voila mon problème est le suivant, j'ai deux listes déroulante alimenté par une base de donnée.
Lorsque je choisi une valeur dans la première liste la deuxiéme affiche les résultats concordants.
Mon probléme et que lorsque j'envoi les données sur une autre page ( en POST ou en GET) la valeur de la deuxieme liste est introuvable.
Voici mon code :
  <SCRIPT language="JavaScript"> 
List = new Array();
function Remplir(valeur){
    var sel="";
    sel ="&nbsp;&nbsp;&nbsp;<select size='1' style='width:150px' name='souscat'>";
    // Parcourir le tableau
    for (var i=0;i<List.length;i++)
     {
     // tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
     if (List[i][1]==valeur)
     {
         // Ajouter une rubrique sous-catégorie au variable SEL
         sel= sel + "<option value="+List[i][0]+">"+List[i][2]+"</option>";
     }

     }
     sel =sel + "</select>";
     // Modifier le DIV scat par la nouvelle list à partir du variable SEL
     document.getElementById('scat').innerHTML=sel;
}
</script>
<select style="width:150px" size="1" name="cat" OnChange="Remplir(cat.value)">
					   <?php
					   // Paramètres de la Connexion à la base MYSQL
					   include("connexauto.php");
					   $i=0; // variable de test
					   $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage

					   $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");

					   mysql_select_db($database,$connexion);

					   // Séléction de tous les enregistrements de la table Catégorie
					   $rq="Select * from marque_auto order by id_cat;";
					   $result= mysql_query ($rq) or die ("Select impossible");
					   while ($dt=mysql_fetch_row($result))
					   {
					   // Remplir la liste déroulante des catégorie
					   echo "\t\t<option value=".($dt[0]).">".($dt[1])."</option>";
					   if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
					   }
					   ?> 
		 			   </select><br>
					   </td>
				   </tr>
				   <tr>
				   	   <td align="right" height="35"><b>* Modèle :</b></td>
				   	   <td>
					   <DIV id="scat">
					   <select size="1" name="souscat">
					   </select>
					   </DIV>
					   <?php
					   // Séléction de tous les enregistrements de la table Sous-Catégorie
					   $rq="Select * from type_auto order by id_scat;";
					   $result= mysql_query ($rq) or die ("Select impossible");
					   // $i = initialise le variable i
					   $i=0;
					   while ($dt=mysql_fetch_row($result))
					   	{
						// Remplir le tableau (array) en javascript
						// ex : list[1]=new array (1,1,"Sous-catégorie 1");
						// ex : list[2]=new array (2,1,"Sous-catégorie 2");
						echo "<script>List[".$i."] = new Array(".($dt[0]).",".($dt[1]).",'".($dt[2])."');</script>";
						$i=$i+1; // Incrémentation de $i
						}
						echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
                        // des sous-catégories en utilisant la valeur j
						?>
Cela fait plusieur jour que je cherche une solution sans résultat... :oops:
Si quelqu'un pourrais me donner un petit cou de pousse ce serai sympa.
Merci beaucoup et bonne journée

Posté : 13 août 2005, 12:09
par Cyrano
Problème de JavaScript : ta fonction remplit la seconde liste et l'insère dans le <div "scat" et non cans le <select> qui est dedans, résultat, il n'y a aucune valeur correspondant à scat parce que les options ne sont pas insérées au bon endroit. Mets donc un id au select et modifie la cible de innerHtml.

Posté : 13 août 2005, 12:17
par pingoo
J'ai d'éja essayer d'intégrer un id dans le select sans résultat.
Je ne vois pas "modifie la cible de innerHtm"?
Merci

Posté : 13 août 2005, 12:34
par Cyrano
Regarde le tuto sur les listes déroulantes dynamiques dans la FAQ, le second modèle utilise le JavaScript, fonctionne très bien et on récupère bien les valeurs de la seconde liste déroulante.

Posté : 13 août 2005, 12:44
par pingoo
OK merci beaucoup