Bonjour à tous!
Voilà je suis en stage développement et je suis bloquée sur un problème depuis quelques jours. Je dois faire une page de recherche en fonction des éléments de me bases de données et je dois pour cela créer 3 listes déroulantes de choix. G trouvé un code intéressant qui utilise en plus du javascript dont je connais pas grand chose.....
Le problème est que mes 2 dernières listes ne prennent pas en compte les fonctions qui les concernent, c'est à dire ValideLd2.php et ValideLd3.php. Je m'explique: les 2 dernières listes sont, en fait, ma 1ere liste où j'affiche les noms de toutes les tables de ma base de données. Je sais pas pourquoi les 2 derniers scripts ne sont pas prises en compte. Et j'ai remarqué que quand je mets en commentaires toutes les fonctions de ListeCP.php, ça change rien du tout. Donc ça veut dire que le problème est dû à ListeCP.php. Merci de bien vouloir m'aider car j'y comprends rien et je sais plus quoi faire. Please help me I'm desperateMerci pour vos réponses
ListeCP.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
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Listes déroulantes pilotées par JavaScript Asynchrone et une Base de données</title> <script type="text/javascript"> //var Ld1Id=''; //var Ld2Id=''; //var id_liste=''; function ValideLd2(val) { Ld1Id=val; id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id; ObjetXHR(LD_URL) // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2 if (Ld2Id!='') {ValideLd3(''); } } function ValideLd3(val) { Ld2Id=val; //id_commune id_liste='3'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id; if (Ld2Id=='') {var LD_URL = 'ValideLd3.php';} ObjetXHR(LD_URL) } function ObjetXHR(LD_URL) { //creation de l'objet XMLHttpRequest if (window.XMLHttpRequest) { // Mozilla,... xmlhttp=new XMLHttpRequest(); if (xmlhttp.overrideMimeType) { xmlhttp.overrideMimeType('text/xml'); } xmlhttp.onreadystatechange=ChargeLd; xmlhttp.open("GET", LD_URL, false); xmlhttp.send(null); } else if (window.ActiveXObject) { //IE xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); if (xmlhttp) { xmlhttp.onreadystatechange=ChargeLd; xmlhttp.open('GET', LD_URL, false); xmlhttp.send(); } } // Bouton non apparent car modification de LD1 ou Ld2 document.getElementById('buttons').style.display='none'; } // fonction pour manipuler l'appel asynchrone function ChargeLd() { if (xmlhttp.readyState==4) { if (xmlhttp.status==200) { //span id="niv2" ou "niv3" document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText; if (xmlhttp.responseText.indexOf('disabled')<=0) { //focus sur liste déroulante 2 ou 3 document.getElementById('Liste'+id_liste).focus(); } } } } function Affiche_Btn() { document.getElementById('buttons').style.display='inline'; } </script> <style> #buttons { display: none; } </style> </head> <body> <noscript> <p>Cette page nécessite que JavaScript soit activé; dans votre navigateur </noscript> <div id="Les3LD"> <p>Selectionnez votre choix dans les listes déroulantes:</p> <form method="post" action="ListeCP.php"> <?php include 'ValideLd1.php'; ?> <!--Pour remplir la liste déroulante 1--> <span id="niv2"> <?php include 'ValideLd2.php'; ?></span> <!--Pour remplir la liste déroulante 2--> <span id="niv3"> <?php include 'ValideLd3.php'; ?></span> <!--Pour remplir la liste déroulante 3--> <span id="buttons"> <input type="submit" value="Submit"> </span> </form> </div> </body> </html>
ValideLd1.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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <?PHP include 'bdconnect.php'; $_conn=odbc_connect($_connect_string,"",""); $query="SELECT * from All_tables_and_views;"; $result = odbc_exec($_conn,$query) or die ("Select impossible"); $query_pos_id=0; //position dans le SQL de la clé de la liste déroulante idem dans ValideLd2.php et ValideLd3.php $query_pos_val=1; //position dans le SQL de la valeur de la liste déroulante idem dans ValideLd2.php et ValideLd3.php $back .= '<select name="Liste1" id="liste1" size="1" onchange="ValideLd2(this[this.selectedIndex].value);">'; $back .= '<option selected value="">Choose...</option>'; if (odbc_num_rows($result) == 0) { $back = '<input id="1" type="text" size="10" value="No value" disabled>'; } else while (odbc_fetch_row($result)) { $s1 =odbc_result($result,"Table_name"); $back .= '<option >'. $s1 .'</option>'; } '</select>'; //odbc_free_result($result); //odbc_close($_conn); echo $back ; ?>
ValideLd2.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
37
38
39
40
41 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <?PHP include 'bdconnect.php'; $_conn=odbc_connect($_connect_string,"",""); if (isset($_POST['Ld1'])) {$Ld1_retour = $_POST['Ld1'];} if ($Ld1_retour==''){echo "rien";} //$Ld1_retour='Activities_for_a_sector' ; if ($Ld1_retour!='') { echo "$Ld1_retour"; $query2 ="SHOW COLUMNS FROM '$Ld1_retour';"; $result2 = odbc_exec($_conn,$query2) or die ("Select impossible"); while($colonnes_array = odbc_fetch_array($result2)) { echo $colonnes_array['Field']."<br />"; $back .= '<select name="Liste2" id="liste2" size="1" onchange="ValideLd3(this[this.selectedIndex].value);">'; //$back .= '<option selected value="">Choose...</option>'; //$columns=odbc_num_fields($fields);// récupère le nombre de champs d'un table $back .= '<option value="'. $colonnes_array['Field'] .'">'. $colonnes_array['Field'] .'</option>'; } } '</select>'; echo $back; ?>
ValideLd3.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
37
38
39 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <?PHP include 'bdconnect.php'; $_conn=odbc_connect($_connect_string,"",""); if (isset($_POST['Ld1'])) {$Ld1_retour = $_POST['Ld1'];} if (isset($_POST['Ld2'])) {$Ld2_retour = $_POST['Ld2'];} if (($Ld1_retour!='')&&($Ld2_retour!='')) { $query="Select '$Ld2_retour' from '$Ld1_retour';"; $query_pos_id=0; $query_pos_val=0; $result = odbc_exec($_conn,$query) or die ("Select impossible"); $back .= '<select name="Liste3" id="liste3" size="1" onchange="Affiche_Btn();">'; $back .= '<option selected value="">Choose...</option>'; if (odbc_num_rows($result) == 0) { $back = '<input id="Liste3" type="text" size="10" value="No value" disabled>'; } else if (odbc_num_rows($result) != 0) { while ($row = odbc_fetch_row($result)) { $back .='<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>'; $query_pos_id++; $query_pos_val++; } } '</select>'; } //odbc_free_result($result); // odbc_close($connexion); echo $back ; ?>
Partager