begin process at 2010 09 02 22:26:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > CHAINER 3 LISTES DÉROULANTES EN AJAHT

CHAINER 3 LISTES DÉROULANTES EN AJAHT


 Information sur la source

Note :
8,56 / 10 - par 9 personnes
8,56 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaires Classé sous :chainer, liste, déroulante, ajax, commune Niveau :Débutant Date de création :20/08/2006 Date de mise à jour :22/08/2006 22:15:11 Vu / téléchargé :18 722 / 3 492

Auteur : CARATGOLD2004

Ecrire un message privé
Commentaire sur cette source (46)
Ajouter un commentaire et/ou une note

 Description

Voici un exemple pour chainer 3 listes déroulantes en AJAHT (HTML ou Text) un pseudo AJAX sans XML.
Le choix s’effectue sur la 1ere liste déroulante, puis la 2me qui se remplie en fonction de la première et enfin la troisième qui propose un choix dépendant de la 2me liste.
Liste1->liste2->liste3
L'avantage du code est de ne pas recharger plusieurs fois la page (affichage dynamique).

Débutant en PHP et javascript, je n’ai fait qu’adapter le code vu sur http://www.expertsrt.com/tutorials/Rod/ajaht.php  qui me permet de disposer d’un code réutilisable en modifiant simplement la connexion à la bd (connexionbd.php) et les 3 requêtes SQL contenues dans ValideLd1.php ValideLd2.php ValideLd3.php .

L’exemple propose de sélectionner un département, puis une commune et enfin un code postal parmi les 58000 (index compris) contenus dans la base.


 Conclusion

Pour installer les données, utiliser le fichier dump depcomcp.sql pour créer la base.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

22 août 2006 18:58:54 :
Création de 3 fichiers dump cp.sql, communes.sql, departements.sql
22 août 2006 22:15:11 :
Création d'un seul fichier dump

 Sources de la même categorie

Source avec Zip CHAT SIMPLE TOTALEMENT INTEGRABLE par landolsi10
FORMULAIRE BBCODE AVEC PASSAGE EN HTML par Seby63
Source avec Zip Source avec une capture FORMULAIRE DE RECOMMANDATION DE SITE par Dje33
Source avec Zip Source avec une capture FORMULAIRE DE CONTACT PHP5, POO, VERIFICATION + ENVOI DU MAI... par mtrix000
TESTEUR DE REGEX par hornetbzz

 Sources en rapport avec celle ci

Source avec Zip PDS-SONDAGES par bcmfr
DIFFÉRENCE ENTRE DEUX DATE EN JOURS (LISTE RÉCUPÉRÉE DANS UN... par DevilTN
Source avec Zip Source avec une capture RAFRAICHIR PLUSIEURS DIV EN UN CLIC (AJAX) par 120120
GÉNÉRATEUR DE LISTE DÉROULANTE par Vince66
Source avec Zip LISTE DÉROULANTE AVEC TOUS LES PAYS par Arafat Le Sorcier

Commentaires et avis

Commentaire de kankrelune le 21/08/2006 14:01:54

Salut...

A voir le contenu du zip j'espere que heureusement que ta table est pas en InnoDB... met un dump des tables pas les fichiers de la base... .. . ;o)

@ tchaOo°

Commentaire de CARATGOLD2004 le 22/08/2006 19:14:29

voilà qui est fait :-)

Commentaire de malalam le 26/08/2006 14:52:58 administrateur CS

J'aime bien le terme AJAHT...finalement, AJAHT, c'est AJAX tel que l'utilise la plupart des gens. Et AJAX, ce sont les requêtes XMLHTTP. Requêtes XMLHTTP qui peuvent renvoyer les données en XML...TEXT...OU HTML...
Bref...
Les modes... ;-)

Commentaire de ClMaverick le 24/11/2006 17:43:33

Bonjour,
   Ton code source m'a beaucoup aidé mais j'essaye de rajouter un affichage dynamique en fonction de chaque choix que l'on fait sur les listes.
   En faite partir d'une page avec un grand tableau et au fur à mesure réduire la taille du tableau pour à la fin ne voir que les résultats correspondant aux 3 sélections.
Merci d'avance à celles ou ceux qui pourront m'aider

Commentaire de DaD92 le 16/12/2006 12:04:47

Salut,

je me sert de ton menu, il est super et  il marche impec...
Merci pour ce code.

