Jouban
Messages postés14Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention10 août 2004
-
22 juil. 2004 à 12:11
Jouban
Messages postés14Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention10 août 2004
-
22 juil. 2004 à 16:08
Bonjour à tous!
J'utilise des listes dynamiques avec utilisation d'une BD.
Le principe est la consultation de noms (présents dans la base) en fonction des départements et villes choisis.
Je m'explique:
j'ai une première liste remplie de départements dès le départ . Ensuite j'ai une seconde liste de villes qui se remplit en fonction du choix du département. Et enfin j'ai une troisième liste de noms qui se remplit en fonction du choix de la ville.
Quand aucun département n'est saisi, un message d'alerte s'affiche. Quand il n'y aucune ville pour le département choisi, les listes de villes et de noms restent à vide (normal). Quand j'ai choisi une ville et un nom, et que j'effectue une nouvelle recherche avec un nouveau département, les listes de villes et de noms se vident.
Pour ça, ça marche bien.
Le problème que je rencontre, c'est que ça marche quand j'ai en résultat une liste de villes avec une ville, mais dès que j'en ai plusieurs (j'ai essayé avec 2), la liste des noms reste à vide, alors que les villes existent.
Le problème doit venir de la boucle suivante:
*******
while($tab2=mysql_fetch_row($res2)) {
echo "<option";
// Si la variable 'ville' existe, on met le 'selected' dessus
if($ville==$tab2[0]) { echo " selected"; }
else { $ville=NULL; }
echo ">".$tab2[0]."</option>";
}
*******
En effet, les villes trouvées suites à la requête s'affichent bien dans la liste des villes, mais dès que je clique sur la première, elle reste affichée (rôle du 'selected'), mais aucun nom ne s'affiche alors qu'ils sont présents dans la base, et si je choisis la deuxième, elle ne reste pas affichée et aucun nom apparaît. C'est comme si on passait dans la boucle 'else { $ville=NULL; }'.
Je vous transmets le code (si ça intéresse certains):
*******
<?
// Connexion à la base de données et aux tables
include("Connexion.php");
// Vérification de l'existence de la variable et déclaration
// Et récupération de sa valeur
$departement=(isset($_POST['departement']) ) ? $_POST['departement'] : Null;
$ville=(isset($_POST['ville']) ) ? $_POST['ville'] : Null;
$patronyme=(isset($_POST['patronyme']) ) ? $_POST['patronyme'] : Null;
$req="SELECT * FROM Departements ORDER BY Departement";
// Interprétation de la requête, et permet d'afficher l'erreur MySQL s'il y en a une
$res=mysql_query($req) or die ('Erreur : '.mysql_error());
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<form method="post" action="">
<!--Liste des départements-->
<select name="departement" onChange="submit()">
<option selected value=00>Sélectionnez un département</option>
<?
while($tab=mysql_fetch_row($res)) {
echo "<option value=".$tab[0]."";
// Si la variable 'departement' existe, on met le 'selected' dessus
if($departement==$tab[0]) { echo " selected"; }
echo ">".$tab[1]."</option>";
}
?>
</select>
<!--Liste des villes-->
<select name="ville" onChange="submit()">
<?
if($departement) {
$req2="SELECT DISTINCT Ville FROM Archives WHERE Num_dept='$departement' ORDER BY Ville";
$res2=mysql_query($req2) or die ('Erreur : '.mysql_error());
$nb_enr2=mysql_num_rows($res2);
if($nb_enr2!=0) {
echo "<option>Sélectionnez une ville</option>";
while($tab2=mysql_fetch_row($res2)) {
echo "<option";
// Si la variable 'ville' existe, on met le 'selected' dessus
if($ville==$tab2[0]) { echo " selected"; }
else { $ville=NULL; }
echo ">".$tab2[0]."</option>";
}
}
else {
$ville=NULL;
}
}
else {
echo "<option></option>";
}
?>
</select>
</form>
<!--Liste des patronymes-->
<select name="patronyme">
<?
if($ville) {
$req3="SELECT DISTINCT Nom FROM Archives WHERE Ville='".$ville."' ORDER BY Nom"; $res3=mysql_query($req3) or die ('Erreur : '.mysql_error());
$nb_enr3=mysql_num_rows($res3);
if($nb_enr3!=0) {
echo "<option>Sélectionnez un patronyme</option>";
while($tab3=mysql_fetch_row($res3)) {
echo "<option";
// Si la variable 'patronyme' existe, on met le 'selected' dessus
if($patronyme==$tab3[0]) { echo " selected"; }
echo ">".$tab3[0]."</option>";
}
}
else {
$patronyme=NULL;
}
}
else {
echo "<option></option>";
}
?>
</select>
</form>
</html>
*******
Si qqun peut m'aider... car je ne vois plus très bien quoi faire!
J'ai essayé d'être le plus clair possible, mais s'il y a besoin de renseignements complémentaires, n'hésitez pas!
et je pense qu'il vaut mieu dans tu cas utiliser le javascript plûtot que le php... et a ce moment la je te recommande ce site :
.com/ http://www.editeurjavascript.com/ ----------------------
La lumière étant plus rapide que le son, un homme peu paraître brillant avant qu'il se mette a parler
[http://www.laxis.net [Laxis]]WhiteDwarf
----------------------