Liste déroulantes dynamiques

Fermé
willow - 19 févr. 2003 à 11:39
 willow - 21 févr. 2003 à 12:03
salut,

j'ai essayer de faire un programme pour faire des listes déroulantes dynamiques (avec php et
javascript), mais je ne vois pas les erreurs. en
fait, quand on clique sur la premiere liste déroulante, des nom devraient apparaitre dans la 2eme,
mais ce n'est pas le cas !!

voila le bout de javascript :
<script language = "JavaScript"><!--
liste=new Array()
liste[0]=new Array("aucun","")
<?
while ($val = mysql_fetch_array($result1))
{
$sql2 = "SELECT nomdestinataire FROM destinataire WHERE refnoservice = ";
$sql2 .= $val["noservice"];
$result2 = mysql_query($sql2);
?> liste[<?echo $val["noservice"];?>] = new Array(<?
while ($val2 = mysql_fetch_array($result2))
echo "\"".$val2["nomdestinataire"]."\",";
?>"")
<? }
?>
function changeliste() {
choix = document.monform.listeService.value;
t = "<select name = 'listeNom'>"
for (i=0; i<liste[choix].length-1;1++)
t+= "<option>"+liste[choix][i]+"</option>"
document.monform.listeNom.outerHTML=t+"</select>"
}
//-->
</script>
et le php qui appel cette fonction
<select name="listeService" OnChange=changeliste()>
<option value=0>Choisir un service</option>
<?
mysql_data_seek($result1, 0);
while ($val = mysql_fetch_array($result1)) {
?>
<option value = <? echo $val["noservice"];?> >
<? echo $val["libservice"];?>
</option>
<? }
mysql_close();
?>
</select>


j'ai fait afficher la source de ce script par mon navigateur et il me marque qu'il ya une erreur :

ça c'est la source du navigateur ....

<head>
<title>Page Administrateur</title>
<script language = "JavaScript"><!--
liste=new Array()
liste[0]=new Array("aucun","")
<br>
<b>Warning</b>: Supplied argument is not a valid MySQL result resource in <b>c:\program
files\easyphp\www\suivi courrier\page_admin.php</b> on line <b>17</b><br>
function changeliste() {
choix = document.monform.listeService.value;
t = "<select name = 'listeNom'>"
for (i=0; i<liste[choix].length-1;1++)
t+= "<option>"+liste[choix][i]+"</option>"
document.monform.listeNom.outerHTML=t+"</select>"
}
//-->
</script>


et la ligne 17 de mon script c'est celle là :
while ($val = mysql_fetch_array($result))
elle est dans la javascript !
apparement, c'est le php qui ne marche pas, mais pourquoi ?

j'éspere que vous pourrez m'aider !!
A voir également:

28 réponses

wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
19 févr. 2003 à 11:49
mets des points-virgules (;) a la fin de chaque instruction javascript pour commencer...
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
19 févr. 2003 à 14:48
C'est recommandé pour la lisibilité, mais pas obligatoire ;-)
0
wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108 > Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013
20 févr. 2003 à 03:24
ah bon?
je m'evertue a mettre des ; pour rien alors ?
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504 > Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013
20 févr. 2003 à 10:47
Pas pour rien. Ca permet de mettre deux instructions sur la même ligne. Et je trouve ça plus propre.
0
ps : j'y connais rien au javascript !
0
et ben maitenant j'ai ça comme erreur:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp\www\suivi courrier\page_admin.php on line 19

mais j'ai changé ça :
$sql2 = "SELECT nomdestinataire FROM destinataire WHERE refnoservice = ";
$sql2 .= $val["noservice"];
en ça :
$sql2 = "SELECT nomdestinataire FROM destinataire WHERE refnoservice = $val['noservice']";
0
ben j'ai fait ce que tu m'as dit pour le javascript mais ça ne marche tjs pas !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
19 févr. 2003 à 14:51
Tu as le droit de mettre des variables dans une chaine : "hello $nom ! Ca va ?" <--- OK
Mais pas de tableau : "hello $tab['nom'] ! Ca va ?" <--- FAUX !!!

Il faut l'extraire comme tu l'as fait plus haut :