cependant j'ai un petit soucis, et je n'arrive pas à identifier d'ou ça viens.
Le premier menu déroulant m'affiche tout correctement, mais le 2e et le 3e m'affiche les caractères accentué de manière bizarre. En faite il les remplace par un losange noire avec un point d'interrogation dedans.
Sais tu d'où ça viens?
+
DaD

Commentaire de kankrelune le 18/12/2006 11:39:13

De l'encodage des caractères... .. .

@ tchaOo°

Commentaire de seven077 le 08/02/2007 17:30:13

Bonjour, peut on chainer 4 listes ?

Commentaire de JeanSeb59 le 13/02/2007 15:05:58

Bonjour,

Je pense que cela est possible.Mais je n'y arrive pas.
Quelqu'un pour de l'aide?
Merci

Commentaire de lebossdepo le 28/04/2007 08:39:45

j'ai vy ton code, je voudrai l'utiliser dans un formulaire pour enregistrer les informations saisies par un utilisateur. ces informations  sont contenues dans un formulaire POST, y compris les listes .
comment s'y prendre ,je n'arrive pas à le faire.

Commentaire de jbdecultot le 19/05/2007 14:51:56

super code, merci, j'en cherchait un depuis longtemps.
Par contre, j ai un petit souci, quand tu selectionne un departement, et une ville et après tu reselectionne un autre departement, la liste des villes ne se remets pas à jour. Avez vous quelques idées la dessus ?
Merci,
jb

Commentaire de dossa le 05/06/2007 17:03:36

Salut, merci pour ce code. Pour moi cela marche bien "Biensur si on sait comment l'adopter à notre besoin".

Commentaire de gagg le 09/06/2007 21:45:16

Concernant les caracteres spéciaux il suffit simplement de mettre la fonction htmlentities ()

dans les 3 pages, ajouter :
$retour .= '<option value="'. $row[$query_pos_id] .'">'.htmlentities($row[$query_pos_val]) .'</option>';

au lieu de :
$retour .= '<option value="'. $row[$query_pos_id] .'">'.$row[$query_pos_val] .'</option>';

++
gagg

Commentaire de Slyders le 12/06/2007 17:58:51

Chez moi sa marche pas pour la derniere liste oO bizzar ...

Commentaire de Tximiti le 14/06/2007 09:40:21

Bonjour,
Je trouve le code très bien fait surtout pour une débutante comme moi, le code est clair avec des commentaires pour le AJAHT ...En revanche, j'ai le même souci que  jbdecultot...Quelqu'un aurait-il une idée pour rafraichir et faire que la 2ème liste se remette à jour par rapport à la première ? Merci !

Commentaire de Slyders le 14/06/2007 13:55:14

Sa marche moi maintenant, mais je n'arrive pas à récupérer la valeur de ma derniere liste, comment on fait avec el bouton valider ? oO

Commentaire de Slyders le 03/07/2007 09:45:21

En effet j'ai aussi le même problème que Tximiti & jbdecultot de rafraichissement que je n'avais pas remarqué,

Commentaire de dossa le 04/07/2007 14:01:20

Salut, j'ai eu le même problème mais je l'ai déja résoud. Je vous promis de donner le plus tot possible la solution cherchée.

Commentaire de lagombe le 17/03/2008 11:24:22

Salut,

J'ai récupéré ce code qui correspondait exactement à ce que je cherchais. Maintenant, j'ai un petit hic que je n'arrive pas à résoudre : je fais des choix dans mes trois listes déroulantes, je modifie la première, la seconde se met à jour, pas la dernière... le code js dans la fonction ValideLd2 de ré initialisation ne fonctionne pas...
Quelqu'un aurait-il une idée? Merci.

Commentaire de labasse le 21/03/2008 17:40:32 9/10

YES!! super code que j'ai adaptée a une base Postgresql. Cela fonctionne.

Par contre, comme d'autres précédement j'ai un problème de mise a jour de la 2eme liste déroulantes.
Si on fait une selection dans la 2eme liste puis qu'on remodifie la 1ere, alors la 2eme liste ne se remet pas a jour... Vous me suivez ?! :$

Quelqu'un a t-il trouvé la solution?

Mille merci.

Commentaire de Slyders le 22/03/2008 21:39:54

Non, pas trouvé de solution...

Commentaire de labasse le 23/03/2008 17:05:43

