Liste deroulantes liées entre elles avec sql

ophiure 1 Messages postés dimanche 3 août 2003Date d'inscription 3 août 2003 Dernière intervention - 3 août 2003 à 21:57 - Dernière réponse : cs_hantouva 15 Messages postés vendredi 10 décembre 2010Date d'inscription 19 mars 2012 Dernière intervention
- 11 avril 2011 à 10:36
slt,
j'ai une table sql avec les champs suivant, region, departement, code postal et ville
je voudrais placer 3 liste deroulante dans une page, dans la premiere pour y afficher
les regions, dans la deuxième liste les departement en fonction de la selection faite dans la premiere liste ( region ).
et pour finir, afficher dans la troisieme liste les villes en fonction de la selection faite dans la liste deroulante ou sont placé les departements
voici donc mon problème, j'ai beau chercher, je ne trouve pas comment faire

merci d'avance
Afficher la suite 

10 réponses

Répondre au sujet
cs_Tortuegeniale 1123 Messages postés lundi 7 janvier 2002Date d'inscription 26 juin 2008 Dernière intervention - 4 août 2003 à 12:20
0
Utile
Salut

<select name="menu1">
<?
while ($ligne=mysql_fetch_object($requete))
{
?>
<option value=<? echo $ligne->region; ?>><? echo $ligne->nom_region; ?></option>
<?
}
?>
</select>

et pareil pour les autres

++

------
Je cherche un poste de developpeur PHP mysql, si vous avez une proposition ou si vous voulez mon CV ==> [mailto:tortue.geniale@laposte.net mailto:tortue.geniale@laposte.net]

=> http://www.kame-house.org La plus grosse base de données de DA du net
Commenter la réponse de cs_Tortuegeniale
cs_Houzefa 455 Messages postés dimanche 9 février 2003Date d'inscription 9 juillet 2004 Dernière intervention - 4 août 2003 à 23:14
0
Utile
faudra aussi utiliser JavaScript pour changer la valeur des autres listes en fonction de leur liste "parente".

Houzéf@ - www.123toto.com
Commenter la réponse de cs_Houzefa
pumbaak 9 Messages postés mardi 30 mars 2004Date d'inscription 17 avril 2006 Dernière intervention - 30 mars 2004 à 00:53
0
Utile
Salut, je ne suis pas progarmmeur, et je suis intérressé par la même chose, c'est à dire que j'ai une BDD sql, je désire créer 3 listes déroulantes dépendantes les unes des autres :
ex : Marques -> Modèles -> Motorisation
ex : Renault -> mégane, kangoo, etc... -> 1.4l, 2.0, etc ...

en fait la seconde liste doit dépendre du choix de la premiere et la 3eme du choix de la seconde ....le tout à partir d'une bdd mysql.

Si je repose la question, c'est que je n'ai pas compris comment mettre en oeuvre vos explications, si vous pouviez etre plus précis .....çà serait cool merci ....

JP
Commenter la réponse de pumbaak
pumbaak 9 Messages postés mardi 30 mars 2004Date d'inscription 17 avril 2006 Dernière intervention - 30 mars 2004 à 00:54
0
Utile
Salut, je ne suis pas progarmmeur, et je suis intérressé par la même chose, c'est à dire que j'ai une BDD sql, je désire créer 3 listes déroulantes dépendantes les unes des autres :
ex : Marques -> Modèles -> Motorisation
ex : Renault -> mégane, kangoo, etc... -> 1.4l, 2.0, etc ...

en fait la seconde liste doit dépendre du choix de la premiere et la 3eme du choix de la seconde ....le tout à partir d'une bdd mysql.

Si je repose la question, c'est que je n'ai pas compris comment mettre en oeuvre vos explications, si vous pouviez etre plus précis .....çà serait cool merci ....

JP
Commenter la réponse de pumbaak
cs_scartail 10 Messages postés lundi 22 avril 2002Date d'inscription 6 juin 2006 Dernière intervention - 2 janv. 2005 à 04:29
0
Utile
Bonjour,

Avez-vous eu une réponse à votre question car je rencontre le même problème ?

Merci

Charlie
Commenter la réponse de cs_scartail
cs_arauch 2 Messages postés lundi 23 décembre 2002Date d'inscription 13 septembre 2009 Dernière intervention - 23 avril 2005 à 21:28
0
Utile
bonjour, je debute en Php et je me suis resservi de votre exemple. j'ai
créé une table geographie dans une base essai avec les champs
region departement code_postal et ville.

J'ai ecrit ce code :

<?

$connexion=mysql_connect("localhost","root","");

$db=mysql_select_db("essai",$connexion);

$requete="select region from geographie"

?>

<select name="menu1">

<?

while ($ligne=mysql_fetch_object($requete))

{

?>

<option value=<? echo $ligne->region; ?>><? echo $ligne->nom_region; ?></option>

<?

}

?>

</select>



</html>
________________________________________

et voila ce que j'obtiens dans mon navigateur :

<select name="menu1">
<option value="<?" selected="selected" $ligne="" echo="">region;
?>>nom_region; ?></option>
</select>

_____________________________________________

Quelle erreur ai-je faite ? Merci de me secourir. Bonne soirée à ceux qui savent..

