Debug script listes déroulantes liées
	
	
		Bonjour,
J'utilise un script Javascript pour lier deux listes déroulantes entre via une BD. Il marche trés bien, mais la à l'éxécution sous Internet Explorer il m'indique des lignes à debugguer. J'ai regarde la ligne avec Afficher la source, mais je ne comprends pas trop où est l'erreur.
Juste en dessous de la première erreur ligne 93 : Constante chaine non terminée
	Code:
	
| 12
 
 | Undefined offset:  1 in <b>c:\program files\easyphp1-8\www\nom_ent.php</b> on line <b>50</b><br />
"; | 
 Voici mon script avec les lignes 50 (et 56) en rouge :
	Citation:
	
		
		
			<SCRIPT LANGUAGE="JavaScript"> 
/*Cette fonction permet d'afficher 2 listes liées l'une à l'autre par une requête Mysql 
La 2ème liste est mise à jour selon ce qui a été sélectionné dans la 1ère*/ 
function AffListe2(code) 
{ 
   //nb d'éléments de la 2ème liste 
   lg = document.entreprise.nom_ent.length; 
   for (i = lg - 1; i >= 0; i--) 
   { 
      //au départ tous les éléments de la 2ème liste sont vides 
        document.entreprise.nom_ent.options[i] = null; 
   } 
<?php 
   //Sélection dans la table SITES 
   $sql1 = "SELECT DISTINCT categorie FROM utilisateurs WHERE categorie='Partenaire' OR categorie='Adhérent'"; 
   $resultat = mysql_query($sql1); 
   //initialisation des variables 
   $option_max= "" ; 
   $max_lignes = 0 ; 
    
   //Tant que la sélection dans SITES ramène des tuples 
   while ($enr = mysql_fetch_array($resultat)) 
   { 
      //On recherche les éléments de SERVICES ayant pour "mère" un enregistrement dans SITES 
       $sql="SELECT login FROM utilisateurs WHERE categorie='".$enr[0]."' ORDER BY login"; 
       //$enr[0]=CodeSite de la 1ère requête*/ 
  
        $resultat2 = mysql_query($sql); //resultat correspondant au site choisi 
          
        echo "  if (document.entreprise.situation.value == '"; 
        echo $enr[0]."') {\n"; 
           echo " document.entreprise.nom_ent.length = "; 
           echo (mysql_num_rows($resultat2)).";\n"; 
         //la longueur de la liste des services=nb de lignes retournées par le select 
           $cpt = 0; //on met un compteur à 0 
             echo "    document.entreprise.nom_ent.options[".$cpt."].value = '';\n"; 
            //texte affiché dans la liste = LibelleService (enr2[1])    
             echo "    document.entreprise.nom_ent.options[".$cpt."].text  = \"Aucun\";\n";       
            $cpt++;       
                       
           while ($enr2 = mysql_fetch_array($resultat2)) //tant qu'il y a des lignes retournées par la requête de sélection des services 
         { 
            //valeur de l'option dans la liste = CodeService (enr2[0]) 
             echo "    document.entreprise.nom_ent.options[".$cpt."].value = '"; 
             echo $enr2[0]."';\n"; 
            //texte affiché dans la liste = LibelleService (enr2[1])    
             echo "    document.entreprise.nom_ent.options[".$cpt."].text  = \""; 
            echo $enr2[1]."\";\n"; 
             
             echo "    if (code == '".$enr2[0]."') document.forms[1].nom_ent.options["; 
             echo $cpt."].selected = true;\n"; 
             $cpt++; 
             if ($cpt > $max_lignes) $max_lignes = $cpt; 
             if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
         } 
        echo "  }\n"; //fin du if (document.forms[0].lstsite.value == 'enr') 
   }//fin du while $enr  
?> 
}
</SCRIPT>
			
		
	
 Au cas ou je vous mets la partie du formulaire qui devrait être gérer par le script
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | <form name="entreprise" method="post" onSubmit="return verif_entreprise()" action="">
 
<?	
	  if ($rech_cat) 
      { 
         echo ("<select name=\"situation\" onChange='AffListe2(-1)'> <br/>") ; 
		 echo ("<option value=''>Situation</option>");
         while ($tab=mysql_fetch_object($rech_cat)) 
         { 
            echo ("<option value=".$tab->categorie.">".$tab->categorie."</option>"); 
         } 
         echo ("</select><br/>"); 
         mysql_free_result($rech_cat); 
      }
?>
		Nom<br/>
		<select name="nom_ent" >
			<option value=''>Listes des noms</option>
		</select> | 
 Merci pour votre aide :)
	 
	
	
	
		Re: Debug script listes déroulantes liées
	
	
		
	Citation:
	
		
		
			
				Envoyé par AnTiX
				
			
			Bonjour,
$sql="SELECT login FROM utilisateurs WHERE categorie='".$enr[0]."' ORDER BY login"; 
$resultat2 = mysql_query($sql); //resultat correspondant au site choisi 
           while ($enr2 = mysql_fetch_array($resultat2)) //tant qu'il y a des lignes retournées par la requête de sélection des services 
            echo $enr2[1]."\";\n"; 
			
		
	 
 Bonjour!!!
Mes vagues souvenir du temps ou je faisais du PHP me font penser que ta variable $enr2 a probablement un sel attribut $enr2[0] correspondant au login du SELECT. $enr2[1] ca n'existe pas, donc il doit generer des null qui se retrouvent dans ton code JavaScript qui du coup est tout buggé....
Mais ton problème semble plus PHP que JavaScript.
Sinon, en regle générale, sur ce forum, on ne s'interesse qu'au code HTML et JavaScript, donc si tu as un problème de cet ordre avec une page, mieux vaut nous donner la page HTML/JavaScript générée par le php que le code source de php....  :evil: 
Enfin, c'est le genre de combat que je ne gagnerait jamais  :?  :?