C est à nouveau moi et mes pb d XMLHTTPREquest (Siddh va s arracher les cheveux de voir que je suis à nouveau là).
Bon et bien je ne m en sors pas ...

J ai trois menus déroulants : l1, l2 (qui dépend de l1) et l3 (qui dépend de l1).
Je veux donc que l2 et l3 soient chargés en fonction de la valeur selectionnée dans l1.
Siddh m a beaucoup aidé et pour l2 ça fonctionne ... Mais j ai du mal à voir comment faire cela pour deux listes en mm temps car je ne crois pas quon puisse déclarer 2 XMLHTTPRequest.

Voici le code pour l2 :
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
?>
<html>
	<head>
		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
		<script type='text/JavaScript'>
			var xhr = null;
                         function getXhr(){       
    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 { // XMLHttpRequest non supporté par le navigateur
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
            xhr = false;
         }
}
 
			/**
			* Méthode qui sera appelée sur le click du bouton
			*/
			function go(){
                          getXhr();
				if(xhr){
					// On défini ce qu'on va faire quand on aura la réponse
					xhr.onreadystatechange = function(){
						// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
						if(xhr.readyState == 4 && xhr.status == 200){
 
                                                        leselect = xhr.responseText;
                                                        document.getElementById("machine").innerHTML = leselect;
 
					}
 
					// Ici on va voir comment faire du post
					xhr.open("POST","species.php",true);
					// ne pas oublier ça pour le post
					xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					// ne pas oublier de poster les arguments
					// ici, l'id du lieu
					sel = document.getElementById('lieu');
					idlieu = sel.options[sel.selectedIndex].value;
					xhr.send("idLieu="+idlieu);
    }
				else // xhr n'existe pas
					alert("Problème avec le XMLHTTPRequest.");
 
			}
		</script>
	</head>
	<body>
		<form>
			<fieldset style="width: 500px">
				<legend>Liste liées</legend>
				<label>Lieu</label>
				<select name='lieu' id='lieu' onchange='go()'>
					<option value='-1'>choisir un lieu</option>
					<option value='1'>France</option>
					<option value='2'>Angleterre</option>
				</select>
				<div id='machine' style='display:inline'>
<select name='machine'>
      <option value='-1'>Choisir une machine</option>
</select>
</div>
			</fieldset>
		</form>
	</body>
</html>
           <?php ?>
species.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
<?php
        if(isset($_POST['idLieu'])){
                mysql_connect("localhost","root","pass");
                mysql_select_db("maintenance");
                $res = mysql_query("SELECT id_machine,nom FROM machine
                        WHERE id_lieu='".$_POST['idLieu']."' ORDER BY id_machine");
 
        echo "<select name='machine'>";
      while($row = mysql_fetch_assoc($res)){
         echo "<option value='".$row['id_machine']."'>".$row['nom']."</option>";
      }
      echo "</select>";
                mysql_close();
        }
?>
Merci d avance