<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
require("init.php");
/* On récupère si elle existe la valeur du pays envoyée par le formulaire */
$idr = isset($_POST['pays'])?$_POST['pays']:null;
$dep = 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>
<meta http-equiv="Pragma" content="no-cache" />
</head>
<body>
<?php
// On établit la connexion à la db
$sql1 = "SELECT id, pays FROM pays ORDER BY pays";
$rech_pays = mysql_query($sql1);
$code_pays = array();
$pays = array();
/* On active un compteur pour les pays */
$nb_pays = 0;
if($rech_pays != false)
{
while($ligne = mysql_fetch_assoc($rech_pays))
{
array_push($code_pays, $ligne['id']);
array_push($pays, $ligne['pays']);
/* On incrémente de compteur */
$nb_pays++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<select name="pays" id="pays" onchange="document.forms['chgdept'].submit();">
<option value="-1">-Choisissez un pays-</option>
<?php
for($i = 0; $i < $nb_pays; $i++)
{
?>
<option value="<?php echo($code_pays[$i]); ?>"<?php echo((isset($idr) && $idr == $code_pays[$i])?" selected=\"selected\"":null); ?>><?php echo($pays[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_pays);
/* On commence par vérifier si on a envoyé un numéro de pays et le cas échéant s'il est différent de -1 */
if(isset($idr) && $idr != -1)
{
/* Cération de la requête pour avoir les départements de ce pays */
$sql2 = "SELECT id, dep FROM departement WHERE id_pays='$idr'";
$rech_dept = mysql_query($sql2);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$code_dept = array();
$nom_dept = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while($ligne_dept = mysql_fetch_assoc($rech_dept))
{
array_push($code_dept, $ligne_dept['id']);
array_push($nom_dept, $ligne_dept['dep']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="departement" id="departement">
<?php
for($d = 0; $d<$nd; $d++)
{
?>
<option value="<?php echo($code_dept[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
/* Un petit coup de balai */
mysql_free_result($rech_dept);
$idpays = $_POST['pays'];
$iddep = $_POST['departement'];
}
?>
J'ai adapte le script pour mon developpementecho $idpays; // ca fonctionne pas de soucis
echo $iddep; // ne marche pas et je ne vois pas comment il pourrait fonctionner car la page ne se reload pas quand on selectionne le departement
J'espere eclairer un peu le probleme
Code : Tout sélectionner
<select name="departement" id="departement" onchange="document.forms['chgdept'].submit();">Tu perds pas la valeur de la première liste avec ce code ?dans le premier cas, il te suffit de soumettre le formulaire lors du onChange de ta liste de département (cf. le pays)Code : Tout sélectionner
<select name="departement" id="departement" onchange="document.forms['chgdept'].submit();">
Excellent, faut que je le note, à chaque fois je me fais une petite fonction qui récupère toutes les données passées en GET pour les réinjecter dans mes liens.Hermès >> Nope, dans la méthode donnée ici, on ne modifie pas l'url en passant la valeur du champ sélectionné, on reposte la totalité du formulaireDu coup on récupère toute les valeurs saisies, et vu que le pays a été resélectionné par défaut, il est de nouveau renvoyé
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
require("init.php");
// On récupère si elle existe les valeurs envoyées par le formulaire
$idr = isset($_POST['pays'])?$_POST['pays']:null;
$dept_selectionne = 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>
<meta http-equiv="Pragma" content="no-cache" />
</head>
<body>
<?php
// On établit la connexion à MySQL
$sql1 = "SELECT id, pays FROM pays ORDER BY pays";
$rech_pays = mysql_query($sql1);
$code_pays = array();
$pays = array();
// On active un compteur pour les pays
$nb_pays = 0;
if($rech_pays != false)
{
while($ligne = mysql_fetch_assoc($rech_pays))
{
array_push($code_pays, $ligne['id']);
array_push($pays, $ligne['pays']);
/* On incrémente de compteur */
$nb_pays++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<select name="pays" id="pays" onchange="document.forms['chgdept'].submit();">
<option value="0">---Selectionnez un pays---</option>
<?php
for($i = 0; $i < $nb_pays; $i++)
{
?>
<option value="<?php echo($code_pays[$i]); ?>"<?php echo((isset($idr) && $idr == $code_pays[$i])?" selected=\"selected\"":null); ?>><?php echo($pays[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_pays);
// On commence par vérifier si on a envoyé un numéro de pays
if(isset($idr) && $idr != 0)
{
// Création de la requête pour avoir les départements de ce pays
$sql2 = "SELECT id, dep FROM departement WHERE id_pays='$idr'";
$rech_dept = mysql_query($sql2);
// compteur pour les départements
$nd = 0;
// On crée deux tableaux pour les numéros et les noms des départements
$code_dept = array();
$nom_dept = array();
while($ligne_dept = mysql_fetch_assoc($rech_dept))
{
array_push($code_dept, $ligne_dept['id']);
array_push($nom_dept, $ligne_dept['dep']);
$nd++;
}
// On construit la liste déroulante
?>
<select name="departement" id="departement" onchange="document.forms['chgdept'].submit();">
<option value="0">---Selectionnez un département---</option>
<?php
for($d = 0; $d<$nd; $d++)
{
?>
<option value="<?php echo($code_dept[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_dept);
$idpays = $_POST['pays'];
$iddep = $_POST['departement'];
}
?>