Bonjour tout le monde,

J'ai des difficultés pour reconstruire une lise déroulante après l'avoir vidée :

Je vide donc ma liste déroulante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
emptySel(document.getElementById('list_supp_manip'));
Voici le code de ma fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
function emptySel(sel)
{
   //alert(sel);
   while(sel.options[0])
   {
     sel.removeChild(sel.options[0])
   }
}
J'essaie de construire ma liste déroulante avec ce code javascript :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
                                 MesOption=eval("(" + retour + ")");
				alert(MesOption);
				for (key in MesOption) 
				{
					LeTexte = MesOption[key];
					alert(LeTexte);
					LaValeur = key;
					var NewOption = document.createElement('option');
					NewOption.value = LaValeur;
					NewOption.innerHTML=LeTexte;
					document.getElementById('list_supp_manip').appendChild(NewOption);
				}
Ma liste se vide mais je ne remplit pas.

L'alerte suivante ne se lance pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
MesOption=eval("(" + retour + ")");
				alert(MesOption);
J'ai pourtant un retour de PHP qui est le suivant :

{"acridine orange","cycle cellulaire","apoptose TUNEL","apoptose annexin V","Autre"}

Voici mon code PHP au cas où :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<?php
        
        include('../connexion.php');
        $sql = "DELETE FROM manips WHERE ID = ".$_POST['id'];
        $query = mysql_query($sql);
        
        $nombre_res = mysql_affected_rows();
        
        $sql_select = "SELECT * FROM manips";
        $query_select = mysql_query($sql_select);
        
        $return='{';
        //ensuite chaque nom des options separes par des ":"
        while($row = mysql_fetch_assoc($query_select)) 
        {
                //création de la liste déroulante des étudiants non clôturés
                $return .='"'.$row["nom_manip"].'",';   
        }
        //je remplace la derniere virgule par la ) dans la variable $return             
        $return=preg_replace("/,$/","}",$return);
        //je retourne le rsultat a AJAX
        echo trim($return);
 
?>
Edit :

Le problème doit provenir de ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
 
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>Ajout d'une manip </title>
		<script type="text/javascript" src="AJAX/Ajout_manip.js"></script>
		<script type="text/javascript" src="AJAX/xhr.js"></script>
		<script type="text/javascript" src="AJAX/Supprimer_manip.js"></script>
		<script type="text/javascript" src="Fonctions/vider_liste_deroulante.js"></script>
	</head>
 
	<body>
		<div id="form_ajout_manip"><input type="text" id="text_manip" size="50" /></div>
		<p>
		  <input type="button" value="Ajouter cette manip" onclick="Ajouter_manip(document.getElementById('text_manip').value)" />
    	</p>
		<div id="resultat"></div>
		<p>&nbsp;</p>
		<p><img src="images/Point_interrogation.png" alt="D&eacute;tail" width="23" height="23" />&nbsp; Ajoute une manipulation </p>
 
		<div id="form_supp_manip">	
			  <select id="list_supp_manip" onchange="Supprimer_manipulation(this.value)">
			  <option value="">Choisissez la manip à supprimer</option>
 
			<?php
                                include('connexion.php'); 
                                $sql = 'SELECT * FROM manips';
                                $query = mysql_query($sql);
                                while($manip = mysql_fetch_array($query))
                                {
                                        echo '<option value='.$manip['ID'].'>'.$manip['nom_manip'].'</option>';
                                }
                                
                        ?>
			</select>
		</div>
		<div id="resultat_suppression"></div>
 
		<p><img src="images/Point_interrogation.png" alt="D&eacute;tail" width="23" height="23" />Supprime une manipulation</p>
 
	</body>
</html>
C'est la page qui contient la liste déroulante et qui contient l'évènement onchange.

Le code généré de la liste déroulante originale :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<select id="list_supp_manip" onchange="Supprimer_manipulation(this.value)">
Le code de la liste déroulante après génération :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<select id="list_supp_manip" onchange="Supprimer_manipulation(this.value)">  </select>
Le problème devrait donc provenir d'ici.


Merci d'avance.

beegees