Page 1 sur 3
Menu déroulant dynamique
Posté : 15 juin 2005, 12:07
par Born2PHP
salut a tous
j'ai un pb avec mes menus déroulant
je dois créer 2 menus déroulant qui se dépendent mutuellement dans un formulaire.
j'vous donne un ptit exemple:
choisir sa region

menu déroulant des regions)
choisir son département:( menu déroulant des département correspondant à la région selectionnée)
( à savoir que la liste des regions comme des departements sont stockées dans des tables de ma base de données)
Je suis un adepte du PHP, mais je n'ai pas du tt la maitrise du javascript
c est pourquoi je lance un SOS
si quelqu'un sait comment resoudre ce pb
qu'il me fasse signe
car j'ai vraiment besoin d'un coup de pouce !!!!
Marchiiiiiiiiiii !!!!!!!!!!!!!!!!!!
Posté : 15 juin 2005, 12:28
par robined
une solution possible, tu recharge la page avec en parametre ton numéro de région et dans ta deuxieme liste, tu teste le parametre pour n'afficher que les departements de cette region.
Pour le php c'est simple vu que tu as dit que ca allait en php.
Pour le javascript, tu mets dans ta premiere liste:
Posté : 15 juin 2005, 12:37
par Cyrano
Le principe avec JavaScript et l'idée de sérialisation par rapport au lien que je t'ai mis sur le post en PHP:
Tu fais une requête qui va établir une première liste et te permettre également de récupérer pour chaque élément de cette liste toutes les possibilités correspondantes, exemple:
Tu as une première liste avec les éléments suivants:
- element1
- element2
- element3
Tu dois maintenant avoir un tableau qui va contenir chaque possibilité :
Pour la première liste affichant element1, tu auras dans ton tableau une dimension indiquant cet élément et dans une seconde dimension une sous-liste:
- sous-element1
- sous-element2
- sous-element3
et ainsi de suite, tu auras les autres sous-éléments pour chaque élément de base dans un tabbleau JavaScript.
Ce qui se passe ensuite, c'est que tu utilises dans la première liste déroulante un évènement onchange() qui va appeler une fonctio JavaScript: cette dernière va afficher les éléments correspondant dans la seconde liste.
Il y aurait sur le même site que je t'avais indiqué une autre page sur
"les listes fantômes" : tu devrais y trouver de quoi avancer beaucoup plus facilement, c'est très clairement détaillé.
ahhhh ok !!
Posté : 15 juin 2005, 15:00
par Born2PHP
Re
tu sais quoi Cyrano ?
Moi j'ai fais ca différemment,
j'ai placé, pour chaque departement de la table departement l'Id de la region qui lui correspond.
Ainsi, dans la table departement
le Haut Rhin et le Bas Rhin se voyent attribuer l'Id de la region Alsace.
tu vois le truc ????
ca donne des tables de ce genre là !
------ table departement ---------
Id_departement | departement | Id_region
1-------------------Haut Rhin--------1
2-------------------Bas Rhin---------1
-------- table region ----------------
Id_region | region
1-------------Alsace
2-------------Aquitaine
3-------------Auvergne
dis moi si ca te parait correct ou pas
en tt cas, je crois que c est OK et jvais aller jeter un coup d'oeil sur le lien que tu m'as envoyé
Marchi !!!!
Re: ahhhh ok !!
Posté : 15 juin 2005, 16:32
par Cyrano
Code : Tout sélectionner
------------- table departement ------------
+--------------+-------------+-----------+
|Id_departement|departement |Id_region |
+--------------+-------------+-----------+
|1 |Haut Rhin |1 |
|2 |Bas Rhin |1 |
+--------------+-------------+-----------+
-------------- table region ----------------
+----------+------------+
|Id_region | region |
+----------+------------+
|1 |Alsace |
|2 |Aquitaine |
|3 |Auvergne |
+----------+------------+
OUi, ben la strucure est cohérente. Et si je comprends bien, tu voudrais qu'en modifiant l'une, l'autre s'ajuste: donc si je sélectionne Aquitaine dans la liste des régions, j'ai une liste qui s'adapte en dessous (ou à coté) avec les département Gironde, Dordogne, Gers, Landes etc... c'est ça ?
Ouiiiiiiiiiiiiiiiiiii !!!
Posté : 15 juin 2005, 17:05
par Born2PHP
Oui Cyrano c est parfaitement ca
comment dois je me prendre pour faire le code en javascript pour le second menu ????
parce que d'apres la petite lecture que je me suis fait j'ai pu constater qu'il y'a des 2 avantages majeurs a utiliser le javascript plus que le PHP
a savoir la rapidité d'exécution et le fait que la page se recharge sans perte des données saisies plus haut dans le formulaire
c'est bien mais il parle de faire une tableau qui contient toutes les regions avec les departements.
Pour mon cas, que dois je faire ????
Posté : 15 juin 2005, 17:44
par Cyrano
Tu dois te monter un tableau JavaScript à deux dimensions qui ressemblerait à ça
liste['region']['departement'] = nom du département
à la place de région, tu as l'index correspondant à la clé de la région, à la place de département tu asla clé identifiant le département et à partir de là, tu peux avoir un pointeur fixe pour la région quand on sélectionne la région et un pointeur qui s'incrémente dans une boucle for() pour aller chercher tous les département qui correspondent.
grosso-modo, ça va donner quelque chose du style:
liste[1][0] = "Dordogne";
liste[1][1] = "Gironde";
liste[1][2] = "Gers";
liste[1][3] = "Landes";
etc..., le [1] en premier index correspondant bien sur à "Aquitaine", mais lors de la construction, il n'est pas nécessaire de le mettre dedans, ce n'est qu'un pointeur plus facile à manipuler.
Est-ce que ça t'éclaire plus ?
humm hummm !!!
Posté : 15 juin 2005, 17:51
par Born2PHP
hummm hummm !!!!!
oki je vois un peu mieux mais ou dois je placer ce tableau
est ce une table a ajouter dans ma base de données???
euh......... c'est pas trés simple le javascript !!!! LOL ](*,)
Posté : 15 juin 2005, 17:55
par Cyrano
lol, je vois ça. Non, tu ne touche pas à la structure de ta base. Le schéma est "relativement" simple. Les deux liens que je t'ai mis ce matin se rejoignent. Tu récupères les valeurs avec PHP dans la base de données, tu les transmets à un script JavaScript en sérialisant. JavaScript crée le tableau et tu récupères ensuite... je vais essayer de retrouver un post que j'avais mis ici il y a plusieurs semaines. J'ai fait un truc dans le genre pour un site où en sélectionnant un type d'emballage, j'avais 4 zones de texte qui se mettaient à jour avec les prix correspondant à une zone lors de la sélection du type d'emballage. Je crois que j'avais mis un bout de code.
Posté : 15 juin 2005, 18:04
par Born2PHP
Cyrano, ton bout de code sera le bien venu !!!!! =D>
parce que franchement, ma tête va explose d'ici peu !!! LOL

