energie13
Invité n'ayant pas de compte PHPfrance
06 févr. 2006, 17:02
Oui la page comporte bien l'extension php.
Lorsque je clique sur la partie dynamique du forulaire (département ou code postal ) les valeurs ne sont pas chargées.
ville.php
Code : Tout sélectionner
<?
$table = "villes";
include("_conn.php");
switch($q=@$_GET["q"]) {
case "1": // Liste des codes postaux
$query = "SELECT DISTINCT Codepos FROM $table"
. " WHERE Departement = '".$_POST["champ"]."' ORDER BY 1";
case "2": // Liste des communes
if(!@$query) $query = "SELECT Commune,INSEE FROM $table"
. " WHERE Codepos = '".$_POST["champ"]."' ORDER BY 1";
echo 'var o = null;';
echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
echo 's.options.length = 0;';
if($q<2) echo 's.options[s.options.length] = new Option("Choisir","");';
$result = @mysql_query($query);
while($r = mysql_fetch_array($result))
echo 's.options[s.options.length] = new Option("'.$r[0].'","'.((@$r[1])?$r[1]:$r[0]).'");';
echo 'update('.$q.');';
break;
default: // Liste des départements
$liste_dpt = "";
$SQL = "SELECT DISTINCT Departement FROM $table ORDER BY 1";
$res = mysql_query($SQL);
while($val = mysql_fetch_array($res))
$liste_dpt .= "<option value=\"".$val[0]."\">".$val[0]."</option>\n";
// Nom de la commune d'après le code INSEE
if(@$adresse["INSEE"]) {
$SQL = "SELECT Commune FROM $table WHERE INSEE='".$adresse["INSEE"]."'";
$res = mysql_query($SQL);
$adresse["Commune"] = mysql_result($res,0,0);
}
}
@mysql_close();
?>
formulaire.php
Code : Tout sélectionner
<?
// On peut aussi extraire ce tableau d'une DB ;)
$adresse = array(
"civ"=>@$_POST["civ"],
"nom"=>@$_POST["nom"],
"prenom"=>@$_POST["prenom"],
"adresse"=>@$_POST["adresse"],
"adresse2"=>@$_POST["adresse2"],
"Departement"=>@$_POST["list0"],
"Codepos"=>@$_POST["list1"],
"INSEE"=>@$_POST["list2"],
);
include("ville.php");
?><HTML><HEAD>
<SCRIPT language="JavaScript">
// Mise à jour des listes via XMLHttpRequest
function liste(f,q,t) {
var l1 = f.elements["list"+(q-1)];
var l2 = f.elements["list"+q];
var index = l1.selectedIndex;
for(i=q;i<=t;i++) f.elements["list"+i].options.length = 0;
if(index > 0) {
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", "ville.php?q="+q, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4)
eval(xhr_object.responseText);
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "champ="+escape(l1.options[index].value)
+"&form="+f.name+"&select=list"+q;
xhr_object.send(data);
}
}
// Mise à jour du selectedIndex d'une liste
function update(L) {
v = new Array;
v[0] = "<?=@$adresse["Departement"]?>";
v[1] = "<?=@$adresse["Codepos"]?>";
v[2] = "<?=@$adresse["INSEE"]?>";
if(v[L]=="") return;
f = document.forms.form_selects;
L0 = f.elements["list"+L];
for(i=0;i<L0.options.length;i++)
if(L0.options[i].value==v[L]) {
L0.selectedIndex=i;
if(L<2) liste(f,L+1,2);
break;
}
}
// Validation du formulaire
function test(f) {
if(f.nom.value!="")
if(f.adresse.value!="")
if(f.elements["list2"].options.length!=0)
return true;
alert("Formulaire incomplet !");
return false;
}
</SCRIPT>
<STYLE TYPE="text/css">
td,select,input { font:normal 8pt Verdana }
.select1 {width:170px}
.select2 {width:80px}
</STYLE>
</HEAD><BODY onload="update(0)">
<strong><?=htmlentities(@$adresse["civ"]." ".ucfirst(@$adresse["prenom"])
." ".strtoupper(@$adresse["nom"]))?></strong><br/>
<?=htmlentities(@$adresse["adresse"])?><br/>
<?if(@$adresse["adresse2"]) echo htmlentities($adresse["adresse2"])."<br/>"?>
<strong><?=$adresse["Codepos"]." ".@$adresse["Commune"]?></strong><br/>
<br/>
<table><tr><td><fieldset>
<legend>Vos coordonnées </legend>
<table><form name="form_selects" id="form_selects" method="POST" onsubmit="return test(this)";>
<tr>
<td align="right">Civilité :</td>
<td><select name="civ">
<?$civ = array("M."=>"Monsieur","Mme"=>"Madame","Mlle"=>"Mademoiselle");
foreach($civ as $c1=>$c2) { ?>
<option value="<?=$c1?>"
<?if($c1==@$adresse["civ"]) echo "SELECTED"?>
><?=$c2?></option>
<? } ?>
</select></td>
</tr><tr>
<td align="right">Nom <font color=red>*</font></td>
<td colspan=3><table border=0 cellspacing=0 cellpadding=0><tr>
<td><input name="nom" size=21
value="<?=htmlentities(@$adresse["nom"])?>"/></td>
<td align="right"> Prénom : </td>
<td><input name="prenom" size=21
value="<?=htmlentities(@$adresse["prenom"])?>"/></td>
</tr></table></td>
</tr><tr>
<td align="right">Adresse <font color=red>*</font></td>
<td colspan=3><input name="adresse" size=55
value="<?=htmlentities(@$adresse["adresse"])?>"/></td>
</tr><tr>
<td align="right">Complément :</td>
<td colspan=3><input name="adresse2" size=55
value="<?=htmlentities(@$adresse["adresse2"])?>"/></td>
</tr><tr>
<td align="right">Département :</td>
<td><select class="select1" name="list0" id="list0" onchange="liste(this.form,1,2)">
<option value="">== Choisir ==</option>
<?=$liste_dpt?>
</select></td>
<td>Code Postal :</td>
<td><select class="select2" name="list1" id="list1" onchange="liste(this.form,2,2)">
</select></td>
</tr><tr>
<td align="right">Commune <font color=red>*</font></td>
<td><select class="select1" name="list2" id="list2">
</select></td>
</tr><tr>
<td colspan=4 align="center"><input type="submit" value="Envoyer"/></td>
</tr>
</form></table>
</fieldset></td></tr></table>
</BODY></HTML>