alimenter un formulaire via une liste deroulante

Répondre
delfyno
le 25/06/2009 à 11:07
delfyno
Bonjour,
pour mon stage j'ai crée un formulaire contenant une liste déroulante et j'aimerais, lorsque je sélectionne un élément de ma liste déroulante, que les données correspondantes qui sont dans la base de données s'affichent dans le formulaire, je pense qu'il faut passer par AJAX pour éviter que la page se recharge mais je ne sais du tout comment faire.
Merci d'avance pour votre aide
delfyno
le 25/06/2009 à 11:09
delfyno
au fait voici mon code
<?include ("connection.php");?>
<link rel="StyleSheet" type="text/css" href="http://wsb.torop.net/css/style.css">
<style type="text/css">
A:VISITED,A:LINK,A:ACTIVE {
font-family:arial;
text-decoration:none;
color:#FF3300;
}
A:HOVER {
font-family:arial;
text-decoration:underline;
color:#FF3300;
}
</style>

<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 qui sera appelée sur le click du bouton
*/
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
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){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('livre').innerHTML = leselect;
}
}

// Ici on va voir comment faire du post
xhr.open("POST","ajaxArticles.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id de l'auteur
sel = document.getElementById('article');
idauteur = sel.options[sel.selectedIndex].value;
xhr.send("idArticle="+idarticle);
}
</script>

<form method='POST' action='liste3.php' class='txtBlanc'>
<div align='center'>
<input type='hidden' name='noArticle' value=''>
</div>
<br>

<div width='100%'>
<div style='text-align:right;float:left;width:45%;height:30px;margin:3px;'>
Date :
</div>

<div style='text-align:left;float:left;width:45%;height:30px;margin:3px;'>
<input type='texte' name='date' style='width:65px' value='<?=$date=date(d.m.y);?>'>
</div>
</div>

<div width='100%'>

<?php
connectMaBase();
?>
<div style='text-align:right;float:left;width:45%;height:30px;margin:3px;'>
Article :
</div>
<div style='text-align:left;float:left;width:45%;height:30px;margin:3px;'>
<select name='idArticle' id='' onchange='go()' style='width:300px'><option value=''>Choisir un article</option>
<?
$resultat=mysql_query("select nomArticle from article order by noArticle") or die ("requète non executé");
if (! $resultat) { echo "Erreur requete"; exit;}
while ($ligne=mysql_fetch_array($resultat))
{
?>
<option><?= ''.$ligne['nomArticle'].'';?> </option>
<?php
}

if($liste1 != -1){ //si on a fait un choix
//on refait une requette avec une condition
$sql = "SELECT nomArticle, intituléArticle, descArticle, prixArticle FROM article WHERE idArticle='".$idArticle."'";
$requete = mysql_query($sql);

echo $nomArticle; echo "<br>";
echo $intituleArticle; echo "<br>";
echo $descArticle; echo "<br>";
}
mysql_close();
?>
</select>
</div>
</div>

<div id='identClient'>
<div width='100%'>
<div style='text-align:right;float:left;width:45%;height:30px;margin:3px;'>
Nom de l'article :
</div>
<div style='text-align:left;float:left;width:45%;height:30px;margin:3px;'>
<input type='text' name='nomArticle' value='<?=$ligne['nomArticle'];?>' style='width:300px'>
</div>
</div>

<div width='100%'>
<div style='text-align:right;float:left;width:45%;height:30px;margin:3px;'>
Intitulé :
</div>
<div style='text-align:left;float:left;width:45%;height:30px;margin:3px;'>
<input type='text' name='intituleArticle' value='<?=$donnees['intituléArticle'];?>' style='width:300px'>
</div>
</div>

<div width='100%'>
<div style='text-align:right;float:left;width:45%;height:30px;margin:3px;'>
Description :
</div>
<div style='text-align:left;float:left;width:45%;height:30px;margin:3px;'>
<TEXTAREA name='description' rows=4 style='width:300px'></TEXTAREA>
</div>
</div>

<div width='100%'>
<div style='text-align:right;float:left;width:45%;height:30px;margin:3px;'>
Montant :
</div>
<div style='text-align:left;float:left;width:45%;height:30px;margin:3px;'>
<input type='text' name='prix' id='' value='' onChange='totalFacture()' style='width:40px;text-align:right;'> &euro;
</div>
<input type="submit" name="enregistrer" value="Enregistrer">
</div>

</form>
LA GLOBULE
le 25/06/2009 à 12:06
LA GLOBULE
Qu'est ce qui bug ? L'appel ajax se fait il ?

(je te conseille fortement d'utiliser l'extension firebug de firefox pour développement des trucs ajax, ca aide énormement)
delfyno
le 25/06/2009 à 13:37
delfyno
j'aimerais qu'en fait quand je choisis un article dans la liste déroulante, les données correspondantes à cet article s'affichent dans le formulaire mais cela ne se fait pas et je ne sais comment le faire
LA GLOBULE
le 25/06/2009 à 14:00
LA GLOBULE
Est ce que l'appel ajax se fait ?
Tu vois passer la requete http en utilisant firebug ou wireshark ?
delfyno
le 25/06/2009 à 14:18
delfyno
franchement je ne comprends rien a ce que tu me dis là car ajax j'ai commencé que hier seulement le code que j'ai posté c'est copier coller, c'était pour la liste des clients de mon maître de stage qui m'a demandé de faire la même chose pour la liste des articles, ça serait si tu pouvais me poster un script qui marche avec quelques explications s'il te plaît ou alors m'expliquer un peu comment faire pas à pas, ce dont j'aurais besoin.
rappel: j'ai fais un formulaire et j'aimerais que les champs de ce formulaire se remplissent lorsque je choisis un article dans la liste déroulante. Merci d'avance
LA GLOBULE
le 25/06/2009 à 16:22
LA GLOBULE
Ce que je te demande, c'est d'installer l'extension firebug de firefox ou bien le logiciel wireshark et regarder si l'appel ajax se fait (autrement dit, si la requete http se lance bien quand tu changes la valeur du menu déroulant).
delfyno
le 25/06/2009 à 17:09
delfyno
oui la requete se lance mais les champs du formulaire ne sont pas remplis
LupusMic
le 26/06/2009 à 18:15
LupusMic
Come La Globule, je suis bien curieux. Que contient XMLHttpRequest.responseText ?

Moi je parie sur rien.

La raison est simple. Si la ressource réclamée a un type mime correspondant à un type de fichier XML (application/xhtml+xml, text/html, etc) alors XMLHttpRequest.responseXML contient l'arbre du document correspondant à la ressource réclamée, et XMLHttpRequest.responseText est undefined.

Spécification du DOM XMLHttpRequest.
XHR sur MDC.
XHR sur MSDN.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours