[AJAX] Remplir un formulaire après sélection dans une liste déroulante
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 :
Code:
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;
} |
Et la liste associée :
Code:
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>'; |
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").
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 :
Code:
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 une autre page Ajax.php dans laquelle il n'y a qu'un bête echo pour le moment.
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 !