Salut !

J'ai un soucis. J'aimerais mettre en place des listes déroulantes liées. J'ai 3 fichiers : index.php contenant les listes déroulantes, Func.js contenant la fonction et liste.php contenant le code php.

La première liste déroulante se charge normalement mais la seconde ne réagit pas en fonction de cette dernière. De plus, j'aimerais pouvoir répéter ce système dans ma page pour d'autres données.

index.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
24
25
26
27
28
29
30
31
32
33
34
35
36
 
<html>
<head>
<SCRIPT type="text/javascript" src="Func.js"></script>
</head>
<body>
<div class="Centered">
	<form class="CenteredForm" name="form_selects" id="form_selects" action="" method="" onsubmit="return false;">
		<fieldset>
			<legend>Choix</legend>
			<div class="Left">
			Département&nbsp;:
			<select name="list1" id="list1" class="ButtonL" onchange="request05(this.form)">
			<option value="" selected="selected">Choix</option>
			<?php
                        require 'Connect.php';
                        mysql_connect(SERVER, NAME, PASSWD) or die('Erreur SQL lors de la tentative de connexion à la base. Détails : '.mysql_error());
                        mysql_select_db(BASE) or die('Erreur SQL lors de la sélection de la base. Détails : '.mysql_error());
                        $listDep = mysql_query("SELECT DISTINCT Dep_Com FROM commune ORDER BY Dep_Com;") 
                                   or die('Erreur SQL lors de la récupération des départements. Détails : '.mysql_error());
                        while ($data = mysql_fetch_assoc($listDep))
                        {
                                echo "<option value".$data['Dep_Com'].">".$data['Dep_Com']."</option>";
                        }
                        ?>
			</select>
 
			<select name="list2" id="list2" class="ButtonL">
 
			</select>
			</div>
		</fieldset>
	</form>
</div>
</body>
</html>
Func.js

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
 
var l1    = f.elements["list1"];   
 var l2    = f.elements["list2"];   
 var index = l1.selectedIndex;   
 if(index < 1)   
    l2.options.length = 0;   
 else {   
    var xhr_object = null;   
 
    if(window.XMLHttpRequest) // Firefox   
       xhr_object = new XMLHttpRequest();   
    else if(window.ActiveXObject) // Internet Explorer   
       xhr_object = new ActiveXObject("Microsoft.XMLHTTP");   
    else { // XMLHttpRequest non supporté par le navigateur   
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");   
       return;   
    }   
 
    xhr_object.open("POST", "liste.php", true);   
 
    xhr_object.onreadystatechange = function() {   
       if(xhr_object.readyState == 4)   
          eval(xhr_object.responseText);   
    }   
 
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");   
    var data = "departement="+escape(l1.options[index].value)+"&form="+f.name+"&select=list2";   
    xhr_object.send(data);   
 }
liste.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
header('Content-type: text/html; charset=iso-8859-1');   
 
 // Déclaration des fichiers à utiliser
 require 'Connect.php';
 
 // On se connecte à la de données
 mysql_connect(SERVER, NAME, PASSWD) or die('Erreur SQL lors de la tentative de connexion à la base. Détails : '.mysql_error());
 mysql_select_db(BASE) or die('Erreur SQL lors de la sélection de la base. Détails : '.mysql_error());
                                   
 $query  = "SELECT DISTINCT Cp_Com FROM commune WHERE Dep_Com = '".$_POST["departement"]."'";   
 $query .= " ORDER BY Cp_Com;";   
 $result = @mysql_query($query);   
   
 echo 'var o = null;';   
 echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';   
 echo 's.options.length = 0;';   
 while($r = mysql_fetch_array($result))   
     echo 's.options[s.options.length] = new Option("'.$r["departement"].'");';   
 
 @mysql_close($mysql_db); 
 ?>
Quelqu'un peut m'aider svp ? Ce serait sympa car c'est très urgent !

Merci d'avance...