Développement d'une application web sondage en ligne

La page est créée Mickaël Vaillant
 
CONTINUER À LIRE
Développement d'une application web sondage en ligne
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
Développement d'une application web 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 »
Développement d'une application web 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