Développement d'une application web sondage en ligne
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Amiot Hervé L.p. SIL CDOOAM 2010-2011 Parussolo Mickaël Encadré par Jean-Marc Nicod Projet Licence Professionnelle Systèmes Informatiques et Logiciels Conception et Développement Orientée Objet d’Applications Multi-tiers Développement d’une application web de sondage en ligne
Sondage en ligne L.p. SIL CDOOAM 2010-2011 Sommaire I) Description..................................................................................................... 1 II) Objectifs ......................................................................................................... 2 1) Les critères ................................................................................................. 2 2) Le public visé .............................................................................................. 2 3) Problématique............................................................................................. 2 III) Stratégie et moyens ..................................................................................... 3 1) Le Front Office ............................................................................................ 3 a) Le design ............................................................................................... 3 b) L’accès .................................................................................................. 4 c) La réponse............................................................................................. 5 d) La validation........................................................................................... 6 2) Le Back Office............................................................................................. 7 a) L’interface .............................................................................................. 7 b) Le sondage et ses questions ................................................................. 8 c) Les utilisateurs et la prise de contact ..................................................... 9 d) Mesures de sécurité .............................................................................. 10 IV) Solutions techniques et applications......................................................... 12 1) Base de données ........................................................................................ 12 2) Utilisation de PHP ....................................................................................... 13 a) Interrogation de la base de données ..................................................... 13 b) Mailing ................................................................................................... 14 3) Utilisation de JavaScript et d’AJAX ............................................................. 15 a) JavaScript.............................................................................................. 15 b) AJAX...................................................................................................... 17 V) Problèmes et solutions................................................................................. 20 VI) Conclusion .................................................................................................... 21 Annexes : A1. Solution clé en main – Documentation sur la migration du projet « Sondage en ligne » A2. Guide utilisateur – Documentation sur l’interface d’administration du projet « Sondage en ligne »
Sondage en ligne L.p. SIL CDOOAM 2010-2011 Le projet s’intéresse à la création d’une application web destinée à créer des sondages et à en exploiter les résultats. Il est développé dans le cadre d’un sujet de master d’une étudiante en ostéopathie au « Deutsches Osteopathie Kolleg » en Allemagne. I) Description Actuellement, cette étudiante procède de manière relativement classique, par voie postale et au moyen de documents papiers, parmi lesquels : • Une lettre de présentation du contexte et de ses attentes • Une attestation de publication anonyme, à remplir par l’individu faisant partie de l’échantillon • Le questionnaire lui-même Cette méthode est relativement contraignante, puisqu’elle entraîne un processus long, fastidieux et coûteux: • Pour l’étudiante : création des questionnaire, lettre et autorisation, éventuelle transposition sous éditeur de texte informatique, impression, constitution des courriers, envoi multiple, dépouillement manuel après réception des réponses, élaboration de statistiques. • Pour le sujet : remplissage de l’attestation, réponses aux questions, constitution du courrier de retour, envoi. Ce processus représente donc un frein considérable à la démarche, tant envers l’étudiante qu’envers l’échantillon, ce dernier ne tirant aucunement profit de son intervention. Il est donc bienvenu de simplifier ces démarches afin de toucher un échantillon plus large, d’obtenir un pourcentage de réponses plus élevé, et ainsi rendre les résultats de l’enquête plus pertinents. C’est pourquoi la solution de création d’un outil de gestion en ligne a été choisie. -1-
Sondage en ligne L.p. SIL CDOOAM 2010-2011 II) Objectifs 1) Les critères Cet outil en ligne doit principalement présenter les fonctionnalités suivantes : Pour l’élaborateur du sondage la création de sondages par l’élaboration de questions éditables la possibilité de créer une arborescence illimitée de questions : apparition de questions en fonction de la réponse à la question parent. l’envoi intuitif et rapide des invitations au sondage par mail l’exploitation des résultats du sondage, par personne, ou par sondage Pour l’utilisateur la réponse aux questions la possibilité d’attester l’autorisation de publication anonyme 2) Le public visé Dans ce cas précis, le sondage réalisé par l’étudiante vise un public de professionnels dans le domaine médical, plus particulièrement les ostéopathes. Cependant, pour des raisons d’évolution et dans le but d’optimiser l’application, il nous a semblé crucial de développer une solution web générique et plus globale, afin de permettre à l’avenir, la création de sondage dans tout domaine. Nous estimerons donc que le public visé se constitue de toute personne munie d’une adresse mail et susceptible de participer à un sondage, de quelque type qu’il soit. 3) Problématique Par nature, un sondage présente le désavantage de n’être bénéfique que pour celui qui le réalise. La réponse de l’échantillon ne dépendant donc que de leur bonne volonté, il est nécessaire d’adopter toutes les mesures possibles afin de leur faciliter la démarche et ainsi les inciter à répondre aux questions. -2-
Sondage en ligne L.p. SIL CDOOAM 2010-2011 III) Stratégie et moyens 1) Le Front Office Ainsi, afin d’atteindre les objectifs fixés tout en répondant à la problématique posée, nous avons commencé par définir une maquette simplifiée de la page sur laquelle les utilisateurs pourront répondre aux questions du sondage. Le Front Office est la partie du site visible par tout internaute, contrairement au Back Office, auquel un utilisateur lambda n’a pas accès. Par analogie, le Front Office correspondrait à la boutique, et le Back Office à l’arrière boutique. a) Le design Maquette de la page -3-
Sondage en ligne L.p. SIL CDOOAM 2010-2011 L’interface revêtira des blocs colorés de questions, aux coins arrondis, alternant de façon rotative trois couleurs, vives, sans être désagréables pour autant. Cela permet d’attirer l’attention et d’éveiller l’utilisateur. Chaque sous-question est affichée dans le bloc extensible de sa question parent, avec un décalage sur la droite, marquant ainsi le caractère hiérarchique des questions. Un bloc est créé à chaque question racine, c'est-à-dire à chaque question dont l’affichage ne dépend d’aucune autre question. Hormis cela, la page garde un aspect relativement simple et officiel de par l’absence de fantaisies telles qu’un fond d’écran trop abusif, des boutons ne correspondant pas aux standards, ou encore des animations malvenues. Un message d’accueil de quelques lignes remercie par avance l’utilisateur pour le temps qu’il s’apprête à consacrer à l’enquête. Cette simplicité permet à l’utilisateur de situer rapidement chaque fonctionnalité et d’aller à l’essentiel. b) L’accès Dans cette optique de simplicité et de facilité, il est capital de proposer un accès direct et non restrictif à l’utilisateur. Quoi de plus décourageant en effet que d’atterrir sur une page exigeant une inscription pour y avoir accès ? Le caractère éphémère d’un sondage nous a donc convaincus d’opter pour un juste compromis entre simplicité et sécurité. Lorsqu’un utilisateur suivra le lien qu’il a reçu dans le mail d’invitation, il se retrouvera automatiquement sur la page lui permettant de répondre aux questions. La distinction de l’utilisateur se fait au moyen d’une clé unique de 8 caractères alphanumériques, générée aléatoirement, et propre à la participation d’un utilisateur à un sondage. Cette méthode permet un accès instantané au sondage à l’utilisateur, tout en garantissant un niveau de sécurité relativement élevé. En effet, sachant que chaque rang de la clé peut prendre 62 caractères distincts (les 26 lettres de l’alphabet, en minuscule et en majuscule, ajoutées des 10 chiffres de 0 à 9), et en simulant un échantillon de 50 personnes sur un sondage, la probabilité pour qu’un internaute mal intentionné réussisse à deviner une clé par tâtonnement, en admettant qu’il connaisse l’adresse de la page en question, est de 50/628 soit 2.29*10-13, autant dire quasi-nulle. -4-
Sondage en ligne L.p. SIL CDOOAM 2010-2011 Nous avons estimé que la persistance dans le temps d’une enquête de ce type était trop courte pour que cette dernière soit sujette à des tentatives de piratage plus élaborées. Dans le cas où l’utilisateur utiliserait un ordinateur public, il sera en revanche préférable qu’il supprime son historique de navigation. c) La réponse Un des freins majeurs à la complétion d’une enquête qui s’avérerait un peu longue, réside dans le fait de devoir la remplir en un seul mouvement dans son intégralité. Prenons l’exemple d’un utilisateur qui se voit ainsi remplir plus de la moitié du sondage et qui vient à interrompre son action avant la validation finale, soit du fait d’un problème technique (coupure de courant, « crash » du navigateur ou du système d’exploitation…), soit de manière purement personnelle (fatigue, lassitude, urgence…). La probabilité pour que l’utilisateur consente à recommencer la manœuvre depuis le début une seconde fois est alors bien trop faible. Nous avions donc imaginé dans une première réflexion, une segmentation par pages des questions, avec un enregistrement temporaire de ces dernières, côté client, à chaque changement de page. Sur notre toute première maquette apparaissait une barre de progression qui informait l’utilisateur de la longueur totale du sondage, de l’endroit où il se trouvait, et de ce fait, du nombre de pages qu’il lui restait à remplir. Pour des raisons d’échéances, mais également techniques, nous avons dû revoir la méthode à adopter et nous en avons conclu qu’il était plus approprié d’afficher toutes les questions sur une même page, facilitant alors la navigation et offrant une vue d’ensemble sur le questionnaire. Ainsi, une sauvegarde temporaire par le biais d’un bouton « Enregistrer le brouillon » d’une part, et par un mécanisme d’auto-sauvegarde s’exécutant toutes les deux minutes d’autre part, a été préférée. Le stockage des données se fera côté serveur, et non plus côté client. L’utilisateur aura alors tout loisir de remplir partiellement le sondage, d’y revenir plus tard et ce, autant de fois qu’il le souhaitera, dans la mesure où il n’a pas validé ses réponses au moyen du bouton final. En effet, le cas échéant, il n’aura plus possibilité de modifier, ni même de consulter ses réponses. Du point de vue de l’administrateur du sondage, il ne pourra consulter les réponses d’un utilisateur que lorsque celui-ci aura définitivement validé ses réponses. -5-
Sondage en ligne L.p. SIL CDOOAM 2010-2011 d) La validation Afin d’informatiser pleinement la démarche, la lettre d’autorisation de publication anonyme des résultats doit également être substituée. Pour cela, nous mettons en place une case à cocher en amont du bouton de validation. À côté de cette case à cocher est signifié que l’utilisateur autorise l’administrateur du sondage à publier de manière anonyme ses réponses au questionnaire. Si le bouton « Valider » est actionné alors que la case n’est pas cochée, le processus de validation n’est pas exécuté et un message d’alerte avertit l’utilisateur qu’il doit obligatoirement consentir à cette clause afin de valider ses réponses. Étant donné le caractère irréversible de la validation des réponses, une mise en garde et une demande de confirmation via une boite de dialogue est essentielle. Elle garantit la volonté effective de l’utilisateur à soumettre ses réponses de manière définitive. -6-
Sondage en ligne L.p. SIL CDOOAM 2010-2011 Une fois le sondage validé, l’utilisateur est redirigé sur une page de remerciement, lui expliquant que ses réponses ne lui sont désormais plus accessibles. S’il essaye d’y accéder à nouveau, il atteindra automatiquement la page de remerciement, lui interdisant alors toute modification. 2) Le Back Office Le Back Office correspond à l’administration, à laquelle seuls les webmasters ainsi que l’élaborateur du sondage peuvent accéder, au moyen du fameux couple login/mot de passe qu’ils peuvent définir eux même. L’outil d’administration doit permettre à l’administrateur de : créer, modifier, supprimer un sondage créer, modifier, supprimer des questions ajouter, modifier, supprimer des propositions de réponses aux questions fermées et définir leur « cardinalité » (possibilité d’un seul choix parmi plusieurs ou de plusieurs choix parmi plusieurs) ajouter des utilisateurs ajouter des groupes thématiques d’utilisateurs constituer le contenu du mail créer un mailing a) L’interface Cet outil sera donc constitué d’un menu de fonctionnalités, et d’une zone d’affichage réagissant aux interactions de l’administrateur avec le menu. Aucune stratégie de présentation n’a été effectuée, ce qui donne lieu à un outil relativement classique, mais pas moins efficace. -7-
Sondage en ligne L.p. SIL CDOOAM 2010-2011 Menu [X] Déconnexion Rubrique 1 • Intitule 1 • Intitule 2 Rubrique 1 • Intitule 1 • Intitule 2 Zone affichage • Intitule 3 Rubrique 3 • Intitule 1 L’objectif principal est ici de proposer un outil rapide, simple, et intuitif afin d’optimiser au maximum le travail de l’élaborateur du sondage. b) Le sondage et ses questions Pour ce faire, nous proposons le renseignement d’un minimum de détails quant au sondage, ne le définissant ainsi que par un libellé. Les dates de création et de modification seront gérées de façon automatique. Une fois le sondage créé, l’administrateur pourra commencer à créer des questions appartenant à ce dernier. Compte tenu du caractère hiérarchique de certaines questions, nous avons choisi une présentation sous forme d’arborescence. Question parent numéro 1 ? ----------● Question fille numéro 2 ? --------------------● Question fille numéro 4 ? ----------● Question fille numéro 3 ? Pour chaque question, trois actions seront possibles : l’édition, la suppression et la modification de l’ordre. Concernant les informations inhérentes à une question, l’administrateur devra renseigner : • son intitulé • son éventuelle question parent et la proposition de celle-ci à valider pour afficher la question en cours • son type (ouverte / choix multiple) • les choix possibles (un seul / plusieurs) Concernant l’ajout de propositions, il n’est possible que dans le cas de questions fermées. La gestion de ces propositions aurait été possible dans une page à part, en -8-
Sondage en ligne L.p. SIL CDOOAM 2010-2011 définissant la référence à une question. Il a été estimé plus intuitif et plus approprié de pouvoir les gérer directement dans la page correspondante à la question. Une zone de gestion des propositions se dévoile donc lorsque l’administrateur définit le type de sa question comme « choix multiple ». L’intitulé de la proposition est la seule information requise. c) Les utilisateurs et la prise de contact Une fois le sondage réalisé, la seconde partie du travail, et non des moindres, est de contacter chaque utilisateur afin de les inviter à répondre à l’enquête. Deux méthodes informatiques sont alors envisageables : l’envoi « manuel » de courriers informatiques, à partir de la boîte mail de l’élaborateur du sondage cela implique d’envoyer les invitations mail par mail, afin que chaque utilisateur reçoive sa propre clé d’identification au sondage l’envoi automatisé via un système de mailing Toujours dans l’optique d’apporter une solution complète et optimisée, un mailing est préféré. Intégré à l’administration, il rend la tâche simple, rapide, et fournit un suivi suffisamment détaillé pour éviter les erreurs. Il est donc nécessaire de pouvoir ajouter des utilisateurs en renseignant leurs nom, prénom, et adresse mail. Il sera également possible de les affecter à un groupe thématique d’utilisateurs, créé au préalable. Ainsi, lors du mailing pour un sondage, la sélection des utilisateurs peut se faire de deux manières différentes : par groupe, le choix d’un groupe facilitant la sélection de tous les utilisateurs appartenant à ce groupe individuellement Une fois les mails envoyés, les informations concernant le suivi des mails s’actualisent afin d’afficher la date du dernier envoi, le nombre de fois auquel le sondage a été envoyé et ce, pour chaque utilisateur. Indépendamment de cette manipulation, le corps du mail pourra être défini par l’administrateur. Il pourra alors personnaliser le contenu du mail du premier envoi, celui des mails de relance, leurs sujets, et le nom de l’expéditeur à afficher. -9-
Sondage en ligne L.p. SIL CDOOAM 2010-2011 d) Mesures de sécurité L’outil informatique donne souvent lieu à de fausses manipulations. Aussi savons nous que ces erreurs ne dépendent pas nécessairement du niveau de connaissance de l’utilisateur, et peuvent être entraînées par n’importe qui, soit par manque d’inattention, soit par des gestes fortuits sur les périphériques (souris, clavier). Il est donc important de mettre en place des mesures de sécurité destinées à éviter au maximum ces désagréments qui, bien souvent, ne peuvent être résolus par le biais de l’interface. On imagine difficilement un administrateur lambda devoir manipuler la base de données de façon directe. Les premières sécurités à mettre en place sont des mesures de confirmation modale, en cas de : suppression d’une question suppression d’un sondage (qui entraînera d’ailleurs la suppression de toutes les questions rattachées) suppression d’un contact suppression d’un groupe suppression d’un administrateur Ces fenêtres dites « modales » empêchent momentanément toute interaction entre l’utilisateur et l’ensemble de l’application tant que l’utilisateur n’a pas pris une décision : supprimer ou ne pas supprimer. Elles sont donc d’un avantage double, car elles avertissent sur l’action engagée, mais elles évitent également de laisser cette action destructrice en suspens. - 10 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 La seconde mesure consiste à bloquer contextuellement l’affichage ou le contrôle d’éléments afin d’éviter de fausses manipulations dans des situations où ces éléments ne seraient ni à renseigner, ni à actionner. Les manipulations à éviter sont : l’affichage de questions, de réponses d’utilisateurs, ou de la page de modification du sondage alors qu’aucun sondage n’a été sélectionné les mouvements ascendants pour une question placée première de son niveau, et descendants pour une question placée dernière de son niveau dans la hiérarchie. la définition d’un sous-type de question ainsi que l’ajout de propositions de réponse pour une question ouverte. faire dépendre une question de l’une de ses questions descendantes, ou d’une question ouverte. la relance d’une invitation à un contact ayant déjà répondu et validé le sondage En complémentarité de ces mesures bloquantes, l’ajout d’avertissements pourra être réalisé, comme par exemple, sur la page de modification de question, l’apparition d’une bulle mettant en garde l’administrateur quant à la potentielle nécessité de mettre à jour les questions enfants de la question en cours, lors de manipulations sur les propositions. Afin d’appliquer au mieux cette stratégie, il est nécessaire d’opter pour les solutions techniques les plus judicieuses possible. - 11 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 IV) Solutions techniques et applications 1) Base de données Afin de stocker les multiples données, il faut une base de données avec la possibilité d’en exploiter le contenu directement sur le Front Office ainsi que sur le Back Office. Le modèle conceptuel issu de l’analyse contextuelle est le suivant : En jaune sont représentées les associations qui ont donné lieu à des relations dans la base de données. Il est intéressant de commenter les tables QUESTION et PROPOSITION et leurs associations. Selon ce MCD, une question peut ainsi dépendre d’aucune ou d’une seule question, et chaque question peut avoir plusieurs questions qui en dépendent. Chaque proposition doit correspondre à une seule question. L’affichage d’une question enfant dépendant de la proposition validée dans la question parent, nous avons également fait une association DEPENDANCE_PROPOSITION entre QUESTION et PROPOSITION. L’on pourra alors constater une incohérence sur cette dernière. En effet, la cardinalité 0,1 du côté de la table QUESTION devrait interdire la transformation de l’association en relation, au profit de la création d’une clé étrangère dans la table QUESTION. Cette erreur s’explique par le fait que nous avions préféré faire dépendre une question d’une autre question, plutôt que d’une proposition, lors de l’analyse initiale. - 12 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 Ce MCD ne correspond donc pas tout à fait aux critères d’analyse édictés par la méthode MERISE, mais cela n’a pas posé de problèmes du fait de la petite échelle de ce projet. Nous convenons cependant du fait qu’il serait plus judicieux de le réétudier, quitte à réadapter la partie développement. 2) Utilisation de PHP Ce projet nécessitant un affichage dynamique des données, l’utilisation du langage de programmation PHP a été choisie afin de permettre à l’application de communiquer avec la base de données MySQL. a) Interrogation de la base de données L’affichage du contenu d’une page se fait alors de manière dynamique, et un script PHP peut alors afficher une infinité de résultats différents. Il lui faut pour cela obtenir au moins un paramètre pour déterminer le contenu à afficher. Le plus souvent cela se fait au moyen d’un paramètre compris dans l’adresse URL. Par exemple dans le cas de l’affichage des informations sur une question, le script mod_question.php est appelé avec un paramètre id=n où n est un entier positif correspondant à l’identifiant d’une question dans la base de données. Le séparateur entre l’adresse du script et le paramètre est le point d’interrogation. La valeur du paramètre est récupérée grâce à la méthode GET. Les résultats de la requête peuvent être exploités de différentes manières : • mysql_fetch_array() et mysql_fetch_assoc() retournent un tableau associatif • mysql_fetch_object() retourne un objet En parallèle, PHP offre également des fonctions natives telles que des fonctions permettant l’envoi de mails simplifiés. - 13 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 b) Mailing Le mailing est composé de deux pages PHP. La première concerne l’utilisateur. Elle permet la sélection d’utilisateurs, par groupe ou individuellement, pour un sondage. Lors de l’envoi, la page utilise la technologie AJAX et interroge notre deuxième page PHP de façon transparente. Elle envoie, en utilisant la méthode GET, l’identifiant du sondage sélectionné ainsi que l’identifiant de l’utilisateur en cours. La première étape consiste ainsi à récupérer dans notre deuxième page l’identifiant du sondage ainsi que celui de l’utilisateur. L’adresse email de l’utilisateur et le nom du sondage vont alors pouvoir être récupérés. S’il s’agit d’une première invitation à ce sondage, une clé d’identification va être générée. Cette clé unique sera insérée dans le lien hypertexte du message. Dans ce cas, le message pour une première invitation située dans la table PARAMETRE est utilisé. S’il s’agit d’une relance, la dernière clé attribuée ainsi que la date du dernier envoi sont récupérées, et ce sont le message et le sujet correspondant à une relance qui sont utilisés. L’en-tête de l’email est ensuite créé. L’encodage « ISO-8859-1 » va définir le message de type texte brut. Le corps du message est alors généré. La fonction preg_replace() remplace les balises [SONDAGE], [URL] et éventuellement [DATE] par le nom du sondage, le lien hypertexte correspondant, et la date du dernier envoi dans le cas d’une relance. Étant donné qu’il s’agit d’un message de type texte brut, nous retirons les balises « » dans le message. - 14 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 Pour finir, la fonction PHP native mail() va réaliser l’envoi du message, prenant en paramètre l’adresse email du destinataire, le sujet, le message et enfin l’en-tête du mail. Si la fonction retourne vrai, le message a été correctement envoyé et nous pouvons insérer l’envoi dans la base de données. L’affichage de 1 ou de 0 indique si l’envoi a été correctement effectué. Ainsi, sur la page d’envoi, il sera notifié via une icône, le statut de l’envoi : pour son succès ou pour son échec. 3) Utilisation de JavaScript et d’AJAX a) JavaScript Pour dynamiser le contenu, l’application contient également du JavaScript. Cela est nécessaire notamment pour gérer l’affichage hiérarchique des questions. La fonction JavaScript doit pouvoir gérer l’affichage ou non des questions enfants en fonction de la proposition validée sur la question parent. Cette fonction prend deux paramètres qui sont l’identifiant de la question et l’identifiant de la proposition. Elle doit pouvoir définir la valeur de l’attribut display de manière à afficher les questions rattachées à la proposition passée en paramètre, et inversement pour le reste des questions enfants. - 15 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 Mais un problème se pose : la gestion des questions et de leurs dépendances étant totalement dynamique, il est exclu de programmer cette fonction de manière statique. Il faut donc la générer via une fonction PHP. De manière globale, cette fonction PHP va d’abord sélectionner toutes les questions, puis pour chaque question, une requête va récupérer toutes ses propositions auxquelles des questions enfants font référence. Puis, pour chaque proposition retournée, on recherche toutes les questions qui y sont rattachées. Enfin, on recherche le reste des questions qui dépendent d’une autre proposition de la question source. Parallèlement au traitement des données expliqué précédemment, une variable nommée $js est affecté de chaînes de caractères concaténées, et donnera dans sa forme finale, le résultat exposé en fin de page précédente. extrait de la fonction getJS() - 16 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 Des bibliothèques basées sur JavaScript existent afin de simplifier l’utilisation de JavaScript. C’est notamment le cas de la librairie jQuery. jQuery est utilisé sur le script mod_question.php, pour faire apparaître en fondu, une bulle d’information avant toute modification sur les propositions d’une question. La bulle concernée est présentée en page 11. b) AJAX AJAX est une solution informatique basée sur JavaScript. Elle permet d’effectuer des opérations sur la base de données et de mettre à jour une partie d’une page de façon asynchrone, c'est-à-dire sans nécessiter le rechargement complet de la page. Fonctionnement d’une requête via AJAX - 17 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 AJAX va donc présenter le conséquent avantage de la rapidité et de la discrétion, aussi bien pour de petites manipulations que pour de grosses opérations telles que la sauvegarde temporaire des questions. En effet, celle-ci étant programmée toutes les 2 minutes, il serait ennuyeux pour l’utilisateur de devoir fréquemment se replacer là où il se trouvait, ou encore d’être interrompu dans la rédaction de sa réponse. C’est pourquoi une fonction AJAX xajax_sauvegarde() est appelée, suite à un traitement JavaScript. Le JavaScript va nous permettre de mettre en place un timer défini pour être exécuté toutes les 120 000 ms, soit toutes les 2 minutes. La fonction JavaScript sauvegarde() est alors appelée et récupère, au moyen d’une autre fonction JavaScript getReponses(), tous les éléments INPUT qui sont visibles, c'est-à-dire tous les éléments dont la totalité des conteneurs DIV parents retournent un attribut display = ‘block’. La fonction getResponses() présente la particularité d’être récursive, c'est-à- dire qu’elle s’appelle elle-même dans une boucle. Une fois tous ces éléments récupérés, la fonction AJAX est appelée avec pour paramètres, l’identifiant de l’utilisateur, l’identifiant du sondage, et le tableau contenant les éléments. La fonction xajax_sauvegarde() va alors pouvoir insérer les valeurs de chaque élément dans la table REPONSE, après en avoir supprimé les anciennes valeurs correspondant au même utilisateur et au même sondage. Cette même fonction est également appelée lors de la validation finale, c’est pourquoi un paramètre optionnel booléen nommé fin déterminera la mise à jour ou non, du champ valide dans la table ENVOI. - 18 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 - 19 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 V) Problèmes et solutions Comme dans chaque projet, nous avons dû faire face à des contraintes techniques, plus ou moins faciles à résoudre. Parmi celles-ci, un problème d’encodage est intervenu sur l’insertion de propositions dans la base de données, ainsi que sur le l’insertion des réponses des utilisateurs. Sur l’ajout d’une proposition intitulée « diplômé » par exemple, la chaîne de caractères effectivement insérée dans la base de données était : Le problème semblait venir du fait que la commande setCharEncoding d’AJAX ne fonctionnait pas. Après bien des recherches, nous avons été contraints de contourner le problème en convertissant cette chaîne de caractère UTF-8 en ISO- 8859-1 avant l’insertion, grâce à la fonction PHP native utf8_decode(). Nous avons également été confrontés à un problème de filtre sur les mails envoyés à partir de l’outil d’administration. En effet, afin d’éviter les envois massifs de messages considérés comme indésirables, le serveur bloque à un certain moment les envois de mails. La seule solution que nous avons trouvée consiste à limiter le nombre d’envois par jours. Lors des tests, les envois s’élevaient parfois à plus de 30 messages par jour. - 20 -
Sondage en ligne L.p. SIL CDOOAM 2010-2011 VI) Conclusion La globalité du projet a été réalisée dans le temps imparti, soit 4 mois. Certaines fonctionnalités auraient pu être développées plus en détail ou de manière plus efficiente avec un peu plus de temps. Néanmoins, l’application disponible a été soumise à de multiples tests et simulations. Elle semble donc parfaitement assurer les fonctions pour lesquelles elle a été créée. De plus, cette application ayant été conçue de façon générique, elle pourra servir non seulement à l’étudiante pour qui elle a été développée, mais également à toute personne ou organisme désirant réaliser un sondage. Il serait possible de parfaire l’application en y ajoutant la possibilité de générer des documents PDF par sondage, et par personne pour un sondage. - 21 -
Vous pouvez aussi lire