mince....

Je remarque qu'il n'y a pas ce bug sous internet explorer...
Par contre il existe sous firefox et safari...

Some help???

Commentaire de Slyders le 23/03/2008 19:51:36

Non non le problème existe bel et bien sous IE aussi ^^
Changer de code ou le faire soi-même...
Bon courage :x

Commentaire de labasse le 25/03/2008 10:06:55

Pour etre tout a fait précis la mise a jour ce fait bien sous IE6 mais pas sous IE7 ...

Moi je bloque la...

Commentaire de labasse le 25/03/2008 15:10:40

C'est bon j'ai trouvé le bug!! ouf...

il faut rajouter le parametre false a la methode open..
ce qui donne: xmlhttp.open("GET", LD_URL, false);

asynchrone (true par défaut) : si true, la requête sera exécutée en arrière-plan, de manière asynchrone ; si false, le navigateur sera bloqué pendant l'exécution de la requête.

En fait la 2eme requete s'executait avant la fin de la 1ere ce qui entrainait le bug...

Commentaire de Slyders le 30/03/2008 10:09:27

Ok, merci, je testerai.

Commentaire de flash974 le 21/04/2008 10:48:03 8/10

Bonjour j'ai réutilisé le code sur mon site, je m'en suis également servi pour faire une sélection de catégorie puis de sous catégorie.
Les 2 codes fonctionnent très bien en solo, c'est à dire que si je les met sur la même page, il y a comme des interférences entre les listes déroulantes.. j'ai eu beau modifié les nom de variables et noms de fichiers pour chaque code, le problème persiste ! J'ai ma petite idée sur le souci, je pense que cela peut provenir du mot-clé "this" dans les "onchange" des listes déroulantes. Pouvez-vous m'aider ?

Commentaire de azqsazqs le 25/04/2008 15:18:42

sympa.


je cherche un truc dans ce style...mais plus compliqué.

je veux utilisé des données stockées dans une base sql
je voudrais aussi une actualisation automatique des liste

et enfin, je crois que ca va bloqué la dessus, pouvoir mettre un nombre variables de liste chainées.

Merci.

PS: je suis une brelle en ajax, ajaht, et javascript.

Commentaire de Slyders le 26/04/2008 09:42:49

En effet ce code n'est pas adapté pour faire de la génération de liste, il te faudrat refaire de l'ajax avec des boucles ^^

Commentaire de anil16 le 15/05/2008 20:23:44

Salut, Merci pour le code.
comment faire pour l'adapter à nos besoin? (je ne connais rien en javascript et ajax). donc je n'ai rien modifier sauf les requêtes SQL et la connexion à la base.
c'est à dire que je n'ai rien touché au script ListeCP.php
Merci pour votre réponse.

Commentaire de krysis le 25/06/2008 11:41:49

Oulaa Big Pb en même temps je l'avoue je suis noob xD quand je sélectionne un bureau dans ma 1ere liste la 2eme reste toujours grisée, une solution please ???

Commentaire de Slyders le 25/06/2008 15:42:53

Essaie de l'adapter petit à petit, le code marche mais il faut pas tous copier dans tous les senses. bon courage, penche toi plus dessus.

Commentaire de sissifatou le 10/07/2008 09:30:18

Bonjour !

