Bonjour,
j'ai recherché sur le forum et sur Google avant de poster ici mais rien ne correspond à mon problème (ou alors la solution ne fonctionne pas).
J'ai une liste déroulante liste_name de noms alimentée par une requête SQL, et à côté, les champs d'un formulaire form_nom.
J'aimerai, dès que je sélectionne un nom dans la liste, que les champs se remplissent (prénom et age) avec les données correspondantes.
Ex : je clique sur "machin" dans la liste, et directement je remplis prenom : truc, age : 15.
J'ai vu une solution sur le forum qui ne faisait qu'utiliser Javascript :
Et la liste associée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function choicecepage() { document.form_nom.prenom.value = document.form_nom.liste_name.options[document.form_nom.liste_name.selectedIndex].text; document.form_nom.age.value = document.form_nom.liste_name.options[document.form_nom.liste_name.selectedIndex].text; }
Quand je fais ceci, mes champs sont tous remplis avec la valeur sur laquelle j'ai cliqué (par exemple, prenom et age seront remplis avec la valeur "machin").
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $req = 'SELECT nom,prenom,age FROM Personnes;'; echo '<select id="liste_name" name="liste_name" multiple size="8">'; $res = mysql_query($req); // Affichage des valeurs dans la liste while ($ligne = mysql_fetch_array($res)) { echo '<option value='.$ligne[0].' onClick="choicecepage();">'.$ligne[1].'</option>'; } echo '</select>';
Je me suis donc dit que je devais me tourner vers Ajax.
J'ai créé une page saisie.php dans laquelle je mets mon XMLHttpRequest, ainsi que le code pour la liste déroulante.
saisie.php :
Et une autre page Ajax.php dans laquelle il n'y a qu'un bête echo pour le moment.
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 <script type='text/JavaScript'> function getXhr(){ var xhr = null; 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; } return xhr } // Méthode appelée dès click sur un élément de la liste déroulante function go(){ var xhr = getXhr() 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){ alert(xhr.responseText); } } // On envoie la page dans laquelle se trouve l'action à faire dès click sur un élément xhr.open("GET","Ajax.php",true); xhr.send(null); } </script> <?php $req = 'SELECT nom,prenom,age FROM Personnes;'; echo '<select id="liste_name" name="liste_name" multiple size="8">'; $res = mysql_query($req); // Affichage des valeurs dans la liste while ($ligne = mysql_fetch_array($res)) { echo '<option value='.$ligne[0].' onClick="choicecepage();">'.$ligne[1].'</option>'; } echo '</select>'; ?>
Et je ne vois pas où est-ce que je devrais écrire les valeurs que doivent prendre mes champs de formulaire, ni comment.
Donc puis-je garder la solution Javascript (mais il y aura des choses à changer) ou dois-je obligatoirement passer par Ajax (mais je ne vois pas comment écrire mon code :/) ?
Merci !
Partager