Posté : 15 juin 2005, 18:12
par Cyrano
Bon, je retrouve pas, mais en relisant les deux articles, tu as vraiment tous les éléments: prends bien le temps de faire le tour sur ces deux adresses:
http://www.aidejavascript.com/article119.html et
http://www.aidejavascript.com/article15 ... artsuite=0
Et il y a des exemples de code.
Posté : 15 juin 2005, 18:16
par Born2PHP
ok Cyrano
j'vais me pencher sur les 2 liens que tu m'as donné
et surtout si tu retrouve du code n'hesites pas a me le communiquer
Marchiiiiiiiiiiii encore !!!!!!!! =D>
Posté : 16 juin 2005, 16:37
par Born2PHP
Slt Cyrano
j'ai pris le temps de lire, relire, et rerelire le ptit tuto que tu m'as donné en lien
mais malheureusement quand jle compile, et ben ca ne marche pas du tout.
Et pourtant j'ai suivi scrupuleusement le code déja fait sur la page
si tu peux, essaye de l'exécuter et dis moi ce que tu obtient.
Si t'as d'autre explications ou d'autre tuto, ils seront les bien venus !!!

parce que je me casse la tete a le faire mais rien ne marche !!!!
alors tu comprends que je deviens a moitié aliéné

](*,)
Posté : 16 juin 2005, 16:40
par Cyrano
Je vais te faire un bout de script qui marche, je l'ai déjà réussi et il y a pas de raison que ça marche pas, laisse moi juste unn pêu de temps, il faut que je retrouve mes marques. Éventuellement j'en ferai un script exemple de liste dynamiques parce que c'est souvent demandé.
Posté : 16 juin 2005, 16:56
par Born2PHP

Franchement Cyrano
En faisant ca tu me sauverai la vie
parce que là, je suis a bout de nerf
j'en peux plus!!!!!! je craque

Et pourtant j'aime coder
Dans tt les cas j'te remerci