Liste déroulantes dynamiques

willow -  
 willow -
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 Statut Membre 108
 
mets des points-virgules (;) a la fin de chaque instruction javascript pour commencer...
0
Bobinours Messages postés 2903 Statut Membre 504
 
C'est recommandé pour la lisibilité, mais pas obligatoire ;-)
0
wiwimagique Messages postés 481 Statut Membre 108 > Bobinours Messages postés 2903 Statut Membre
 
ah bon?
je m'evertue a mettre des ; pour rien alors ?
0
Bobinours Messages postés 2903 Statut Membre 504 > Bobinours Messages postés 2903 Statut Membre
 
Pas pour rien. Ca permet de mettre deux instructions sur la même ligne. Et je trouve ça plus propre.
0
willow
 
ps : j'y connais rien au javascript !
0
willow
 
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
willow
 
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 2903 Statut Membre 504
 
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
willow
 
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
willow
 
je vois pas ce que je peux faire !!!
0
Bobinours Messages postés 2903 Statut Membre 504
 
Mais quelle peut-être donc la ligne 19 ?! (et la précédente ?)
0
willow
 
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 2903 Statut Membre 504
 
Normal, regarde bien, je n'ai pas mis de guillement à la fin :

$sql2 = "SELECT nomdestinataire FROM destinataire WHERE refnoservice = ". $val['noservice'];
0
willow
 
ah ah!! petit farceur !!!
0
willow
 
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
willow
 
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 2903 Statut Membre 504
 
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
willow
 
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 2903 Statut Membre 504
 
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
willow
 
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
willow
 
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
willow
 
j'en ai marre !!! j'arrete pas de m'arracher les cheveux !!!
0
Bobinours Messages postés 2903 Statut Membre 504
 
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