par
kentucky » 30 juin 2008, 18:15
Voici le code de ma page :
Code : Tout sélectionner
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
include 'param_db.php';
$idr = isset($_POST['region'])?$_POST['region']:null;
$idd = isset($_POST['departement'])?$_POST['departement']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title></title>
</head>
<body>
<?php
if(isset($_POST['valider']) && isset($_POST['region']) && isset($_POST['departement']) && $_POST['ville'] != "")
{
$region_selectionnee = $_POST['region'];
$departement_selectionne = $_POST['departement'];
$ville_selectionnee = $_POST['ville'];
?>
<p>Vous avez sélectionné la ville n° <?php echo($ville_selectionnee); ?><br />le département n°<?php echo($departement_selectionne); ?><br />la région n°<?php echo($region_selectionnee); ?></p>
<?php
}
$sql1 = "SELECT `idregion`, `nomregion`".
" FROM `region`".
" ORDER BY `nomregion`";
$rech_region = mysql_query($sql1);
$code_region = array();
$region = array();
$nb_region = 0;
if($rech_region != false)
{
while($ligne_reg = mysql_fetch_assoc($rech_region))
{
array_push($code_region, $ligne_reg['idregion']);
array_push($region, $ligne_reg['nomregion']);
$nb_region++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdep">
<fieldset style="border: 3px double #333399">
<select name="region" id="region" onchange="document.forms['chgdep'].submit();">
<option value="-1">- - - Choisissez une région - - -</option>
<?php
for($i = 0; $i < $nb_region; $i++)
{
?>
<option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]." (". $code_region[$i] .")"); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_region);
if(isset($idr) && $idr != -1)
{
$sql2 = "SELECT `iddep`, `nomdep`".
" FROM `departement`".
" WHERE `refidregion` = ". $idr ."".
" ORDER BY `nomdep`;";
$rech_dep = mysql_query($sql2, $link);
$nd = 0;
$code_dep = array();
$nom_dep = array();
while($ligne_dep = mysql_fetch_assoc($rech_dep))
{
array_push($code_dep, $ligne_dep['iddep']);
array_push($nom_dep, $ligne_dep['nomdep']);
$nd++;
}
?>
<select name="departement" id="departement" onchange="document.forms['chgdep'].submit();">
<option value="-1">- - - Choisissez un département - - -</option>
<?php
for($j = 0; $j<$nd; $j++)
{
?>
<option value="<?php echo($code_dep[$j]); ?>"<?php echo((isset($departement_selectionne) && $departement_selectionne == $code_dep[$j])?" selected=\"selected\"":null); ?>><?php echo($nom_dep[$j]." (". $code_dep[$j] .")"); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_dep);
}
if(isset($idd) && $idd != -1)
{
$sql3 = "SELECT `idville`, `nomville`".
" FROM `ville`".
" WHERE `refiddep` = ". $idd ."".
" ORDER BY `nomville`;";
$rech_ville = mysql_query($sql3, $link);
$nv = 0;
$code_ville = array();
$nom_ville = array();
while($ligne_ville = mysql_fetch_assoc($rech_ville))
{
array_push($code_ville, $ligne_ville['idville']);
array_push($nom_ville, $ligne_ville['nomville']);
$nv++;
}
?>
<select name="ville" id="ville" method="post">
<?php
for($k = 0; $k<$nv; $k++)
{
?>
<option value="" selected="selected">
<option value="<?php echo($code_ville[$k]); ?>"<?php echo((isset($ville_selectionnee) && $ville_selectionnee == $code_ville[$k])?" selected=\"selected\"":null); ?>><?php echo($nom_ville[$k]." (". $code_ville[$k] .")"); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_ville);
}
?>
<br /><input type="submit" name="valider" id="valider" value="Envoyer" />
</fieldset>
</form>
<?php
mysql_close($link);
?>
</body>
</html>
Je sélectionne la région, les départements se chargent correctement.
Je sélectionne le département, les villes se chargent correctement mais la liste déroulante "departement" repointe sur "sélectionnez un département" et prend donc la valeur "-1".
Je sélectionne une ville et je valide : la liste déroulante "ville" disparaît (ce que je ne veux pas bien sûr !) et je récupère bien le n° de la région et celui de la ville mais "-1" pour le département.
J'éspère avoir été clair dans mon explication mais en tout cas merci d'avance pour votre aide !
Voici le code de ma page :
[code]
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
include 'param_db.php';
$idr = isset($_POST['region'])?$_POST['region']:null;
$idd = isset($_POST['departement'])?$_POST['departement']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title></title>
</head>
<body>
<?php
if(isset($_POST['valider']) && isset($_POST['region']) && isset($_POST['departement']) && $_POST['ville'] != "")
{
$region_selectionnee = $_POST['region'];
$departement_selectionne = $_POST['departement'];
$ville_selectionnee = $_POST['ville'];
?>
<p>Vous avez sélectionné la ville n° <?php echo($ville_selectionnee); ?><br />le département n°<?php echo($departement_selectionne); ?><br />la région n°<?php echo($region_selectionnee); ?></p>
<?php
}
$sql1 = "SELECT `idregion`, `nomregion`".
" FROM `region`".
" ORDER BY `nomregion`";
$rech_region = mysql_query($sql1);
$code_region = array();
$region = array();
$nb_region = 0;
if($rech_region != false)
{
while($ligne_reg = mysql_fetch_assoc($rech_region))
{
array_push($code_region, $ligne_reg['idregion']);
array_push($region, $ligne_reg['nomregion']);
$nb_region++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdep">
<fieldset style="border: 3px double #333399">
<select name="region" id="region" onchange="document.forms['chgdep'].submit();">
<option value="-1">- - - Choisissez une région - - -</option>
<?php
for($i = 0; $i < $nb_region; $i++)
{
?>
<option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]." (". $code_region[$i] .")"); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_region);
if(isset($idr) && $idr != -1)
{
$sql2 = "SELECT `iddep`, `nomdep`".
" FROM `departement`".
" WHERE `refidregion` = ". $idr ."".
" ORDER BY `nomdep`;";
$rech_dep = mysql_query($sql2, $link);
$nd = 0;
$code_dep = array();
$nom_dep = array();
while($ligne_dep = mysql_fetch_assoc($rech_dep))
{
array_push($code_dep, $ligne_dep['iddep']);
array_push($nom_dep, $ligne_dep['nomdep']);
$nd++;
}
?>
<select name="departement" id="departement" onchange="document.forms['chgdep'].submit();">
<option value="-1">- - - Choisissez un département - - -</option>
<?php
for($j = 0; $j<$nd; $j++)
{
?>
<option value="<?php echo($code_dep[$j]); ?>"<?php echo((isset($departement_selectionne) && $departement_selectionne == $code_dep[$j])?" selected=\"selected\"":null); ?>><?php echo($nom_dep[$j]." (". $code_dep[$j] .")"); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_dep);
}
if(isset($idd) && $idd != -1)
{
$sql3 = "SELECT `idville`, `nomville`".
" FROM `ville`".
" WHERE `refiddep` = ". $idd ."".
" ORDER BY `nomville`;";
$rech_ville = mysql_query($sql3, $link);
$nv = 0;
$code_ville = array();
$nom_ville = array();
while($ligne_ville = mysql_fetch_assoc($rech_ville))
{
array_push($code_ville, $ligne_ville['idville']);
array_push($nom_ville, $ligne_ville['nomville']);
$nv++;
}
?>
<select name="ville" id="ville" method="post">
<?php
for($k = 0; $k<$nv; $k++)
{
?>
<option value="" selected="selected">
<option value="<?php echo($code_ville[$k]); ?>"<?php echo((isset($ville_selectionnee) && $ville_selectionnee == $code_ville[$k])?" selected=\"selected\"":null); ?>><?php echo($nom_ville[$k]." (". $code_ville[$k] .")"); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_ville);
}
?>
<br /><input type="submit" name="valider" id="valider" value="Envoyer" />
</fieldset>
</form>
<?php
mysql_close($link);
?>
</body>
</html>[/code]
Je sélectionne la région, les départements se chargent correctement.
Je sélectionne le département, les villes se chargent correctement mais la liste déroulante "departement" repointe sur "sélectionnez un département" et prend donc la valeur "-1".
Je sélectionne une ville et je valide : la liste déroulante "ville" disparaît (ce que je ne veux pas bien sûr !) et je récupère bien le n° de la région et celui de la ville mais "-1" pour le département.
J'éspère avoir été clair dans mon explication mais en tout cas merci d'avance pour votre aide !