Bonjour,

je suis en train de développer un formulaire avec 2 listes déroulantes liées :
- La première liste déroulante avec les pays
- La seconde liste est dynamique. Elle affiche les villes du pays choisi précédemment

Mon code marche parfaitement avec Firefox, mais dans IE, quand on a choisi un pays (ici la France), la liste déroulante des villes reste vide.

Avec Firefox :


Avec IE :


Voici le code HTML:
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
<td align="left" class="Style4">Mon pays de résidence</td>
<td align="left" valign="middle" class="Style4">
<?php lister('pays','nom_pays');?>
</td>
</tr>
<tr>
<td align="left" class="Style4">Ma ville de résidence</td>
<td align="left" valign="middle" class="Style4"><select name="id_ville" id="id_ville" style="width:200px">
<?php 
echo '<option value="0"';
echo '>choisissez un pays</option>';
echo '</select>';
?>				
</td>
</tr>
lister.php
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
<?php
function lister ($table,$nomchamp) {
$requete = "select $nomchamp from $table order by $nomchamp";
$resultat = mysql_query($requete) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
echo '<select name="'.'id_'.$table.'" id="'.'id_'.$table.'" style="width:200px" onchange="go()">';
 
echo '<option value="0"';
if(!isset($_POST['id_'.$table])) { echo 'selected=\"selected\"';} 
 
echo '>choisissez...</option>';
$i = 1;
 
while ($ligne = mysql_fetch_array($resultat)) {
echo '<option value="'.$i.'"'; 
 
echo '>'.$ligne[$nomchamp].'</option>';
 
$i++;
}
echo'</select>';
}
?>
lister_villes.php
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
<?php
if(isset($_POST["id_pays"])){
require_once 'connectbdd.php'
require_once 'donne_pays.php';
$pays = $_POST["id_pays"];
$pays = donne_pays($pays);
 
require_once 'connectbdd.php';                            
$resultat = mysql_query('SELECT nom_ville FROM '.$pays.'_villes'.' ORDER BY nom_ville') 
or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
$i = 1;
 
while ($ligne = mysql_fetch_array($resultat)) {
echo '<option value="'.$i.'"'; 
 
echo '>'.$ligne['nom_ville'].'</option>';
 
$i++;
}
echo'</select>';
}
?>
Partie Ajax :
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
function getXhr(){
var xhr = null; 
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest(); 
else if(window.ActiveXObject){ // Internet Explorer 
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}else { 
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
xhr = false; 
} 
return xhr;
}
 
function go(){
var xhr = getXhr();
 
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
 
document.getElementById('id_ville').innerHTML = leselect;
}
}
 
xhr.open("POST","lister_villes.php",true);
 
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 
sel = document.getElementById('id_pays');
idpays = sel.options[sel.selectedIndex].value;
xhr.send("id_pays="+idpays);
}
Je crois qu'il faut mettre une balise div dans le code HTML mais j'ai essayé plusieurs solutions et ça ne fonctionne toujours pas.

Merci de votre aide