Designed by Maunakea !
78 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter






   

Listes dépendantes : avec ou sans XMLHttpRequest (1/11)

Les délires «Ajax or not Ajax»





DB77
Comme toujours, c'est à la suite d'un coup de pouce que je me suis décidé à faire ce tuto. Merci à sylkan qui est à l'origine de cette demande.
Le problème posé est d'actualiser une liste déroulante en fonction de la précédente.
Bien sûr cette cascade de listes déroulantes peut s'étendre à l'infini (j'exagère).
Toutefois deux techniques peuvent être utilisées.
Soit par XMLHTTPRequest, soit par chargement dans des tableaux de toutes nos listes.

Nous allons essayer de voir ces deux techniques pas à pas, en augmentant le nombre de listes dépendantes, que ce soit en ASP ou en PHP.


Préambule - Les bases de données - Une liste avec XMLHttpRequest - Une liste sans XMLHttpRequest - Deux listes avec XMLHtpRequest - Deux listes sans XMLHtpRequest - Trois listes avec XMLHttpRequest - Trois listes sans XMLHtpRequest - Et en paramétrant - Sans l'option "Tout" - Bonus : découper par lettre


Préambule

 Références utiles 
Vous pourrez consulter les nombreux liens que j'ai récoltés :
le B.A.Ba sur les listes
le tuto de Didier sur Ajax
le bout de code de Vonscott
le bout de code de salem
le tuto de jreaux62
Et j'en ai sûrement oublié d'autres que je prie de bien vouloir m'excuser...

Le bout de code «D'un select à l'autre» pourra peut-être vous servir également.

 Ajax ? XMLHttpRequest ? C'est quoi ce truc ? 
Si, après avoir lu les articles cités en référence ci-dessus, vous n'avez toujours rien compris, alors, essayons de parler simplement.
Ce système, au nom compliqué à retenir, permet de modifier une page sans avoir à la recréer complétement, comme c'est souvent le cas d'ailleurs sur de nombreux sites.
En effet, on va pouvoir, par exemple, actualiser une partie de la page uniquement, en allant chercher les informations dans une base de données et en actualisant l'objet concerné sur la page.
Comme ceci, par exemple (tester) :

En changeant la sélection dans la liste déroulante, on actualise les données relatives au client sélectionné sans recharger l'intégralité de la page.

 Bases de travail 
Je suis parti des exemples des listes (B.A.Ba ci-dessus) et du tuto de Didier sur Ajax que j'ai retravaillés à mon goût donc ne vous étonnez pas de retrouver les mêmes noms de champs, les mêmes structures, etc.
J'ai supprimé le superflu et ajouté des améliorations.
J'ai adapté pour que ça fonctionne, sur mon PC, sous FireFox 3 et sous IE 7 mais n'ai pas testé avec d'autres navigateurs.
Dans le cas d'Ajax, j'ai ajouté, dans les listes déroulantes, la possibilité de choisir «Tout».
Ainsi, en choisissant «France» comme pays, «Ile de France» comme région, «Tout» comme département, on obtiendra, dans la dernière liste déroulante, l'ensemble des villes d'Ile de France.
Toutefois, il faut bien comprendre que, malgré tout ça, chacun pourra adapter ces codes à sa propre «sauce».
Le plus important étant de comprendre le principe pour pouvoir le reproduire ensuite.

Exemple de l'option "Tout" ajoutée dans le mode "avec XMLHttpRequest" :
(Attention, seulement 5 ou 6 villes ont été saisies pour tester les modules)

TESTEZ la démo "sans XMLHttpRequest" (Pays, Régions, Départements) :
Sélectionnez 
Pays :
Région :
Département :
Identifiants :    

 Principe 
Pour mettre en pratique ce tuto, j'ai choisi de reprendre l'exemple pour lequel on a sollicité mon aide (n'est-ce pas sylkan ?).
Ainsi, nous allons sélectionner des pays ayant des régions ayant des départements ayant des villes...
On pourrait bien sûr continuer en ajoutant ...ayant des rues ayant des maisons ayant des habitants...
Mais une fois le principe compris pour un, puis réussi à être implémenté pour deux, puis trois, je ne pense pas qu'il soit nécessaire de le rendre infini ;)

Lorsque nous utiliserons Ajax et l'objet XMLHTTPRequest, nous effectuerons des requêtes en accédant à notre base de données. Le module effectuant cette requête nous retournera du code JavaScript que nous exécuterons.
Dans ce cas de figure, nous pourrons donc sélectionner des enregistrements en fonction de critères et notamment un identifiant.

Par contre, dans le cas du traitement purement interne, nous utiliserons des tableaux chargés en mémoire.
Dans ce deuxième cas, il faudra trouver une astuce pour que le pays 11 et la région 2 ne nous donne pas le pays 1 et la région 12.
Le principe utilisé pour distinguer ces éléments sera de constituer une clef unique en mettant bout à bout les identifiants mais en les séparant avec un caractère. Dans l'exemple ci-dessus, nous aurons «1 12» et non «11 2».
Nous effectuerons alors une modification de notre liste directement à partir de l'un de ces tableaux chargés en mémoire après avoir recherché l'identifiant qui nous intéresse.

Mais passons maintenant dans le vif du sujet...


Pour pouvoir écrire dans ce forum, identifiez-vous !

 Lire  27/11/09 19:14 de fritzphp
Merci beaucoup pour ton tuto, il est superbe et très ...
  • 27/11/09 23:12 de DB77 Content pour toi et merci de le dire :)
  •   v1.3p © ASP-PHP.net 2002  

    DB77 le 08/04/2010 (34 903 hits)
    Didier Téléchargez gratuitement et légalement des logiciels Microsoft ! Si, si ;)
    • Visual Studio 2010
    • Office 2010
    • Expression Studio 3
    • SQL Server 2008
    • et d'autres...
    Au fil des news  
    Adobe - Adobe lance des applications Photoshop Express....
    PHP - Détermination de l'intersection entre 2 segments
    Magazines - Le N°132 de Programmez est disponible
    Les alertes dans SharePoint 2007 - Comment SharePoint 2007 gère les User Alerts
    Une des fonctionnalités de base de SharePoint, aussi bien dans Windows SharePoint Services (WSS) ...
    Adobe - Photoshop.com Mobile pour Android 1.2
    Adobe - Adobe dévoile une technologie de lecture.......
    PHP - Experts PHP : participez au Forum PHP 2010 !
    PHP - Fobec.com - Code source PHP & javascript
    Foliotage alphabétique - Lister sur la première lettre d'un champ
    Pour faire suite à l'article de JPierre sur la pagination alphabétique, voici, en ASP et en PHP, ...
    Dreamweaver CS4 + Php + Mysql - Pagination alphabétique
    Je vous propose la création d'une barre de navigation ou pagination alphabétique pour filtrer les ...
    Adobe - HTML5 dans Dreamweaver CS5
    VBScript - Déterminer si un chemin est absolu ou relatif
    VBScript - Lire/écrire un fichier texte
    Magazines - Le N°130 de Programmez est disponible
    Hebergement - Hébergement à prix libre
    Adobe - Adobe Creative Suite 5
    PHP - Calcul de la date de Pâques
    Magazines - Le N°128 de Programmez est disponible
    Magazines - Le N°127 de Programmez est disponible
    Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 6
    Pour continuer dans le même style, je vous propose une suite au précédent article. Rechercher tous ...
    Adobe - Adobe Photoshop.com Mobile pour iPhone 1.1
    JavaScript - Ajouter une page dans vos favorites
    Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 5 -
    Je vous propose cette fois deux astuces. Comment exporter une feuille de style avec l'aide de ...
    SharePoint Personalization Site Links - Les liens personnalisés des MySite SharePoint
    Nous avons vu dans les articles précédents comment agrémenter les pages de recherche afin de ...
    Magazines - Le n°126 de Programmez est disponible
    Outils - Traducteur en ligne automatique pour site web
    Adobe - Adobe Photoshop.com Mobile pour Iphone
    Magazines - Le n°125 de Programmez est disponible
    Adobe - Adobe AIR 2 et Flash Player 10.1version bêta
    Les conférences autour des technologies Microsoft - Liste non exhaustive des grands évènements
    Nous allons essayer de regrouper un grand nombre des évènements autour des technologies Microsoft ...
    Magazines - Le n°124 de Programmez est disponible
    PHP - Forum PHP 2009
    Composants - eFace - XAML en Java
    WPF - Désactiver le bouton de réduction d'une fenêtre
    Magazines - Le n°123 de Programmez est disponible
    Magazines - Le n°122 de Programmez est disponible
    Auditer une ferme SharePoint - Assurer le bon fonctionnement de SharePoint
    Dans le cadre de la bonne gestion de son environnement SharePoint, il est utile de faire un ...
    SQL Server 2008 Report Builder 2.0 - Installation et utilisation de Report Builder 2.0
    Dans le cadre de la création de rapports pour SQL Server Reporting Services 2008, un outil est ...
    Magazines - Le HS N° 1 de Web Design est disponible
    Outils - EntityBuilder
    Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
    Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
      Scripts : Scripting | ASP-PHP | ASP.net | Divers
      Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
    v3b © Didier 2003   
     

    Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
     MVP TechNet DotNet Project ASP-magazine Groupes Utilisateurs Microsoft