Alain
Commenter la réponse de cs_arauch
dounit 20 Messages postés mardi 19 avril 2005Date d'inscription 10 mai 2005 Dernière intervention - 17 mai 2005 à 16:49
0
Utile
excuseez jé le m^me probléme que vous si vous aez trouver la réponse n'hésiter pas merci d'avance
Commenter la réponse de dounit
pepe013 42 Messages postés jeudi 21 novembre 2002Date d'inscription 2 juin 2006 Dernière intervention - 30 mai 2005 à 10:22
0
Utile
Bon apparament personne ne comprend la question initiale qui etait de remplir une combo ( liste deroulante )par rapport a une autre liste. Vous trouverez ci joint un bout de mon code qui je l'espere vous aidera.
Bon je commente un peu histoire de pas copier sans comprendre.
Déja je fais tout en objet mais n'en tenez pas compte utiliser votre code classique ( pour le foreach ....)
donc au chargement de la page j'ai une combo qui est rempli, sur l'evenement Onchange petit script javascript qui me relance la page ( avec $_GET) je recupere la valeur de la premiere liste. ensuite je fais ma requete qui chargera l'autre liste
Si c pas clair demandez moi

<select name='listThemeModifArt' onchange="JavaScript:document.ModifThemeArticle.submit();">
<option></option>
<?php
foreach(dao_theme::getAll() as $ligne)
{
$theme = dao_theme::loadById($ligne['id_theme']);
?>
<Option value="<?php echo $theme->id_theme;?>"><?php echo $theme->lib_theme;?>

</Option>
<?php }
?>
</select>
<td>

?>
<select name='ListSousThemeToModifArt'>
<option></option>
<?php

if (!empty($_GET['listThemeModifArt']))
{
foreach(dao_sous_theme::loadByTheme($_GET['listThemeModifArt']) as $ligne)
{
$theme = dao_sous_theme::loadById($ligne['id_sous_theme']);
?>
<Option value="<?php echo $theme->id_sous_theme ;?>"><?php echo $theme->lib_sous_theme;?>

</Option>
<?php }
} ?>
</select>

pépé
Commenter la réponse de pepe013
pmtjnden 14 Messages postés lundi 28 mars 2005Date d'inscription 4 juillet 2011 Dernière intervention - 16 mars 2010 à 16:01
0
Utile
Bonjour tout le monde,

Je cherche la même chose que tous les autres, mais sans recharger la page... Donc, pas de GET :(
Pépé, si tu as une idée je suis preneur.
Je m'y connais bien en PHP et en SQL, mais je sèche lamentablement :(


:) Phil

---------------------
Et si avant de poster, vous regardiez votre orthographe, ce serait plus simple à relire
Commenter la réponse de pmtjnden
cs_hantouva 15 Messages postés vendredi 10 décembre 2010Date d'inscription 19 mars 2012 Dernière intervention - 11 avril 2011 à 10:36
0
Utile
bonjour
j'utilise une base de donnees sql server et php pour developper mon site web et la je bloque au niveau du formulaire ou je veux utiliser 2 listes deroulantes liees entre elles et ou les valeurs sont recuperer a partir de ma base de donnees le pb qui se pose avec mon code cest que la premiere liste des wilaya se charge parfaitement par contre la seconde qui est doit afficher les communes reste vide voici mon code si qq a une idee ou un autre code a me proposer ca serait tres sympa car ca fait un bon moment que je suis bloquee a ce niveau merci beaucoup
voici mon code avec java script
<?php

require_once('conn.php');

?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
List = new Array();
function Remplir(valeur){
var sel="";
sel ="<select size='1' name='souscat'>";
// Parcourir le tableau
for (var i=0;i<List.length;i++)
{
// tester si la ligne du tableau (Sous-catégorie) correspond à la valeur de la catéhorie
if (List[i][1]==valeur)
{
// Ajouter une rubrique sous-catégorie au variable SEL
sel= sel + "<option value="+List[i][0]+">"+List[i][2]+"</option>";
}

}
sel =sel + "</select>";
// Modifier le DIV scat par la nouvelle List à partir du variable SEL
document.getElementById('scat').innerHTML=sel;
}

</script>

</head>


<tr> <td>
<select size="1" name="cat" dir="ltr" OnChange="Remplir(cat.value)">

<?php
// Paramètres de la Connexion à la base MYSQL

$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage


// Séléction de tous les enregistrements de la table Catégorie
$query=odbc_exec ($sqlconnect,"SELECT * FROM wilaya order by id_wilaya");

while(odbc_fetch_into($query,$row))
{

// Remplir la liste déroulante des catégorie
echo "\t\t<option value=".($row[0]).">".($row[1])."</option>";
if ($i==0) { $j=$row[0]; $i=1; } // garder la valeur du premier enregistrement
}

// Séléction de tous les enregistrements de la table Sous-Catégorie
$query=odbc_exec ($sqlconnect,"SELECT * FROM commune order by id_wilaya");

while(odbc_fetch_into($query,$row))
{
// $i = initialise le variable i
$i=0;
while (odbc_fetch_row($query))
{
// Remplir le tableau (array) en javascript
// ex : List[1]=new Array (1,1,"Sous-catégorie 1");
// ex : List[2]=new Array (2,1,"Sous-catégorie 2");
echo "<script>List[".$i."] = new Array(".($row[0]).",".($row[1]).",'".($row[2])."');</script>";
$i=$i+1; // Incrémentation de $i
}
echo "<script>Remplir ($j); </script>"; // Remplir la deuxième liste de choix avec les données
} // des sous-catégories en utilisant la valeur j
?>
</select>
</td></tr>
<tr>
<td width="">


<select size="1" name="souscat" dir="ltr">
</select>


</td></tr>

</html>

je nest aucune erreur a part que la 2eme liste saffiche vide
ma table wilaya contient 2 champs wilayalib et id_wilaya
la table commune contient 3 champs id_com,id_wilaya,comlib
merci a vous
Commenter la réponse de cs_hantouva

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.