Bonjour,
J'ai une question à vous soumettre concernant mon script qui permet de gérer la localisation de mes utilisateurs par le biais de trois listes : Pays, Région, Département.
Le principe est donc qu'à chaque fois que l'utilisateur change de pays, les deux autres listes se mettent à jour pour afficher le contenu correspondant, et lorsqu'il change la région, c'est la liste des départements dépendants qui s'actualise.
Voici mon script Ajax
et mon code HTML/PHP
Je ne vous ai mis que la fonction goregions() pour alléger un peu, mais j'ai bien évidemment celle intitulée godepartements().
Mon problème est que ça marche quand ça veut (hier ça marchait très bien, aujourd'hui plus rien, alors que je n'ai fait aucun changement...).
Comme vous le constatez, comme j'ai ce formulaire sur différentes pages, j'ai fait en sorte que mes fonctions acceptent le nom du formulaire en argument. Et je pense que le problème vient de là mais je n'arrive pas à le résoudre.
Avez-vous une idée pour me sortir de ce mauvais pas ??
Merci !
Modifié par xtense (06 Jan 2011 - 15:48)
J'ai une question à vous soumettre concernant mon script qui permet de gérer la localisation de mes utilisateurs par le biais de trois listes : Pays, Région, Département.
Le principe est donc qu'à chaque fois que l'utilisateur change de pays, les deux autres listes se mettent à jour pour afficher le contenu correspondant, et lorsqu'il change la région, c'est la liste des départements dépendants qui s'actualise.
Voici mon script Ajax
function goregions(formulaire){
var l1 = formulaire.elements["pays"];
var l2 = formulaire.elements["regions"];
var l3 = formulaire.elements["departements"];
l3.options.length = 0;
var index = l1.selectedIndex;
if(index < 1){
l2.options.length = 0;
l3.options.length = 0;
}
else {
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", "includes/regions.php", true);
xhr_object.onreadystatechange = function() {
if(this.readyState == 4)
eval(this.responseText);
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "pays="+escape(l1.options[index].value)+"&form="+formulaire.name+"&select=regions";
xhr_object.send(data);
}
}
et mon code HTML/PHP
<form method="post" action="<? echo $script_ajouterevenement; ?>" id="ajouter-evenement">
<select name="pays" onChange="javascript:goregions(ajouter-evenement);">
<option value=""></option>
<? $sel_pays = mysql_query("SELECT * FROM pays ORDER BY P_id ASC");
while($data_pays = mysql_fetch_array($sel_pays)){echo "<option value='".$data_pays['P_id']."'>".$data_pays['P_pays']."</option>";} ?>
</select>
<select name="regions" onChange="javascript:goregions(ajouter-evenement);"></select>
<select name="departements" onChange="javascript:godepartements(ajouter-evenement);"></select>
</form>
Je ne vous ai mis que la fonction goregions() pour alléger un peu, mais j'ai bien évidemment celle intitulée godepartements().
Mon problème est que ça marche quand ça veut (hier ça marchait très bien, aujourd'hui plus rien, alors que je n'ai fait aucun changement...).
Comme vous le constatez, comme j'ai ce formulaire sur différentes pages, j'ai fait en sorte que mes fonctions acceptent le nom du formulaire en argument. Et je pense que le problème vient de là mais je n'arrive pas à le résoudre.
Avez-vous une idée pour me sortir de ce mauvais pas ??
Merci !
Modifié par xtense (06 Jan 2011 - 15:48)