$sql2 = "SELECT nomdestinataire FROM destinataire WHERE refnoservice = ". $val['noservice'];
0
j'avais déja essayer ça et ça me met ça comme erreur :Parse error: parse error in c:\program files\easyphp\www\suivi courrier\page_admin.php on line 19
0
je vois pas ce que je peux faire !!!
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
19 févr. 2003 à 15:36
Mais quelle peut-être donc la ligne 19 ?! (et la précédente ?)
0
c'est celle que tu m'a fait changer :
$sql2 = "SELECT nomdestinataire FROM destinataire WHERE refnoservice =".$val['noservice'] ";

voila le bloc
<script language = "JavaScript"><!--
liste=new Array();
liste[0]=new Array("aucun","");
<?
while ($val = mysql_fetch_array($result1))
{
$sql2 = "SELECT nomdestinataire FROM destinataire WHERE refnoservice =".$val['noservice'] ";
$result2 = mysql_query($sql2);
?> liste[<?echo $val['noservice'];?>] = new Array(<?
while ($val2 = mysql_fetch_array($result2))
echo "\"".$val2['nomdestinataire']."\",";
?>"")
<? }
?>
function changeliste() {
choix = document.monform.listeService.value;
t = "<select name = 'listeNom'>";
for (i=0; i<liste[choix].length-1;1++);
t+= "<option>"+liste[choix][i]+"</option>";
document.monform.listeNom.outerHTML=t+"</select>";
}
//-->
</script>
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
19 févr. 2003 à 16:03
Normal, regarde bien, je n'ai pas mis de guillement à la fin :

$sql2 = "SELECT nomdestinataire FROM destinataire WHERE refnoservice = ". $val['noservice'];
0
ah ah!! petit farceur !!!
0
alors, j'ai essayé et quand je click sur la premiere liste déroulante j'ai ce msg d'erreur qui apparrait :


ligne 33
erreur : impossible d'affecter à '[number]'
0
mais ce que je ne comprends pas c'est pourquoi c'est ligne 33 parce que c'est elle :

function changeliste() {
choix = document.monform.listeService.value;
t = "<select name = 'listeNom'>";
for (i=0; i<liste[choix].length-1;1++);
t+= "<option>"+liste[choix][i]+"</option>";
document.monform.listeNom.outerHTML=t+"</select>";
} <-- celle là !!!
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
20 févr. 2003 à 11:26
Je n'osais espérer que tu donnes le code de la ligne :o)

C'est effectivement étrange comme erreur.
Il faudrait voir l'ensemble du code JavaScript/HTML généré (c'est à dire SANS PHP, "Afficher Source" sur la page), pour avoir une vue globale.

Si tu as une URL ou que tu peux poster ce code un fois généré ?
0
pas de pb !!! mais c'est chaud !!!

<html>
<head>
<title>Page Administrateur</title>
<script language = "JavaScript"><!--
liste=new Array();
liste[0]=new Array("aucun","");
liste[1] = new Array("CHARPENAY Georges","FAYOLLE Stéphanie","")
liste[2] = new Array("POINAT Chérifa","SURGET Danièle","CHAIZE Sylviane","CHEVRIN Coralie","")
liste[3] = new Array("PITAVAL Agnès","CROZET Géraldine","BACHELET Françoise","")
liste[4] = new Array("JAY Aline","MICHAUD Cathy","")
liste[5] = new Array("PINATEL Philippe","THOMAS Frédéric","MARCON Yolande","CREPET Michèle","TEYSSIER Emmanuelle","MAISSE Geneviève","")
liste[6] = new Array("SIMON Eliane","SABATIER Josiane","DURBIZE Maryse","SOULIER Dominique","")
liste[7] = new Array("DUMAS Michèle","JAQUEMONT Sandrine","FERRANDIS Marie-Claude","POULARD Karine","")
liste[8] = new Array("POMEON Gilles","SOLLE Evelyne","")
liste[9] = new Array("SANDEYRON Maguy","FLOQUET Marianne","")
liste[10] = new Array("FLAMMIN Gilles","BERTHET André","MUNOZ Véronique","")
liste[11] = new Array("GARDARIN Alain","")
liste[12] = new Array("M. PALPUCER","")
liste[13] = new Array("C. DEBAYLE","")
liste[14] = new Array("G. BILLARD","G. DUCLOS","R BUISSON","M. PEYRARD","Z. ADOUR","")
liste[15] = new Array("J.N. GEORGES","")
liste[16] = new Array("I. BOYADJIAN","X. LEBERGE","")
liste[17] = new Array("M. CADET","P. CHERMETTE","P. ROUX","")
liste[18] = new Array("C. RASCLE","J.L. PATOUILLARD","")
liste[19] = new Array("M. Le Maire - SCHALK Jean-Claude","MARAS Michelle","MONTEUX Marc","RIVIERE Christiane","BADAROUX Jean","BROUILLAT Emmanuelle","BROT Gérard","LEDRAPPIER Maurice","BEAL Jean","M. BON","")
liste[20] = new Array("M. VOCANSON","M. CURY","")
liste[21] = new Array("OURZIC Redoan","")
liste[22] = new Array("S. BASSON","")
liste[23] = new Array("G. CARMIER","M. RIBOULON","")
liste[24] = new Array("Centre de Secours","")
liste[25] = new Array("")
function changeliste() {
choix = document.monform.listeService.value;
t = "<select name = 'listeNom'>";
for (i=0; i<liste[choix].length-1;1++);
t+= "<option>"+liste[choix][i]+"</option>";
document.monform.listeNom.outerHTML=t+"</select>";
}
//-->
</script>
 
</head>
<body bgcolor="#FFFFFF" text="#000000" background="Papbis.gif">
<form method="post" name="monform" action="insertion.php">
<h2 align="center"><font color="#9999FF"><b><br>
<font face="Geneva, Arial, Helvetica, san-serif"><img src="livre.gif" width="148" height="60">  SUIVI
DE L'ARRIVÉE DU COURRIER</font></b></font></h2>
<p> </p>
<p align="right"><b><font color="#3333CC" face="Geneva, Arial, Helvetica, sans-serif" size="3">date du jour :</font>
<input type="text" name="date" value="  20-02-2003" size="10">
</b> </p>
<p><font face="Geneva, Arial, Helvetica, sans-serif" color="#6699FF"><b>Expéditeur : </b></font></p>
<blockquote>
<p><font face="Geneva, Arial, Helvetica, sans-serif">Nom :</font><font face="Verdana, Arial, Helvetica, sans-serif">
<b><font color="#6699FF">  </font></b></font><b><font color="#6699FF">       
<input type="text" name="nomexp">
</font></b></p>
<p><font face="Geneva, Arial, Helvetica, sans-serif">Prénom :</font>
   
<input type="text" name="prenexp">
<b><font color="#9999FF"> </font></b></p>
<p><font face="Geneva, Arial, Helvetica, sans-serif">Société
:  </font>  
<input type="text" name="steexp">
</p>
<p><font face="Geneva, Arial, Helvetica, sans-serif">Activité :</font>
    
<input type="text" name="textfield">
</p>
<p><font face="Geneva, Arial, Helvetica, sans-serif">Ville :   </font>    
  
<input type="text" name="villexp">
</p>
</blockquote>
<p><b><font color="#6699FF" face="Geneva, Arial, Helvetica, sans-serif">Objet du courrier : </font></b></p>
<blockquote>
<p>
<textarea name="objet" cols="50" rows="3"></textarea>
                  
<input type="checkbox" name="checkbox" value="checkbox">
<font face="Geneva, Arial, Helvetica, sans-serif">confidentiel</font><br>
<br>
<font face="Geneva, Arial, Helvetica, sans-serif">Type du courrier :</font>
<select name="typecourrier">
<option value="lettre">Lettre</option>
<option value="colis">Colis</option>
<option value="colissimo">Colissimo</option>
<option value="chronopost">Chronopost</option>
<option value="recomandé">Recomandé </option>
</select>
</p>
<p><font face="Geneva, Arial, Helvetica, sans-serif">Date d'envoi :</font><font face="Verdana, Arial, Helvetica, sans-serif">
</font>     
<input type="text" name="datenvoi" size="10">
<b><font color="#6699FF"> </font></b></p>
</blockquote>
<p><b><font color="#6699FF" face="Geneva, Arial, Helvetica, sans-serif">Destinataire :</font><font color="#6699FF"> </font></b></p>
<p>     <font face="Geneva, Arial, Helvetica, sans-serif">   Service :</font>   
<select name="listeService" OnChange=changeliste()>
<option value=0>Choisir un service</option>
<option value = 1 >
Service Informatique </option>
<option value = 2 >
Secrétariat Général </option>
<option value = 3 >
Service Comptabilité </option>
<option value = 4 >
Service du Personnel </option>
<option value = 5 >
Services Techniques </option>
<option value = 6 >
Etat-Civil et Accueil </option>
<option value = 7 >
Service Social </option>
<option value = 8 >
Service Developpement Social Urbain </option>
<option value = 9 >
Office du Tourisme </option>
<option value = 10 >
Service Communication </option>
<option value = 11 >
Directeur des Services </option>
<option value = 12 >
Conservatoire </option>
<option value = 13 >
Crèche </option>
<option value = 14 >
Centre Technique Municipal </option>
<option value = 15 >
Nautiform </option>
<option value = 16 >
Police Municipale </option>
<option value = 17 >
Palais des Sports </option>
<option value = 18 >
Théâtre du Parc </option>
<option value = 19 >
Elus </option>
<option value = 20 >
Bibliothèque Municipale </option>
<option value = 21 >
OMS </option>
<option value = 22 >
ASF </option>
<option value = 23 >
AB7 </option>
<option value = 24 >
Centre de Secours </option>
<option value = 25 >
Concervatoire </option>
</select>
<br>
<br>
   <font face="Geneva, Arial, Helvetica, sans-serif">  <font face="Geneva, Arial, Helvetica, san-serif">   Nom
et Prénom :</font></font><font face="Geneva, Arial, Helvetica, sans-serif"><font face="Geneva, Arial, Helvetica, san-serif"></font><font size="3"><font face="Geneva, Arial, Helvetica, san-serif">
</font></font></font>
<select name="listeNom">
<option>Choisir d'abord un service</option>
</select>
<br>
<br>
<b><font color="#6699FF"> </font></b><b><font color="#6699FF"> </font></b><b><font color="#6699FF">
                                           
</font></b>
<p><font face="Geneva, Arial, Helvetica, sans-serif">        <font face="Geneva, Arial, Helvetica, san-serif">Copies
</font></font><font face="Geneva, Arial, Helvetica, sans-serif">adressées
à :</font></p>
<p>      
<textarea name="chpsrqs" cols="60" rows="3"></textarea>
  </p>
<p>  </p>
<p align="left"> <b> <font size="3">           
              
<input type="submit" value=" ENREGISTRER " name="enregistrer">
            
<input type="reset" name="annuler" value=" ANNULER ">
<br>
<br>
</font></b></p>
</form>
</body>
</html>
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
20 févr. 2003 à 12:21
Erreur d'étourderie.
Remplace ton :
1++
par
i++

De plus, outerHTML n'est pas officialisé dans les DOM (level 1 en tout cas). Utilise plutôt innerHTML, comme ceci :

function changeliste() {
choix = document.monform.listeService.value;
t = "";
for (i=0; i<liste[choix].length-1;i++)
t+= "<option>"+liste[choix][i]+"</option>";
document.monform.listeNom.innerHTML = t;
}
0
De plus, outerHTML n'est pas officialisé dans les DOM (level 1 en tout cas). Utilise plutôt innerHTML, comme ceci :

je ne comprends pas pourquoi tu dis ça ?? tu peux m'expliquer la différence entre les deux parce que je n'y connais rien au javascript !!!
0
bon, et bien j'ai essayer de faire comme tu m'as dit, mais c'est tjs pareil !!! j'ai encore des erreurs et elles sont placées dans le code html alors que je l'ai fait avec dreamweaver !!!
0
j'en ai marre !!! j'arrete pas de m'arracher les cheveux !!!
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
21 févr. 2003 à 03:24
J'ai testé ton code source en y remplaçant ma fonction et ça marche très bien (Mozilla).

Ce que je voulais dire, c'est que outerHTML ne fonctionnait pas sur de nombreux navigateurs...
0