Je veux faire une sélection multiple et voici :
le script qui me permet de sécetionner le pays :
ajax.php
<html>
<head>
<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 go1(){
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('region').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","region.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('pays');
idpays = sel.options[sel.selectedIndex].value;
xhr.send("idPays="+idpays);
}
</script>
</head>
<body>
<form>
<fieldset style="width: 760px">
<legend>Liste liées</legend>
<label>Pays</label>
<select name='pays' id='pays' onchange='go1()'>
<option value='-1'>[ Choisir un pays ]</option>
<?
mysql_connect("localhost","gelux","facturier");
mysql_select_db("test");
$res = mysql_query("SELECT * FROM pays ORDER BY nom");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["id_pays"]."'>".$row["nom"]."</option>";
}
?>
</select>
<label>Région</label>
<div id='region' style='display:inline'>
<select name='region'>
<option value='-1'>[ Choisir une région ]</option>
</select>
<label>Ville</label>
<div id='ville' style='display:inline'>
<select name='ville'>
<option value='-1'>[ Choisir une ville ]</option>
</select>
</div>
</fieldset>
</form>
</body>
</html>
Le second script sert à sélectionner la région du pays choisi:
region.php
<html>
<head>
<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 go2(){
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('ville').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ville.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('region');
idregion = sel.options[sel.selectedIndex].value;
xhr.send("idRegion="+idregion);
}
</script>
</head>
<body>
<?php
echo '<input type="hidden" id="valeur" name="valeur" value="'.$_POST["idPays"].'">';
echo "<select name='region' id='region' onchange='go2()'>";
if(isset($_POST["idPays"])){
mysql_connect("localhost","gelux","facturier");
mysql_select_db("test");
$res = mysql_query("SELECT * FROM region
WHERE id_pays=".$_POST["idPays"]." ORDER BY nom") or die ('EREUR'.mysql_error());
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["id_region"]."'>$row[nom] ($row[id_region]) </option>";
}
}
echo "</select>";
?>
<label>Ville</label>
<div id='ville' style='display:inline'>
<select name='ville'>
<option value='-1'>[ Choisir une ville ]</option>
</select>
</div>
</body>
</html>
La troisième page me permet enfin de sélectionner la ville associée:
ville.php
<?php
echo "<select name='ville'>";
if(isset($_POST["idRegion"]) AND isset(($_POST["idValeur"]))){
mysql_connect("localhost","gelux","facturier");
mysql_select_db("test");
$res = mysql_query("SELECT * FROM ville
WHERE id_pays=".$_POST["idValeur"]." AND id_region=".$_POST["idRegion"]." ORDER BY nom") or die ('EREUR'.mysql_error());
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["id_ville"]."'>$row[nom] ($row[id_region]) </option>";
}
}
echo "</select>";
?>
Mon gros problème est que les deux dernières pages ne répondent pas.
SVP, aidez moi à trouver une solution car cela fait longtemps que je traine sur ce code.
Merci pour tout !!!