JFLAD Blog: Recherche & développement: Ajax, Javascript, CSS, XHTML, Flash, Référencement, Webmarketing, Open Source, gestion de projet

Aller au contenu | Aller au menu | Aller à la recherche

Faire une requête en Ajax avec Mootools

mardi, août 28 2007

Ce tutoriel vous montre comment faire des requêtes en Ajax avec la librairie Javascript Mootols, c'est à dire comment afficher des données provenant d'une base de données en fonction d'une requête SQL sans rechargement de la page et en apportant une touche d'interactivité. Cette application Ajax se greffera sur un site traditionnel, car comme je l'ai déjà expliqué dans un précédent billet, une application Ajax se greffe sur un site déjà existant afin de bénéficier de son référencement et d'une structure stable dans le cas où le client a désactivé le Javascript de son navigateur.


Avant de commencer, il est important de comprendre deux choses qui sont essentielles dans le développement d'un application Ajax: les conteneurs et les gestionnaires d'évènements (je parle aux non initiés !!!).


Les conteneurs

Les conteneurs vont vous permettre de délimiter les zones d'affichage des données, ce sont des 'div' que l'on identifie grâce à leur 'id'. Il est important de bien les nommer afin de pourvoir les retrouver facilement !

Les gestionnaires d'évènements

Les gestionnaires d'évènements vont vous permettre de récupérer les évènements de la page suivant les actions de l'utilisateur. Exemple: quand l'utilisateur 'click' sur un bouton, quand les données sont chargées avec succès 'onSucces' ...
Mootools dispose de puissants gestionnaires d'évènements qui vont vous permettre de contrôler l'ensemble des actions de l'utilisateur et des différents états de la page.

Dans un premier temps il faut développer le site normalement pour qu'il fonctionne en totale indépendance du Javascript et pour être référencé sous Google. Conservez vos méthodes et outils traditionnels pour concevoir votre site, il faut juste bien définir le nom des 'id' des éléments qui seront utilisés par nos scripts Ajax, par exemple le conteneur qui affiche les données, le menu qui déclenche les requêtes Ajax, etc...
Une fois le site construit, nous allons développer notre applications Ajax, pour se faire nous aurons besoin de:

  • Notre page XHTML avec un menu en liste,
  • La librairie Javascript Mootools à inclure dans l'entête de la page,
  • Un fichier Javascript qui exécute la requête Ajax,
  • Un fichier PHP qui traite la requête et retourne les données à afficher.

Comme le développement de l'application Ajax est indépendant de votre site, elle peut être déployée sur un site déjà existant sans nécessité de modification sur la structure du site! Il vous faudra alors uniquement inclure vos librairies Javascript et Mootools et créer vos fichiers PHP qui effectueront vos traitements coté serveur.


Débutons désormais le développement de l'application Ajax, tout d'abord il faut inclure dans l'entête la librairie Mootools que vous pouvez télécharger sur le site de Mootools.net, et le script Javascript que nous allons développer. Le principe de base est de déclencher la requête Ajax lorsque l'on 'click' sur un lien du menu. Voici le code XHTML de notre page, comme vous pouvez le constater, il n'y a aucun script ou gestionnaire d'évènements dans notre document XHTML, juste des balises! Tout le contrôle des évènements va se faire depuis notre script Javascript !

<ul id="myElement">
  <li><a href="test/voila1/">Test1</a></li>
  <li><a href="test/voila2/">Test2</a></li>
  <li><a href="test/voila3/">Test3</a></li>
  <li><a href="test/voila4/">Test4</a></li>
  <li><a href="test/voila5/">Test5</a></li>
  <li><a href="test/voila6/">Test6</a></li>
</ul>


Maintenant, nous allons récupérer l'évènement 'click' avant de déclencher notre requête Ajax, et bloquer le pointage naturel du lien vers la page correspondante avec Event(E).stop().


  // On applique le gestionnaire d'évènement à tous les liens du menu liste
  var list = $$('ul#myElement li a');
  list.each(function(element) {
    // Gestionnaire d'évènement 'click'
    element.addEvent('click', function(e){

        // On stoppe le pointage naturel du lien pour ne pas recharger la page
        e = new Event(e).stop();

         // Ici notre requête Ajax décrite plus bas
   });
});



