[AJAX] Aide sur la liste deroulante
Bonjour a tous, je sollicite votre aide car cela fait plus d'une semaine que je galére pour une simple recuperation de 3 variables d'un select.
Voila mon probleme:
J'ai une base SQL contenant deux tables (departement et ville), toutes les listes des deparetements et villes se remplissent bien via une requete, mais je n'arrive pas a recuperer 3 valeurs qui sont dans la table ville ayant pour nom de champ (lat, lon et cp).
Je voudrais que quand je selectionne une ville dans la liste, que je puisse recuperer sa lat lon et son cp dans 3 champs input, bien entendu les input changent avec une autre selection de la liste...la je coince grave, j'ai tout essayé mais le langage Ajax je ne connais pas trop...
Voila les champs qui sont dans les tables:
- Table departement
- id_departement
- code_departement
- nom_departement
- filtre
Table ville
- id_ville
- id_departement
- ville
- filtre
- cp
- lat
- lon
Les fichiers utilisés:
index.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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
| <html>
<head>
<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<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 recherche_departements(){
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 Villes a la liste
document.getElementById('ville').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","cfg.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 du Département
sel = document.getElementById('departement');
id_departement = sel.options[sel.selectedIndex].value;
xhr.send("id_departement="+id_departement);
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
function go_latitude(){
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 Codes Postaux a la liste
document.getElementById('ville').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","cfg.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('cp');
document.getElementById('code_postal').value= xhr.responseText;
id_ville = sel.options[sel.selectedIndex].value;
xhr.send("cp="+cp);
}
// function change2()
// {
// var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
// xhr.onreadystatechange = function(){
// if(xhr.readyState == 4 && xhr.status == 200){
// var rst = xhr.responseXML;
// var items=rst.getElementsByTagName('element');
// document.getElementById('ville').options.length=0;
// for(var i=0;i<items.length;i++){
// var myOption = new Option(items[i].getElementsByTagName('option')[0].firstChild.nodeValue,items[i].getElementsByTagName('valeur')[0].firstChild.nodeValue,false,true);
// document.getElementById('ville').options[i]=myOption;
// }
// document.getElementById('ville').onchange = function(){change2();}
// }
//}
</script>
</head>
<body>
<form>
<fieldset style="width: 1000px">
<legend>Liste des Deparetments</legend>
<label>Choisir Departement</label>
<select name='departement' id='departement' onchange='recherche_departements()'>
<option value='-1'>Aucun</option>
<?
mysql_connect("localhost","root","bbjodel");
mysql_select_db("france");
$res = mysql_query("SELECT id_departement, nom_departement FROM departement ORDER BY id_departement");
while($row = mysql_fetch_assoc($res)){
$accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
$sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
$row1 = strtr(utf8_encode($row['id_departement']),$accent,$sansaccent);
$row2 = strtr(utf8_encode($row['nom_departement']),$accent,$sansaccent);
echo "<option value='".$row1."'>".$row2."</option>";
}
?>
</select>
<label>Villes</label>
<div id='ville' style='display:inline'>
<select id="ville" name='ville'>
<option value='-1'>Choisir une Ville</option>
</select>
</div>
<input name='code_postal' id='code_postal' value="">
</fieldset>
</form>
</body>
</html> |
cfg.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
| <?php
// echo "<select name='ville' id='ville' onchange='go_latitude()'>";
//echo "<select name='ville' id='ville' onchange='javascript:this.form.lat.value=this.form.ville.value';>";
//echo "<select name='ville' id='ville' onchange='javascript:this.form.lat.value=".$latlon."';>";
echo "<select name='ville' id='ville' onchange=go_latitude();>";
//cho "<input name='code_postal' id='code_postal' value="">";
if(isset($_POST["id_departement"])){
mysql_connect("localhost","root","bbjodel");
mysql_select_db("france");
$res = mysql_query("SELECT id_ville, ville, cp, lat, lon FROM ville WHERE id_departement=".$_POST["id_departement"]." ORDER BY id_ville");
$accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
$sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
while($row = mysql_fetch_assoc($res)){
$row1 = strtr(utf8_encode($row['lat']),$accent,$sansaccent);
$row2 = strtr(utf8_encode($row['lon']),$accent,$sansaccent);
$row3 = strtr(utf8_encode($row['ville']),$accent,$sansaccent);
$row4 = strtr(utf8_encode($row['cp']),$accent,$sansaccent);
// $latlon = $row1." ".$row2;
echo '<option value="'.$row.'"> '.$row3.' '.$row1.' '.$row2.' '.$row4.'</option>';
// echo "<input name='codes_postaux' id='codes_postaux' value=".'cp'.">";
// echo "<option value='".$row['']."'>".$row['ville'].' '.$row['lat'].' '.$row['lon']."</option>";
}
}
// echo "<input name='codes_postaux' id='codes_postaux' value=".$row4.">";
echo "</select>";
// echo "<input name='codes_postaux' id='codes_postaux' value=".$row4.">";
//echo "<select input name=\"ville\"><option value=\"'. $row4.'\">'.$row4.' </select> ";
?> |
Pouvez vous m'aider ?
:cry: Amicalement Fred