Probleme php mysql javascript

Bonjour, j’ai un projet web a faire pour les cours, bref, j’ai un soucis :

j’ai une liste déroulante à sélection simple et j’aimerais que lorsque l’utilisateur sélectionne une option, que la value ou le texte de l’option sélectionné soit utilisée dans une requête mysql, et que le résultat de cette requête serve à alimenté un autre select en option, en gros une fois le choix fais dans le premier select, le contenu du deuxième select se mette en place en fonction du 1er choix.

j’avais penser charger tout les select que l’on peut obtenir après le 1er choix, et les mettre en display hidden et affiché, grâce au javascript, le select qui correspond au 1er choix, mais ce n’est pas très optimal :s

donc si quelqu’un sait comment faire j’aimerais qu’il m’explique ^^

Tu peux utiliser ce qu’on appelle ajax. En gros c’est une méthode qui permet, depuis le poste client (donc chez l’utilisateur => javascript), d’appeler un script php, et d’en récupérer le résultat (le résultat étant l’ensemble des “echo” contenu dans le script php).

Donc, sur ton select, tu captes les évènements onChange(). Lorsque c’est fait, tu utilise “l’ajax” pour envoyer l’id ou le nom de l’option sélectionnée (l’envoi des arguments peut se faire en “POST” ou “GET”, comme pour les formulaires).
Ensuite tu récupères la réponse, et tu modifies le code html de ton 2e select.

Ci dessous, la fonction javascript qui te permet de “communiquer” avec le script php (méthode POST, mais bon c’est pas trop dur pour changer en GET si besoin est).

function filePOST(fichier, data)
{
	if(window.XMLHttpRequest) // firefox
		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // IEShit
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return(false);
		
	xhr_object.open("POST", fichier, false);
	xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr_object.setRequestHeader("Content-length", data.length);
	xhr_object.send(data);
	if(xhr_object.readyState == 4)
		return(xhr_object.responseText);
	else return(false);
}

date est une chaine de caractère. Exemple: data=“nom=valeur”
Edité le 01/11/2009 à 14:07

oui c’est ce que j’ai fais :-), c’est long a mettre en place mais ca marche parfaitement (il faut quand meme faire attention au charset)

merci