G un petit problème avec ce code: voilà mes 3 listes sont bien affichées mais elles sont vides! :( Du coup c'est comme si on n'envoyait rien dans les différents scripts php. Est ce que quelqu'un a rencontré ce mm type de problème? Y a t-il quelqu'un pour m'aider siouplait?

Merci d'avance

Commentaire de usersource le 27/08/2008 01:51:36

Bonjour tout le monde et merci à CARATGOLD2004 pour ce Code,
Comme a dit labasse, il faut ajouter le paramètre false a la methode open dans la partie: //creation de l'objet XMLHttpRequest // mozilla,...
ce qui donne: xmlhttp.open("GET", LD_URL, false);
comme ça, il n y aura plus de problème de mise a jour de la 2eme liste déroulante sur Internet Explorer7.
Par contre, le script ne fonctionnera plus sur Mozilla, car ce dernier exige pour fonctionner, un paramètre true comme ceci xmlhttp.open("GET", LD_URL, true); donc ce code n'est pas fiable!! Il faudra l'adapter ou chercher une autre solution!. Merci quand même à CARATGOLD2004 qui ne donne plus de signe!!

Commentaire de NBreak le 25/09/2008 13:37:26

Salut tout le monde, pour ma part une autre question m'intrigue..
Comment intégrer les 3 variables finales des 3 listes déroulantes pour par la suite attaquer une base de données par le biet d'un POST et afficher mes résultats sur une autre page.

Merci encore pour le code initial  

Commentaire de Slyders le 25/09/2008 17:35:02

tu met donc tes liste dans un  <form METHOD="POST" name="Form1" action="monaction.php">
avec un bouton submit, et dans ta page monaction.php
<?php $mavariable=$_POST['taListe3']; ?>

Commentaire de jlbrenas le 20/10/2008 23:15:56

Bonsoir,
Ce code est super, mais je n'arrive pas à récupérer la valeur sélectionnée dans la dernière liste.
Si quelqu'un a trouvé la solution, je suis preneur et reconnaissant.
Pour ma part j'ai modifié à 4 listes et je ne récupére que les 3 premières valeurs.
Cordialement.

Commentaire de speroyves le 09/11/2008 23:00:40

Bsr à tous. Je remercie CARATGOLD2004 pour son code.Mais j'ai un peu de difficulté à réadapter ce code car je suis débutant. En effet j'aimerais réaliser un select en début de page qui affichera ensuite les autres select en fonction de sa sélection.Du genre voulez-vs sélectionner..et si oui on affiche les autres select.
M6 bcp à tout..

Commentaire de Philmod le 14/01/2009 12:06:34

Je me suis penché sur le problème de la mise à jour de la deuxième liste déroulante, mais sans succès...

Personne n'a maintenant trouvé la solution?

Merci

Commentaire de mickael56100 le 18/02/2009 18:36:27

J'ai essayé d'y ajouter une 4eme liste déroulante mais sans y parvenir, est ce que quelqu'un pourrait m'aider

<script type="text/javascript">
var Ld1Id='';
var Ld2Id='';
var Ld3Id='';
var id_liste='';

function ValideLd2(val) {
Ld1Id=val; //id_département
id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id;
ObjetXHR(LD_URL)
// Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
if (Ld2Id!='') {ValideLd3(''); }
}

function ValideLd3(val) {
Ld2Id=val; //id_commune
id_liste='3'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id;
if (Ld2Id=='') {var LD_URL = 'ValideLd3.php';}
ObjetXHR(LD_URL)
}
function ValideLd4(val) {
Ld3Id=val; //id_commune
id_liste='4'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd4.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3='+Ld3Id;
if (Ld3Id=='') {var LD_URL = 'ValideLd4.php';}
ObjetXHR(LD_URL)
}

function ObjetXHR(LD_URL) {
//creation de l'objet XMLHttpRequest
if (window.XMLHttpRequest) { // Mozilla,...
xmlhttp=new XMLHttpRequest();
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
}
xmlhttp.onreadystatechange=ChargeLd;
xmlhttp.open("GET", LD_URL, true);
xmlhttp.send(null);
} else if (window.ActiveXObject) { //IE
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
if (xmlhttp) {
xmlhttp.onreadystatechange=ChargeLd;
xmlhttp.open('GET', LD_URL, false);
xmlhttp.send();
}
}
// Bouton non apparent car modification de LD1,Ld2 ou Ld3
document.getElementById('buttons').style.display='none';
}

// fonction pour manipuler l'appel asynchrone
function ChargeLd() {
if (xmlhttp.readyState==4) {
if (xmlhttp.status==200) {
//span id="niv2" ou "niv3" ou "niv4"
document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText;
if (xmlhttp.responseText.indexOf('disabled')<=0) {
//focus sur liste déroulante 2 ou 3
document.getElementById('Liste'+id_liste).focus();
}
}
}
}

function Affiche_Btn() {
document.getElementById('buttons').style.display='inline';
}
</script>

Commentaire de kamilane le 26/02/2009 12:42:31

bonjour, je suis peut-être neuneu mais je n'arrive pas à imoprter la bdd avec easyphp en local (1.8).
Pouvez-vous me dire ce qui coince ?
Merci

Commentaire de kamilane le 26/02/2009 12:56:18

désolée ... j'ai trouvé. J'ai modifié la limitation d'upload d'Easyphp et c'est ok.

