Bonjour
mon problème est pour pas changer lié aux différences entre IE et FF :
Situation :
j'ai 3 select que je veut chainer :
1-Select Site :
2- Select Serveur (disponible au site )
3- Select feature (fonction disponible sur le serveur )
Avec FF tout marche bien ,
Avec IE la première dépendance se fait :
Donc en sélectionnant le Site la liste des serveurs est mise a jour .
Mais en continuant et sélectionnant Un serveur rien ne se passe sur la 3Eme select ( donc features ).
je précise que j'utilise strictement le même procéder en ce qui concerne le JS et le PHP pour gérer la dépendance entre les 3 select.
Néanmoins ce que j'ai remarquer c'est que quand la 2Eme select est mise a jour si je lance un Onchange="getValue()" une simple fonction pour avoir la valeur du selectedIndex ça me donne RIEN sous IE pourtant le SelectedIndex est bien une valeur >0 !!
Voici le code :
le javascript :
Le php pour générer les nouvelles valeurs du select
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
76
77
78 /************************************************************************************************* * Function : setXhr() * Init an XMLHTTPREQUEST * **************************************************************************************************/ function setXhr() { var xhr; if(window.XMLHttpRequest) // FIREFOX xhr = new XMLHttpRequest(); else if(window.ActiveXObject) // IE xhr = new ActiveXObject("Microsoft.XMLHTTP"); else { // XMLHttpRequest non supporté par le navigateur } return xhr; } /************************************************************************************************* * Function : getServer() * Dynamically got server's list for a given site * **************************************************************************************************/ function getServer() { var f = document.forms["showData"] ; var s1 = f.elements["lssite"]; var s2 = f.elements["lsserver"]; var index = s1.selectedIndex; if(index<0) f.elements["lsserver"].options.length = 0; else { var xhr = setXhr(); xhr.open("POST", "include/filteredserver.php", true); xhr.onreadystatechange = function() { if(xhr.readyState == 4) eval(xhr.responseText); } xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); var data = "site="+escape(s1.options[index].value)+"&form="+f.name+"&select=lsserver"; xhr.send(data); } } /************************************************************************************************* * Function : getSFeature() * Dynamically got features 's list for a given server * **************************************************************************************************/ function getSFeature() { var f = document.forms["showData"] ; var s1 = f.elements["lsserver"]; var s2 = f.elements["lsfeature"]; var index = s1.selectedIndex; if(index<0) f.elements["lsfeature"].options.length = 0; else { var xhr = setXhr(); xhr.open("POST", "include/filteredserver.php", true); xhr.onreadystatechange = function() { if(xhr.readyState == 4) eval(xhr.responseText); } xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); var data = "server="+escape(s1.options[index].value)+"&form="+f.name+"&select=lsfeature"; xhr.send(data); } }
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 <?php header('Content-type: text/html; charset=iso-8859-1'); include("dbmanager.php"); dbconnect(); if(isset($_POST[site])) { $site = $_POST[site]; $requete = ($site == "All")? "SELECT DISTINCT name FROM server" : "SELECT name FROM server WHERE site='$site'"; $result = request($requete); echo 'var o = null;'; echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];'; echo 's.options.length = 0;'; echo 's.options[s.options.length] = new Option("All");'; while($r = mysql_fetch_array($result)) echo 's.options[s.options.length] = new Option("'.$r[0].'");'; } if(isset($_POST[server])) { $server = $_POST[server]; $requete = ($site == "All")? "SELECT DISTINCT name FROM features where server!='local'" : "SELECT name FROM features WHERE server='$server'"; $result = request($requete); echo 'var o = null;'; echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];'; echo 's.options.length = 0;'; echo 's.options[s.options.length] = new Option("All");'; while($r = mysql_fetch_array($result)) echo 's.options[s.options.length] = new Option("'.$r[0].'");'; } dbclose(); ?>
Et finalement le HTML du depart :
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 <form name='showData' method="POST" action="index.php?page=data"> <p> <table class = "specTable"> <tbody class = "specBody"> <tr> <td> <label>Site</label> </td> <td> <select name="site" id="lssite" onChange="getServer()"> <option value="All">All</option> <?php $rep = request("SELECT DISTINCT site FROM server"); while($data = mysql_fetch_array($rep)) { if(isset($chsite) && $data[0] == $chsite) echo "<option value='".$data[0]."' selected='selected'>".$data[0]."</option>"; else echo "<option value='".$data[0]."'>".$data[0]."</option>"; } ?> </select> </td> <td> <label>Server</label> </td> <td> <select name="server" id="lsserver" onChange="getSFeature()"> <option value="All">All</option> <?php $query = $chsite != "All" ? "SELECT DISTINCT name FROM server WHERE site='$chsite' ORDER BY 'name' ASC" : "SELECT DISTINCT name FROM server"; $rep = request($query); while($data = mysql_fetch_array($rep)) { if(isset($chserver) && $data[0] == $chserver) echo "<option value='".$data[0]."' selected='selected'>".$data[0]."</option>"; else echo "<option value='".$data[0]."'>".$data[0]."</option>"; } ?> </select> </td> <td> <label>Feature</label> </td> <td> <select name="feature" id ="lsfeature"> <option value="All">All</option> <?php $query = $chserver != "All" ? "SELECT DISTINCT name FROM features WHERE server='$chserver' ORDER BY 'name' ASC" : "SELECT DISTINCT name FROM features WHERE server!='local'"; $rep = request($query); while($data = mysql_fetch_array($rep)) { if(isset($chfeature) && $data[0] == $chfeature) echo "<option value='".$data[0]."' selected='selected'>".$data[0]."</option>"; else echo "<option value='".$data[0]."'>".$data[0]."</option>"; } ?> </select> </td> <td> <input type="button" value="Go !" onclick ="validate()" /> </td> </table> </p> </form>
Merci pour l'aide
Partager