Bonjour,
Avant toute remarque je pr�cise que j'ai d�j� recherch� sur le forum des posts similaires � mon probl�me mais qu'aucun n'a pu m'aider, et que j'ai d�j� lu le cours sur les listes li�es car je l'ai d�j� mis en place et �a marchait.
Maintenant le pourquoi de mon post
Voila j'affiche trois listes d�roulantes sur ma page, remplies via une requ�te SQL faite au serveur.
Lorsque je s�lectionne une option dans la premi�re liste, la deuxi�me se r�duit comme je le veux.
Par contre, je cherche � updater en m�me temps la troisi�me liste.
�galement, lorsque je s�lectionne une option dans la deuxi�me, la troisi�me doit encore se modifier.
Pour plus de compr�hension, la premi�re liste correspond aux types, la deuxi�mes aux projets et la troisi�me aux applications.
L'encapsulation est la suivante : les applis sont regroup�es par projet, regroup�s eux m�me par type.
En clair je souhaite que lorsqu'on s�lectionne un type, on ne voit plus que les projets et les applis correspondantes, et idem entre les projets et les applis.
Voici mon code : (sans les options dans les listes pour ne pas encombrer)
Tout d'abord la page principale :
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 <div style="display:inline;" > <select name="appTypeName" onchange="updateProjectList(this.value);updateApplicationList(this.value, null);" > </select> </div> <div style="display:inline;" id="projectList" > <select name="projName" onchange="updateApplicationList(null, this.value);" > </select> </div> <div style="display:inline;" id="applicationList" > <select name="appName" > </select> </div>
Ensuite le script javascript qui contient les fonctions :
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 function getXhr() { var xhr = null; if(window.XMLHttpRequest) xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { alert("Your browser doesn't support XMLHTTPRequest objects ..."); xhr = false; } return xhr; } function updateProjectList(appTypeName){ var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; document.getElementById('projectList').innerHTML = ''; document.getElementById('projectList').innerHTML = leselect; } } xhr.open("POST","projectList.php",true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send("appTypeName="+appTypeName); } function updateApplicationList(appTypeName, projName){ var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; document.getElementById('applicationList').innerHTML = ''; document.getElementById('applicationList').innerHTML = leselect; } } xhr.open("POST","applicationList.php",true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send("appTypeName="+appTypeName+"&projName="+projName); }
Je pense qu'il est inutile de mettre le script php qui update la liste des projets car cette partie fonctionne parfaitement, voila donc le script qui update la liste des applications :
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 <?php /** * This script modify the application list on the incident page according to the selected application's type and the selected project */ if (isset($_POST['appTypeName'] && isset($_POST['projName'])) { require_once("../../scripts/functions.php"); require_once("../../scripts/values.env"); $appTypeName = unescapeForm($_POST['appTypeName']); $projName = unescapeForm($_POST['projName']); $connect = connection(); //we will display a list which contains all the project's names echo '<select name="appName" > <option value="" ></option>'; if ($projName == "" || $projName == null) { if ($appTypeName == "" || $appTypeName == null) { $sqlRequest = 'SELECT appName, projName FROM Application'; } else { $sqlRequest = 'SELECT appName, projName FROM Application WHERE ProjName LIKE\'%'.escapeRequest($appTypeName).'/%\''; } } else { $sqlRequest = 'SELECT appName, projName FROM Application WHERE ProjName=\''.escapeRequest($projName).'\''; } $res = request($connect, $sqlRequest); //remplissage des listes echo '</select> '; } echo 'ok'; ?>
Voila. Ce que j'ai donc: la liste des projets est correctement updat�e, mais la liste des applications disparait (et il n'y a aucune erreur javascript)
Merci d'avance pour votre aide car je cherche depuis hier soir sans r�sultat ...
Partager