Un fois que l'on a récupéré l'évènement 'click', il est temps de déclencher notre requête en Ajax! Pour ce faire nous allons créer un objet 'Ajax' de Mootools avec comme paramètre l'url du fichier PHP qui va traiter notre requête, la méthode de transfert (post ou get), l'encodage des données (uft-8, iso ...), le cadre du conteneur dans lequel vont être affichées les données transférées (update) qui doit être renseigné par le nom de l'id du conteneur. Et enfin, un gestionnaire d'évènements 'onComplete' qui prend en paramètre une fonction, cela permet par exemple de mettre un effet d'apparition sur le conteneur qui affiche les données. Dans un deuxième temps il faut paramètrer la requête Ajax grâce à la méthode 'request' avec les variable à envoyer au fichier PHP de traitement. Voici le code Javascript de la requête Ajax:

            // Requête ajax
            var url = 'ajax.php';
           
            var ajaxRequest = new Ajax(url, {
       
                method: 'post',
                encoding: 'uft-8',
                onComplete: showSucces(),
                update: log
           
            });
           
            var requestVar = {
                var1: 'voila la variable numéro1',
                var2: 'voila la variable numéro1',
                var3: 'voila la variavle numéro1',
                var4: 'voila la variable numéro1',
                var5: 'Tutoriel par JFLAD'
            };
           
            ajaxRequest.request(requestVar);



Il faut maintenant traiter la requête Ajax avec un fichier PHP qui va retourner le contenu à afficher:

                  

<?php

    // On récupère les données
    $var1 = $_POST['var1'];
    ...

    // Traitement des données
    // Içi vous effectuez vos requêtes SQL et traitement divers

   // On retourne le contenu a affiché
   if(isset($_POST['var1']))

   {

        print '<p>Votre contenu à afficher...</p>';

   }

?>




Le traitement en PHP doit être développé comme à l'habitude, à la différence près que vous allez envoyer votre contenu à afficher à votre page XHTML plutôt que de l'afficher directement. Néanmoins je vous conseille de sécuriser vos fichiers PHP de traitement avec par exemple une session de tests surtout lorsqu'il exécute des requêtes insert/delete dans vos bases de données afin d'éviter des injections SQL!

Dans un prochain tutoriel, je vous montrerai comment apporter une touche d'interactivité à vos évènements grâce à Mootools et l'utilisation de sa class Fx !

Dotprojet un groupware simple et efficace.

vendredi, octobre 27 2006

On désigne par le terme de GroupWare les outils logiciel permettant à des utilisateurs de mener un travail en commun à travers les réseaux.

Ainsi le terme GroupWare renvoie à des applications diverses et variées concourant à un même but : permettre à des utilisateurs géographiquement éloignés de travailler en équipe. Le travail en équipe peut se concrétiser par le partage d'informations, ou bien la création et l'échange de données informatisées.

JFLAD a testé Dotproject, logiciel open source écrit en PHP, MYSQL. Il présente l’avantage de regrouper toutes les fonctionnalités que nous voulions retrouver, il est facile d’utilisation grâce à une interface graphique sobre et agréable, il est totalement paramétrable, le code source est clair et modifiable.
Mais son réel avantage est de réunir tous les outils nécessaires à la gestion de projet, il n’y a pas de fonction ou de module inutile et gadget : il permet vraiment de maitriser toutes les étapes de gestion de projet de manière efficace et très rapide.

Site Internet : http://www.dotproject.net/

Voici les différentes fonctionnalités qu’il présente :

  • Un calendrier / agenda (projet, tâches, réunion …).
  • La gestion des projets avec état d’avancement et diagrammes de Gantt.
  • Affichage de l’avancement général du projet avec des diagrammes à bâton.
  • La gestion des taches avec création des groupes de travail, gestion des dépendances, gestion des ressources.
  • La gestion des éléments financiers.
  • La répartition des rôles et responsabilités des acteurs du projet.
  • La gestion des ressources et des fichiers avec historique des opérations.
  • La possibilité de créer des sociétés pour le travail collaboratif avec les clients, sous traitants et autre sociétés.
  • La prise en compte du client dans l’interface MOE / MOE.
  • Un forum pour échanger.
  • Un module de ticket d’incident pour signaler des problèmes et trouver les solutions.
  • Gestion des contacts.
  • Gestion des liens (liens ressources, veille technologique, sites concurrents…)
  • Gestion des ressources et connaissance de l’équipe, veille technologique.
  • Gestion des fichiers archivage des opérations et système qui informe les membres de l’équipe par mail lors d’une modification.
  • Historique de connexion de chaque membre (durée de connexion, action effectuée, message posté, fichier déposé…)
  • Gestion des utilisateurs, aussi bien l’équipe que les clients, possibilité de limiter l’accès à certain module.
  • Gestion des droits et des rôles de chacun sur chaque module, journal de connexion.
  • Gestion des modules.