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:
1 2
| 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:
1 2 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 :? :?