Bonjour,
Débutant sur Ajax, j'utilise un script connu pour créer des listes déroulantes qui est le suivant:
seule différence c'est que j'utilise une base Oracle et non mysql.
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 <script type="text/javascript"> /** * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest */ function sendData(param, page) { if(document.all) { //Internet Explorer var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ; }//fin if else { //Mozilla var XhrObj = new XMLHttpRequest(); }//fin else //définition de l'endroit d'affichage: var content = document.getElementById("contenu"); XhrObj.open("POST", page); //Ok pour la page cible XhrObj.onreadystatechange = function() { if (XhrObj.readyState == 4 && XhrObj.status == 200) content.innerHTML = XhrObj.responseText ; //alert(content.innerHTML); } XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); XhrObj.send(param); }//fin fonction SendData </script>
puis la partie select :
puis le script d'appel dans OnChange :
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 echo "<TR><TD class=\"tnav\"> Choix de la session : </TD>"; echo "<TD>"; // connexion a oracle pour la liste des options de session disponibles Putenv("ORACLE_HOME=/oracle/product/920"); $db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL = TCP) (HOST = xxxxx) ( PORT = xxxxx))) (CONNECT_DATA =(SID=xxxxx)))"; $login='xxx';$mdp='xxx'; $conn=OCILogon($login,$mdp,$db); $i=0; // variable de test $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage if (!$conn) { echo "l'utilisateur n'a pu se connecter"; } else { if (!isset($session)) { $query0="select COD_SESSION,LIBELLE from session"; $state0=ociparse($conn,$query0); OCIexecute($state0); echo "<form method='POST' action='valid.php'>"; ?> <select size='1' name='cat' OnChange="sendData('id='+this.value,'lire_rdv.php')" onKeyUp="sendData('id='+this.value,'lire_rdv.php')"> <?php while (ociFetchInto($state0,$result0)) { // Remplir la liste déroulante des catégories echo "<option value=".$result0[0].">".$result0[1]."</option>"; if ($i==0) { $j=$result0[0]; $i=1; } // garder la valeur du premier enregistrement } } echo "</select></TD></TR>"; echo "<div id=\"contenu\">"; echo "<TR><TD class=\"tnav\"> Choix du rendez-vous : </TD>"; echo "<TD><select size='1' name='souscat'>"; $query1="select COD_SESS,DATE_RDV,HEURE_RDV from rdv where COD_SESS=$j"; //echo $query1; $state1=ociparse($conn,$query1); OCIexecute($state1); $i=0; while (ociFetchInto($state1,$result1)) { echo "<option value=".utf8_encode($result1[0]).">".utf8_encode($result1[1])." ".utf8_encode($result1[2])."</option><br>"; } } OCILogoff($conn); echo "</select></TD></TR>"; echo "</table>"; echo "<table>"; echo "</div>";
premier problème : ça marche dans Firefox et pas du tout sous IE7
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 <?php header('Content-type: text') ; // on déclare ce qui va être affiché $html = ""; // test des POST emis if(isset($_POST['id']) && !empty($_POST['id']) ){ Putenv("ORACLE_HOME=/oracle/product/920"); $db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL = TCP) (HOST = xxxx) ( PORT = xxxx))) (CONNECT_DATA =(SID=xxxxx)))"; $login='xxx';$mdp='xxx'; $conn=OCILogon($login,$mdp,$db); if (!$conn){ $html = "l'utilisateur n'a pu se connecter"; } else { $query1="select COD_SESS,DATE_RDV,HEURE_RDV from rdv where COD_SESS=".$_POST['id']; $state1=ociparse($conn,$query1); OCIexecute($state1); // $i = initialise la variable i $i=0; /*if (ociFetchStatement($state1,$result1)>0) { $html = "<select size='1' name='souscat'>"; } else { $html = utf8_encode("Pas de rdv disponible"); }*/ $html = "<select size='1' name='souscat'>"; while (ociFetchInto($state1,$result1)) { $html .= "<option value=".utf8_encode($result1[0]).">".utf8_encode($result1[1])." ".utf8_encode($result1[2])."</option><br>"; } $html .= "</select>"; } OCILogoff($conn); } print $html; ?>
deuxième problème : sous Firefox ça m'affiche un nouveau select au lieu de rafraichir le select déja existant.
une solution ? merci de votre aide
Partager