Commentaire de momo393939 le 17/04/2009 10:30:43

salut a tous,
tout d'abord merci pour ton code.
je l'ai adapté a mon besoin mais j'ai un problème...
Ma première combobox trouve apparement les champs désirés mais n'affiche pas leurs nom.
Je m'explique : la combobox repond a la requete select * from tab;
qui normalement me retourne 5 entités.
Lors de l'execution, je peux "ouvrir" ma combobox.Je peux selection parmis les 5 champs mais ca reste vide.Le nom s'inscrip pas.
je séléctionne donc un champs vide !!!
merci

Commentaire de cbst le 26/08/2009 11:23:57 4/10

Salut a tous,
Merci bien pour votre code,je l'ai modifiée selon notre besoin,mais j'ai 1 pbme:lorsque je sélectionne la liste1 qui contient le code de service,les deux autres listes restent inactives. Sachant que je veux travailler sur une seule table 'service':liste1 affiche le code de service,liste2 affiche sa désignation de service et liste3 affiche le type de service.
Merci d'avance pour votre réponse.

Commentaire de milounis le 29/10/2009 20:59:03 10/10

un grand merci pour la merveille, c'est vraiment le tope pour préciser quoi que se soi encore merci pour son auteur et bonne continuation pour la suite =)

Commentaire de julienslici le 12/03/2010 11:49:34 10/10

super !! cette archive m'a beaucoup aidé pour créer 3 listes chainées (pays/region/dept) !! merci beaucoup !

Commentaire de wisou01 le 02/09/2010 13:48:09

Salut un grand merci pour ton code je l'ai utilisé ca marche nickel et je l'ai adapté à mes besoins et ca marche sans problème
sauf que je voulais enregistrer la valeur saisie dans les select dans ma base

j'ai recuperer les valeurs de chaque liste avec $_GET["liste1"] par exemple
mais ca m'affiche les ID de chaque select et non pas l'item que le user a choisi
je voulais savoir comment on peut faire dans ce cas la

mercii

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

rafraichir le contenu d'une liste déroulante après saisie dans une popup [ par didine6 ] Bonjour @ tous,Sur un formulaire je souhaite saisir une commune à partir d'une liste déroulante (liée à une table oracle).Si la commune n'existe pas, Pb Ajax-PhP [ par Zakki49 ] Bonjour à tous,Alors il se trouve que j'ai un petit souci.J'ai deux liste déroulante la première chargé au démarrage de ma page, et la deuxième qui se Liste déroulante liées à 3 niveaux [ par aurelienvilliers ] Bonjour,Je tente de modifier un script. Le code est celui ci : http://www.codyx.org/snippet_listes-deroulantes-liees_89.aspx. Je suis novice en php... liste déroulante 2 boutons de validation vers 2 pages differentes [ par skull21 ] Bonjour,Voici mon soucis : J'ai une liste déroulante dynamique avec 2 boutons de validation, l'un pour "voir" l'autre pour "modifier" la selection.Je Formulaire avec liste déroulante - demande d'aide [ par notebleue ] Bonjour,J'ai créé une petite base de données me permettant de faire des essais sans devoir utiliser ma base réelle comportant plus de champs. Cette pe Affichage d'un tableau en fonction d'une liste déroulante [ par twa4ever ] Bonjour tout le monde Je souhaiterais afficher des données dans mon tableau en fonction du nom choisit dans la liste déroulante, j'ai essayé tout si liste déroulante [ par borisz1 ] bonjour,voila j'ai une table avec l'un de mes champs qui s'appel constructeur mais qui est relié à d'autres champs.dans l'une de mes pages j'ai une li le nombre d'élément d'une liste déroulante [ par kirika45000 ] Bonjour à tous, J'ai des petits soucis en PHP. J'ai deux listes déroulantes, la première est générée par une requête PostgreSQL. Losrqu'on clique sur Coment on peut réaliser un script en PHP d'une liste déroulante en fonction d'une autre liste? [ par bestabibi ] Salut ;J'ai un probleme d'afficher une iste déroulante en fonction d'une autre liste à partir d'une base de données;Merci. Liste déroulante + indexation sur colonnes d'un tableau [ par bruno9173 ] Bonsoir,Comment feriez-vous en php (je connais mal le js) pour intégrer sur l'en-tête de chaque colonne d'un tableau, une liste déroulante (alimentée


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales