Rapport final

Transcription

Rapport final
DEPARTEMENT INFORMATIQUE – IUT 2 GRENOBLE
Année Universitaire 2005/2006
MEMOIRE DE STAGE
CREATION DU LOGICIEL
D E G E S T IO N D E L ’E C O L E D O C T O R A L E
Centre de Recherches sur les Macromolécules Végétales
Stage du 3 avril 2006 au 12 juin 2006
Présenté par
Olivier VERSANNE
Jury
IUT :
Monsieur GEROT
IUT :
Madame CARAVEL
CERMAV :
Monsieur RIVET
Mémoire de stage
Département informatique
L o giciel d e gestio n d e l’E D C S V
2
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
REMERCIEMENTS
Je tien s tou t d ’ab ord à rem ercier M A lain R ivet p ou r m ’avoir fait con fian ce et m ’avoir
sélectionné pour ce stage ainsi que pour son aide et sa disponibilité.
Je voudrais également remercier M Jean-Daniel Dubois du service informatique pour
ses aides su r les d ifféren ts p rob lèm es in form atiq u es q u e j’ai rencontrés.
Madame Jeannine Dimarco, secrétaire d e d irection d e l’E D C S V et Monsieur Serge
Pérez, directeur du CERMAV, pour avoir pu libérer une partie de leurs temps afin de
tester le logiciel et permettre de réaliser des améliorations.
Département informatique
3
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
TABLE DES MATIÈRES
Remerciements ......................................................................................................... 3
Présentation générale ............................................................................................. 5
I.
II.
III.
P résen tation d e l’en trep rise ......................................................................... 5
Présentation du service informatique ......................................................... 5
Présentation du sujet ................................................................................... 7
A n alyse d e l’existan t ................................................................................................ 8
I.
II.
III.
IV.
V.
Ressources disponibles ................................................................................
Expression des besoins ................................................................................
Les différentes utilisations possibles ...........................................................
Outils utilisés ................................................................................................
Cahier des charges ........................................................................................
a. Modélisation de la base de données ......................................................
b. Charte graphique ...................................................................................
8
9
10
11
11
11
14
Développement du projet ....................................................................................... 17
I.
II.
III.
IV.
V.
C h oix d ’u n S ystèm e d e G estion d e B ase d e D on n ées ..................................
Créations des interfaces de saisie ................................................................
Créations des interfaces de recherche .........................................................
Créations des interfaces de consultation .....................................................
Noyau fonctionnel ........................................................................................
a. Développement en couche ......................................................................
b. Organisation des fichiers .......................................................................
c. Technologie Ajax ....................................................................................
17
18
21
22
23
23
24
25
Problèmes rencontrés et extensions ................................................................... 27
I.
II.
III.
Ajustements effectués .................................................................................. 27
Remarques des utilisateurs .......................................................................... 28
Problèmes rencontrés .................................................................................. 29
Conclusion .................................................................................................................. 31
Glossaire ..................................................................................................................... 33
Bibliographie ............................................................................................................. 34
Annexes ....................................................................................................................... 35
Département informatique
4
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
PRESENTATION GENERALE
I.
Présentation de l'entreprise
Le C.E.R.M.A.V. (Centre de Recherche sur les Macromolécules Végétales)
est une unité de recherche du CNRS (Centre National de Recherche Scientifique), axé
sur l'étude des polysaccharides, des macromolécules complexes présentes dans tout
l'environnement. Ces macromolécules peuvent être utilisées dans différents domaines
tels que la chimie, la santé ou l'alimentaire. Le CERMAV associé à l'Université Joseph
Fourrier emploie des enseignants chercheurs et des étudiants.
Le CERMAV a accentué certains aspects de la recherche :
- La connaissance fondamentale des constituants de la biomasse végétale
- Les activités biologiques des oligo-éléments et des polysaccharides
- L'étude des mécanismes mis en jeu pendant la création et la dégradation
de ces éléments par les cellules.
- L'exploitation des polysaccharides pour créer des matériaux.
Le CERMAV est un centre essentiel pour la recherche européenne dans cette
branche car il est le plus important centre d'étude sur les glucides et les
polysaccharides.
Le CERMAV a défini une répartition en services spécialisés afin d'optimiser
l'intégration rapide des chercheurs étrangers et des étudiants.
Département informatique
5
Mémoire de stage
II.
L o giciel d e gestio n d e l’E D C S V
Présentation du service informatique
Le parc informatique du CERMAV est constitué d'une centaine de machines
(PC ou Macintosh) ainsi que d'une vingtaine de machines SGI utilisant Irix, système
d'exploitation basé sur Unix.
Deux ingénieurs sont en charge de ce service qui a un rôle primordial dans la
gestion des ressources interservices, ainsi que dans le renouvellement et la création
des applications utiles aux chercheurs. Le laboratoire n'est cependant pas limité à ses
propres ressources car il a aussi accès à celle du CECIC (Centre d'Expérimentation et
de Calcul Intensif en Chimie).
Activités de développement
- Elaboration de bases de données structurelles et expérimentales.
- Développement de logiciels scientifiques (Nanogoldmaker).
A ctivités d ’ad m in istratio n et d e service
- Administration des ressources informatiques (20 stations de travail, 150
micro-ordinateurs).
- Administration du réseau (réseau Ethernet 100 MB autonome) en prenant en
compte les aspects de sécurité.
- Administrateurs des différents serveurs (messagerie, Web, sauvegardes).
- Support technique auprès des utilisateurs.
Activités de gestion
- Mise en place du Système d'Organisation de l'Unité de Recherche CERMAV
d an s le cad re d ’u n e d ém arch e q u alité IS O 9 0 0 1.
- Développement d'outils de laboratoire (sites Web, gestion du personnel,
gestion de la production scientifique).
Département informatique
6
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
III. Présentation du sujet
Le but du stage est de réaliser une base de données pouvant gérer les étudiants
et en seign an ts d e l’E cole D octorale d e C h im ie et S cien ces d u V ivan t d e l’U n iversité
Joseph Fourier. Les données seront saisies et interrogeables via une interface
disponible sur l'intranet. La création de cette base de données permettra une saisie
d ’in form ation sim p le et servira à la génération de statistiques.
Département informatique
7
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
A N A L Y S E D E L ’E X IS T A N T
Avant toutes choses, il est nécessaire de connaître les moyens et les données
disponibles au sein du service et de bien comprendre la volonté des futurs
utilisateurs. Il faut également évaluer leurs attentes et leurs besoins.
I.
Les ressources disponibles
L’école regrou p e p lu sieu rs d om ain es d ’ap p lication s rép artis p ar u n ités.
Chacune de ses unités est composée de plusieurs équipes de chercheurs travaillant
sur plusieurs thèmes. Des thésards peuvent travailler, en collaboration avec les
chercheurs afin de valider leurs thèses.
L es in form ation s su r l’en sem b le d es th ésard s son t ren trées d an s u n tab leu r
(Excel), avec quelques informations de base sur la personne comportant le nom,
p rén om … et d es in form ation s p lu s éten d u es com m e le su jet d e th èse, le n om b re d e
publication, l’u n iversité fréq u en tée, le financement ou les dates de début et de
soutenance de la thèse.
Les informations concernant les chercheurs (ou chercheurs-enseignants) sont
inscrites dans un second fichier et sont aussi exhaustives que les précédentes. Elles
comportent les données personnelles telles que le nom, prénom, date de naissance,
télép h on e… ain si q u e les in form ation s su r le travail d e la p erson n e com m e le n u m éro
d e la section , l’étab lissem en t, le grad e, l’organ ism e et l’éq u ip e à laq u elle celu i-ci est
rattaché.
Département informatique
8
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
La liste des équipes est disponible dans le même fichier que celui des
chercheurs. Le document est trié par équipe puis par chercheur.
Ces différents fichiers sont surtout utilisés pour la saisie des informations car
lorsq u ’il s’agit d ’en retirer d es statistiq u es, p ar exem p le su r le n om b re d e d octoran ts
p résen ts d an s l’étab lissem en t su r u n e certain e p ériod e, leu r u tilisation d evien t très
vite fastidieuse. Les données ne sont donc pas réellement exploitées.
II.
Expression des besoins
Le directeur du CERMAV souhaite, par exemple, pouvoir éditer des
statistiq u es facilem en t su r le n om b re d e p erson n es p résen tes d an s l’école à u n in stan t
T ou entre deux dates distinctes. Toutes ces statistiques servent de support lors des
assem b lées gén érales et p erm etten t d 'étab lir les p erform an ces d e l’école p ou r les
années suivantes. Face aux limites des fichiers existants, le directeur a demandé la
réalisation d ’u n e b ase d e d on n ées p lu s facilem en t u tilisab le p ou r étab lir divers
documents.
L ’ap p lication sera u tilisée p ar la secrétaire d e d irection . C ette p erson n e u tilise
l’in form atiq u e tou s les jou rs et n ’est p as réticen te à so n u tilisation .
Il est au ssi d em an d é d e réco lter p lu s d ’in form ation s su r ch aq u e doctorant
entrant et sortan t d e l’école afin d ’avoir un meilleur suivi de ceux-ci lors de leur
p assage à l’école ain si q u ’à la su ite d e leu r th èse.
Toutes ces données pourront être saisies via des formulaires directement par la
secrétaire de direction. U n m in im u m d ’in fo rmations sera obligatoire tel que le nom,
le p rén om , l’ad resse et les d ates d ’arrivée p ou r u n d octoran t p ar exem p le.
Tous les éléments de la base de données devront pouvoir être mis à jour car les
informations peuvent ne pas être disponibles dès la saisie ou évoluer par la suite.
Département informatique
9
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Les doctorants doivent rester enregistrés après leur départ afin d ’étab lir les
statistiques post-thèses.
Les fichiers Excel existan ts con tien n en t p lu s d ’u n e cin q cen tain e d ’élém en ts
(unité, équipe, chercheurs, doctorants) différents avec des informations plus ou
m oin s p récises p ou r ch acu n d ’eu x. Toutes ces données devront être récupérées et
insérées dans la nouvelle base de données. Aucune information ne devra être perdue.
III. Les différentes utilisations possibles
L ’ap p lication d evra in tégrée les cas d ’u tilisation su ivan ts :
L ’ap p lication p ossèd e u n e vin gtain e d ’op ération s réalisab les en grande partie
par la secrétaire de direction. Les visiteurs et le directeur ayant des fonctionnalités
restreintes.
Département informatique
10
Mémoire de stage
IV.
L o giciel d e gestio n d e l’E D C S V
Outils utilisés
L ’en trep rise n ’a p as d em an d é d ’u tiliser de logiciel spécifique pour le
développement du projet, laissant libre de choisir ses propres outils.
Les outils utilisés pour développer le projet sont WAMP, un serveur local pour
interpréter et exécuter du code PHP de dernière génération, et intégrant la dernière
version de MySQL. WAMP est un logiciel libre disponible sur sourceforge.net.
L ’u tilitaire p h p M yA d m in , livré avec W A M P , est u tilisé afin d ’accéd er à la b ase
de données via une interface plus co n viviale q u ’u n in terp réteu r d e com m an d es.
L ’écritu re d es p ages w eb (P H P , C S S , JavaScript, HTML) est réalisée avec le
freeware PSPad Editor, un éditeur multi-code, intégrant la coloration syntaxique
ain si q u ’u n e très b on n e ergon om ie.
Les tests des pages sont réalisés avec les navigateurs Microsoft Internet
Explorer 6.0, Microsoft Internet Explorer 7.0, Mozilla Firefox 1.5 et Opera 9. Ces
navigateurs sont les plus utilisés et connus dans le monde. Netscape a été aussi testé,
mais celui-ci utilise le même moteur que Mozilla Firefox.
V.
Cahier des charges
a. Modélisation de la base de données
T ou t d ’ab ord , il est n écessaire d e d éfin ir tou s les élém en ts com p osan t
l’ap p lication d e l’E D C S V .
- L ’école est com p osée d e p lu sieu rs u n ités ou lab oratoire. C es grandes
structures gèrent séparément leurs propres équipes de chercheurs et de doctorants.
- Les équipes, dépendant des unités regroupent un ensemble de chercheurs.
- Les chercheurs (chercheurs-enseignants), appartiennent à une seule équipe
et peuvent être resp on sab les d ’u n ou p lu sieu rs d octoran ts.
- L es d o ctoran ts so n t les étu d ian ts d e l’école, ils so n t asso ciés à d es ch erch eu rs.
Chacun de ces grands groupes est rattaché à des informations qui leurs sont
propres. Pour un doctorant son nombre de thèse, son d ern ier d ip lôm e…
Département informatique
11
Mémoire de stage
Département informatique
L o giciel d e gestio n d e l’E D C S V
12
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
On peut constater sur le diagramme précédent « entité-relation » q u ’il au rait
été p lu s u n iversitaire d e gén éraliser les élém en ts n om , p rén om , sexe… p résen ts d an s
toutes les grandes entités en créant une entité personne.
L e m od èle ad op té co n tien t d e la red o n d an ce d ’in form ation , u n resp on sab le d ’éq u ip e
est un chercheur, et ainsi ses informations sont en doubles dans la base de données et
les modifications devront être faites deux fois. Cette solution ne respecte donc pas la
troisième forme normale.
L es m od èles u n iversitaires, q u i on t p ou rtan t été p rop osés, n ’on t p as été ch oisis p ar
l’en trep rise q u i a p référé gard er la red on d an ce d ’in form ation afin d ’avoir u n e b ase d e
données plus facile à lire et à débugger.
Département informatique
13
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
b. Charte graphique
Un soin tout particulier a été apporté à la mise en page des formulaires ainsi
q u ’à tou tes les p ages P H P . P ou r cela u n e ch arte grap h iq u e a été créée. A in si tou tes les
pages sont réalisées sur le même schéma visuel. Les couleurs utilisées ne sont pas
agressives et se fon d en t avec les logos d e l’E D C S V . L es p ages so n t sob res avec ju ste
les in form ation s n écessaires. L e logo d e l’E D C S V est tou jou rs visib le au d essu s d u
m en u et d on n e u n accès d irect su r la p age d ’accu eil. T ou tes les p ages son t
compatibles avec les normes internationales (XHTML et CSS) que doivent respecter
les n avigateu rs In tern et. A in si l’affich age d u site fon ction n era correctem en t su r tou s
les navigateurs.
L ’écran est d ivisé en q u atre gran d es p arties, l’en -tête (1), le menu (2), la partie
principale (3) et le pied de page (4).
L a p artie su p érieu re (1) affich e le logo et la b an n ière d e l’école. L e logo est
p ou rvu d ’u n lien p erm ettan t d e reven ir à l’accu eil d u site.
Département informatique
14
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
La
partie
gauche
(2)
représente
le
menu,
permettant, grâce à une dénomination explicite et
toujours visible, de pouvoir changer de rubrique à tout
moment. Les rubriques sont dynamiques et varient en
fon ction d e l’u tilisateu r, si celu i-ci est authentifié ou non.
A fin d ’au gm en ter l’ergon om ie d u m en u , u n scrip t
en JavaScript a été réalisé. L ’u tilisateu r sélection n e en
premier temps son action en un clic ce qui lui affiche,
d an s u n d eu xièm e tem p s, l’élém en t au q u el il sou h aite
ap p liq u er l’action .
 Un simple clic sur « Ajouter » 
La partie centrale (3), à droite du menu, dans laquelle les informations
principales sont affichées.
Dans le but de garder une charte graphique cohérente, la présentation de
toutes les pages est la même.
Département informatique
15
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
En haut de couleur orange et centrer, le nom du logiciel.
E n d essou s en jau n e l’action en cou rs d ’exécu tion .
L es m essages d ’erreu rs ou m essages im p ortan ts son t en gras et d e cou leu r
rouge juste avant les informations principales.
Ensuite viens un éventuel bref paragraphe descriptif ou information.
E t en d ern ier lieu l’esp ace in form ation où l’u tilisateu r p eu t rem p lir d es
données ou effectuer ses recherches.
L e p ied d e p age (4 ), d an s leq u el se trou ve le logo d e l’U n iversité Josep h
F ou rier, p ou rvu d ’u n lien vers le site w eb officiel. A sa droite, se trouvent les éléments
an n o n çan t les d roits d e cop ie avec l’an n ée d e création ain si q u e l’étab lissem en t
propriétaire.
U n lien vers l’ad m in istrateu r d u site est d isp on ib le su r le texte « Administration et
mise à jour ».
Et enfin, au même niveau q u e le b as d u logo d e l’U JF , la version d u lo giciel est
indiquée ainsi que la dernière mise à jour de la page consultée.
Les informations sont disponibles en trois clics.
C ette ch arte grap h iq u e d on n e p lu s d e con vivialité et p erm et à l’u tilisateu r d e ne pas
être dépaysé à chaque changement de page.
Département informatique
16
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
DEVELOPPEMENT DU PROJET
I.
C h o ix d ’u n S ystèm e d e G estio n d e B ase d e D o n n ées
Une base de données est un ensemble d'informations structurées et organisées
sous forme de fichiers. Comme tout ensemble d'informations peut être considéré
comme une base de données, il apparaît préférable d'en définir l'outil de base : le
système de gestion de base de données (SGBD). Parmi les SGBD (hiérarchique,
ob jets,… ), les S G B D relation n els son t les p lu s u tilisés. L es données sont structurées
en tables. Le SQL (Structured Query Language) est un langage de définition et de
manipulation des bases de données relationnelles utilisées par les SGBD.
Le choix du SGBD s'est porté sur MySQL car c'est un logiciel du domaine
public, sous licence GPL qui est disponible sous différents systèmes d ’exp loitation
(U n ix, W in d ow s,… ). A fin d e p erm ettre u n accès d yn am iq u e au x b ases d e d on n ées,
tou te l’in terface d ’u tilisation est cod ée en lan gage P H P . L e lan gage P H P a été ch oisi
car il a de nombreux atouts (code directement intégré aux pages HTML, richesse des
fon ction s, facilité d e con n exion à la b ase S Q L , etc.). C ’est d on c u n e solu tion id éale
pour le développement de sites Web dynamiques.
Département informatique
17
Mémoire de stage
II.
L o giciel d e gestio n d e l’E D C S V
Créations des interfaces de saisie
La saisie des informations est faite grâce aux formulaires HTML. Les
form u laires son t u tilisés p ou r tou s les éch an ges d e l’u tilisateu r vers le logiciel. Chacun
des formulaires sont différents et peuvent contenir certains champs obligatoires
comme le nom, le prénom, le sexe, la date et le lieu de naissance pour un doctorant ou
l’in titu lé p ou r u n e u n ité… Mais moins nombreux sont les champs obligatoires, plus
facile sera la saisie, les informations obligatoires sont donc uniquement les champs
permettant de retrou ver l’élém en t lors d ’u n e rech erch e. L es ch am p s laissés vid es lors
d e l’in sertion d ’u n élém en t p ou rron t être m od ifiés lors d ’u n e éd ition .
A fin d ’avoir u n e ergon om ie m axim ale, il a été créé u n e classe gén ériq u e (voir
en an n exe) p erm ettan t d e gén érer l’ensemble des formulaires. Cette classe analyse le
con ten u d ’u n e tab le d e la b ase d e d on n ées et récu p ère q u elq u es d on n ées co m m e p ar
exemple la taille des champs de texte. Il suffit ensuite de paramétrer les divers labels,
type, actions, champs obligatoires et la classe générera un formulaire, prêt à la saisie
p ou r l’u tilisateu r, resp ectan t les d ern ières n orm es X H T M L et C S S .
C ette m éth od e com p orte én orm ém en t d ’avan tages. En effet, si un bug ou une
faille est découvert dans un formulaire, il suffira de modifier le code de cette classe
p ou r corriger la faille su r l’en sem b le d es form u laires p résen t d an s le site.
L ’u tilisation d e cod e gén ériq u e p erm et au ssi d e réd u ire les erreu rs d e frap p es,
les erreu rs d e traitem en ts… C ’est d on c u n gain d e tem p s p ou r le créateu r du logiciel et
aussi un gain d e sécu rité p ou r l’u tilisateu r, com m e en seign e l’IU T .
La classe gère actuellement plusieurs catégories de champs :
- les champs normaux, simple espace de
texte d ’u n e taille lim itée p ar celle in clu se d an s la
base de données ou spécifiée par le créateur du formulaire.
- les ch am p s cach és, u n e variab le in visib le et in accessib le à l’u tilisateu r d on t la
valeur est définie par le créateur du site.
- les m ots d e p asse, la saisie d ’u n m ot d e
passe ne doit pas se faire en « clair » (caractères visibles), les caractères sont donc
remplacés par des étoiles.
- les listes déroulantes, un menu déroulant avec une
multitude de choix.
Département informatique
18
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
- les zones de texte, champs permettant de
rentrer du texte sur plusieurs lignes, utilisables pour
une adresse par exemple.
Les précédents champs sont des champs classiques, la classe permet de gérer
en plus de ces champs :
- les d ates, la saisie d ’u n e d ate est générique, divisé dans
trois
champs
sous
la
forme
JJ/MM/AAAA
(pour
Jou r/M ois/A n n ée), cela p erm et d ’éviter les erreurs de saisie. La classe se charge de
vérifier l’existen ce d e la d ate.
- les listes déroulantes avec ajout, utilisent le même principe que les listes
déroulantes classiques, mais permettent de
spécifier un champ « autre » (1) pour ajouter
une valeur non présente dans la liste (2). Lors
d e l’ajou t, cette valeu r sera in tégrée au x
valeu rs d e la liste, ren d an t ain si la liste d érou lan te d yn am iq u e. L a su p p ression d ’u n
élément de la liste est réalisée automatiquement si plus aucun élém en t n ’est lié à
celui-ci.
D an s les zon es d e saisie, l’ergon om ie est am éliorée d e p lu sieu rs m an ières :
Un champ obligatoire est marqué à côté de son libellé par une
étoile d e cou leu r rou ge. L ’u tilisateu r n e p eu t pas se perdre en
remplissant le formulaire, la ligne où est positionné le curseur
d e la sou ris est d ’u n e cou leu r p lu s visib le.
C es d étails au gm en ten t sign ificativem en t l’efficacité d e l’u tilisateu r. L es form u laires
com p lexes son t d ivisés en p lu sieu rs sou s p arties afin d ’ob ten ir u n e m eilleu re lisibilité.
Après avoir conçu cette classe, celle-ci a été m o d ifiée afin d ’in tégrer la
persistance des informations saisies dans la base de données ainsi que la mise à jour.
Cette grande classe vérifie donc en premier lieu que tous les éléments
obligatoires soient saisis. Ce test est déjà
réalisé avan t q u e l’u tilisateu r en voie ses
informations
grâce
au
JavaScript,
mais
l’u tilisateu r p eu t d ésactiver celu i-ci dans son
navigateur, ou son navigateur peut ne pas
Département informatique
19
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
comprendre le JavaScript (navigateur trop ancien), la classe vérifie donc les données
récupérées par le serveur.
Ce test passé, elle vérifie ensuite la cohérence des valeurs
saisies d an s les listes d érou lan tes et ajou te, si l’u tilisateu r a ren tré
une valeur inconnue et que le créateur du formulaire a spécifié
cette possibilité, la valeur dans la table correspondante, mettant
ainsi à jour la liste déroulante pour une prochaine utilisation.
Une fois tous les tests réalisés, la classe ajoutera ou modifiera l’élém en t d an s la
table correspondante et renverra une erreur, interprétée par le programme principal,
si le traitement n ’a p u se faire.
Ainsi, le travail à réaliser par la secrétaire est toujours rigoureusement
identique et ses habitudes ne seront pas changées.
E xem p le d ’u n form u la ire d e sa isie.
Département informatique
20
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
III. Création des interfaces de recherche
Lorsq u e l’u tilisateu r veu t faire u n e mise à jour ou une suppression, celui-ci
doit avant effectuer une recherche afin de trouver le bon élément. La sélection des
éléments est donc réalisée via un formulaire de recherche assisté.
C e form u laire a la p articu larité d e gu id er l’u tilisateu r tout au long de sa saisie.
En effet, à chaque caractère tapé et après un laps de temps très court d ’in activité (10 0
ms), une requête de « pré-recherche » est réalisée dans la base de données afin
d ’affich er les résu ltats corresp on d an ts.
L ’u tilisateu r p eu t s’arrêter à la liste d érou lan te et effectu er son ch oix p arm i les
résu ltats affich és ou b ien ap p rofon d ir sa rech erch e p ou r n ’avoir q u ’à sim p lem en t
appuyer su r la tou ch e E n trée p ou r p asser à l’étap e d e m o d ification .
La secrétaire ne connait p as forcém en t l’orth ograp h e ou le n om exact d ’u n
élém en t. L a rech erch e a d o n c été ad ap tée afin d ’ob ten ir u n e ergon om ie m axim ale. Il
est ain si p ossib le d ’u tiliser u n caractère « joker », permettant de remplacer une partie
d ’u n m ot p ar n ’im p orte q u els caractères. L e caractère « joker » utilisé est le %.
Si aucun élément ne peut être trouvé, dans ce cas le moteur de recherche
l’in d iq u e à l’u tilisateu r.
Département informatique
21
Mémoire de stage
IV.
L o giciel d e gestio n d e l’E D C S V
Créations des interfaces de consultation
Les interfaces de consultation ont été réalisées de manière générique en
modifiant la couche gérant les formulaires.
Cette solution a été choisie car la classe traitait déjà les données et il était ainsi
inutile de réaliser d ’én orm es m od ification s d an s le seu l b u t d e traiter les d o n n ées d e
la base.
N ’im p orte q u el u tilisateu r p eu t effectu er u n e rech erch e su r u n
élém en t d u site. L e form u laire d e rech erch e est u tilisé afin d ’effectu er
la pré-recherche, et après sélection d e l’élém en t, l’u tilisateu r voit les
in form ation s q u ’il d ésirait ob ten ir.
Pour obtenir une ergonomie maximale, certaines améliorations ont été
ajoutées lors d e l’affich age d es in form ation s :
-
lorsque le contenu est un email, un lien est automatiquement généré afin
de pouvoir envoyer directement un email au destinataire.
-
les espaces multi-lign es u tilisen t b eau cou p d e p lace lors d e l’affich age, la
classe déplace donc automatiquement ces données
dans une ligne
complète, pour une meilleure lisibilité.
-
lorsqu'un champ est en rapport avec un autre élément, un simple clic suffit
p ou r accéd er au x in form ation s d e l’élém en t.
(un clic )
-
lorsq u 'u n ch am p n ’est p as rem p li, celu i-ci n ’est p as affich é, cela p erm et
d ’au gm en ter la rap id ité d e lectu re. S ’il s’agit d ’u n e sou s ru b riq u e, u n
m essage p récise l’ab sen ce d ’in form ation .
Département informatique
22
Mémoire de stage
V.
L o giciel d e gestio n d e l’E D C S V
Noyau fonctionnel
a. Développement en couche
T ou s les élém en ts d ’in terfaces vu s p récéd em m en t com m u n iq u en t avec la b ase
d e d on n ées, le n oyau cen tral d u site. L es action s d e l’u tilisateu r p assen t p ar p lu sieu rs
barrières, que nous pouvons appeler couche. Chaque couche permet un traitement de
l’in form ation
(en tran te et sortan te) ce q u i a p ou r effet d e réd u ire les failles d e
sécurité du site et de simplifier le développement pour les administrateurs.
L ’u tilisateu r, avan t d e p ou voir accéd er à u n e d on n ée u tilise l’in terface d u site.
L ’in terface d u site est l’en sem b le d es scrip ts q u i s’exécu ten t su r la m ach in e d e
l’u tilisateu r. O n p eu t trou ver d an s cette p artie les traitem en ts en JavaScript
permettant de vérifier les champs incomplets.
La conception de chaque couche a été réalisée sous forme de classe, le
programme principal utilisant généralement la couche la plus haute.
L a cou ch e d e gestion d es saisies et d e l’affich age est cette classe de plus haut
niveau que le programmeur utilise pour gérer les données contenues dans la base de
données. Cette partie in terp rète les d on n ées d e l’u tilisateu r, gère les affichages et
lance les procédures pour insérer, ou modifier un élément dans la base de données.
Cette classe est regroupée dans un fichier ne comportant que celle-ci comme
en seign é à l’IU T . E lle est com p osée d e tren te trois m éth od es, p rivées ou p u b liq u es,
gérant l’in terface X H T M L et la gestion d es d o n n ées d e la b ase.
Toutes les spécifications des méthodes ainsi que certains contenus sont
disponibles dans les annexes.
Département informatique
23
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Les informations envoyées par cette classe subissent une transformation afin
d ’éviter d es failles d e sécu rité d an s les cou ch es in férieu res.
Une fois les données transformées, cette première couche utilise une couche
inférieure qui permet de gérer très simplement les « objets ». La couche gérant les
objets (voir la spécification des treize méthodes en annexe) sert uniquement pour
l’ajou t, la su ppression ainsi que la modification des in stan ces d ’objets dans la base de
d on n ées. A u cu n e vérification n ’est réalisée à so n n iveau .
Cette couche intermédiaire utilise, à son tour, une sous-couche (voir les
spécifications des huit méthodes en annexe) qui gère u n iq u em en t l’en voi d e req u êtes
SQL dans la base de données.
b. Organisation des fichiers
L e site est com p osé d ’u n e cen tain e d e fich iers P H P , d ’u n fich ier JavaS crip t,
plusieurs dossiers, ainsi que des images et un fichier CSS.
Le site est structuré de manière simple avec une méthode de classement précise.
C om m e il est très d ifficile d e lire le con ten u d ’u n fich ier avec d es m u ltitu d es d e
lan gages (P H P , H T M L , JavaS crip t, M yS Q L … ), l’arb orescen ce d es fich iers a été ain si
construite :
A la racine du site « / » se trouve les pages de traitement
PHP (voir un exemple en annexe).
- Un dossier « /ajax » dans lequel se trouve les pages
appelées par les scripts Ajax.
- Un dossier « /design » dans lequel se trouve les éléments
décoratifs du site (images, feuilles d e style… ).
- « /js » dans lequel se trouve les fonctions JavaScript.
- Le dossier « /php » où toutes les classes, fonctions PHP
ou « packages » sont répertoriés.
- « /pages », contient tout les contenus HTML pour
l'affichage.
- des dossiers supplémentaires comme « /admin » pour
mieux organiser les fichiers du site.
Département informatique
24
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
c. Technologie Ajax
Pour réaliser le « moteur de recherche instantané », utilisé pour la recherche
d ’élém en t, il était im p en sab le d ’u tiliser la p rocéd u re h ab itu elle d u clien t/serveu r.
Le procédé habituel fonctionne ainsi :
Le client accède à une page, générée par le serveur, afin de remplir un
ensemble de champs composant un formulaire (page 1). Une fois le formulaire
rem p li, l’u tilisateu r en voie ces informations au serveur qui traite les données et
affiche une nouvelle page (page 2) en fonction des données entrées.
Cette solution utilise deux pages distinctes. Pour réaliser le moteur de
rech erch e in stan tan é avec ce p rocéd é, il fau d rait q u ’à ch aq u e caractère tapé,
l’in form ation soit envoyé au serveur et ainsi toute la page serait rafraichie afin
d ’affich er les résu ltats associés au caractère tapé.
P ou r rech erch er O livier, il fau d rait d on c sep t actu alisation s d e p age ce q u i n ’est p as
concevable.
A jax est le com b in é d ’u tilisation d u lan gage JavaS crip t (s’exécu tan t su r
l’ord in ateu r d e l’u tilisateu r) et P H P (s’exécu tan t su r le serveu r d e l’en trep rise). Il
permet de réaliser un traitement PHP sur le serveur et de récupérer les données en
Département informatique
25
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
JavaScript du coté du client. Tous les traitements son t réalisés san s q u e l’u tilisateu r
ait besoin de rafraichir sa page.
Le procédé Ajax fonctionne ainsi :
L e m eilleu r exem p le d ’u tilisation su r le site q u e l’on p u isse citer est celu i du
moteur de recherche. La demande de page est celle du moteur de recherche. Le
serveur renvoie au client le contenu de la page 1. L ’u tilisateu r rem p li alors le ch am p
d e rech erch e et à ch aq u e fois q u ’il saisie u n e lettre (ce q u i corresp on d à l’évén em en t),
un script JavaScript est exécuté, appelant une page web PHP qui interroge la base de
d on n ées afin d e savoir s’il existe u n ou p lu sieu rs élém en ts corresp on d an t au x lettres
tapées. Le script PHP renvoie au JavaScript les données et ce dernier se charge
d’actualiser une partie des d on n ées H T M L su r la p age d e l’u tilisateu r (page 1). Ainsi,
l’u tilisateu r n ’a p as eu b esoin d e rafraichir ou de changer de page pour avoir ces
informations.
S an s la tech n ologie A jax, il n ’au rait p as été p ossib le d e réaliser u n e ergonomie
au ssi p ou ssée p ou r l’u tilisateu r.
Département informatique
26
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
PROBLEMES RENCONTRES ET EXTENSIONS
I.
Ajustements effectués
Pendant la quatrième semaine, une réunion a eu lieu, avec le maître de stage,
afin d e m ettre au p oin t l’état d ’avan cement du projet et pour faire des critiques. Un
compte rendu de cette réunion est disponible en annexe.
Un ajustement a du être réalisé concernant la sélection des éléments. Avant la
réunion, la sélection pouvait être effectuée via deux méthodes : la recherche intuitive
actuelle et une sélection par ciblage. La sélection par ciblage permettait de trouver
son élém en t en p artan t d u ch oix d e l’u n ité, q u i p rop osait en su ite sa liste d ’éq u ip e
correspondante. Après avoir choisit une équipe on pouvait avoir la liste des
chercheurs et après la sélection des chercheurs, les doctorants qui lui sont associés.
Cette méthode a été abandonnée car le critère le plus important de sélection
est l’in titu lé ou le n om d e l’élém en t. L a m éth od e arb orescen te su rch argeait au ssi les
pages et pouvait rendre plus com p liq u é d ’u tilisation , elle a d o n c été su p p rim ée.
Département informatique
27
Mémoire de stage
II.
L o giciel d e gestio n d e l’E D C S V
Remarques des utilisateurs
Lors de la sixième semaine une réunion a eu lieu pour présenter l’in terface à la
secrétaire de direction d e l’école, l’u tilisatrice et au directeur du CERMAV. Un compte
rendu de cette réunion est disponible en annexe.
C ertain s ch am p s q u i n ’étaien t p as assez exp licites d an s leu r in titu lé on t d u être
modifiés ou complétés tel que le champ « établissement » (afin d e p réciser q u ’il s’agit
d u lieu d ’exercice).
La secrétaire a au ssi d em an d é l’ajou t d e ch am p s su p p lém en taires q u i n ’avaien t
p as été p en sé lors d e la m o d élisation d e la b ase d e d on n ées, com m e le gen re d ’u n
chercheur ou les numéros de fax pour chaque chercheur.
Elle a désiré que le menu soit trié en fonction des éléments
importants et ainsi que la partie « Section » soit déplacée dans le
classement du menu et mis à la fin.
P en d an t la réu n ion u n p rob lèm e s’est p osé con cern an t les fu sion s d es
laboratoires. Chaque année des laboratoires peuvent fusionner et réaliser cette fusion
san s sau vegard er les an cien s lab oratoires n ’est p as p ossib le car le m in istère d e la
recherche peut demander des statistiques sur quatre ou cinq années précédent celle
d e la fu sion . Il est d o n c im p ortan t q u e la secrétaire p u isse accéd er à l’état des
anciennes unités avant une fusion.
Les responsables des doctorants doivent être identifiés comme étant soit des
directeurs de thèse, soit des co-enseignants, avant au cu n e d ifféren ce n ’était faite.
Département informatique
28
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
III. Problèmes rencontrés
Lors de la saisie des informations sur un doctorant, celui-ci devrait être assigné
immédiatement à un chercheur enseignant responsable, or la conception de la base
d e d on n ées ob lige l’in sertion d ’u n d octoran t avan t d e p ou voir ajou ter le lien d e
responsabilité entre le chercheur et ce doctorant. Il doit donc déjà exister dans la base
avan t d e p ou voir s’associer.
L a solu tion reten u e a d on c été d ’ajou ter le d octoran t, dans un premier temps et
ju ste ap rès le form u laire d ’ajou t, d e ren voyer l’u tilisateu r su r la p age p ou r lier le
doctorant à un chercheur enseignant.
S i le lien n ’est p as fait im m éd iatem en t, il p ou rra être fait en su ite en u tilisan t le m en u .
C ette solu tion n e colle p as p arfaitem en t au sch ém a relation n el m ais s’en rap p roch e le
plus possible.
Département informatique
29
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Les laboratoires et éq u ip es p eu ven t, d ’u n e an n ée su r l’au tre fusionner. Cela
n ’avait p as été p en sé lors d e la m o d élisation d e la b ase d e d on n ées, et c’est la
secrétaire d e d irection q u i a p récisé ce p rob lèm e. L a b ase n e gère q u e l’état actu el d e
l’école d octorale, ain si réaliser les statistiques sur les anciens laboratoires n ’est p as
possible et serait trop com p liq u é à m ettre en œ u vre.
Cependant, la prise en charge des fusions est obligatoire. Il ne faudrait pas que
la secrétaire ait à rentrer une nouvelle équipe ou unité et mette à jour tous les
éléments qui lui sont liés. Un formulaire a donc été ajouté afin de réaliser les fusions
automatiquement.
La secrétaire commence par rentrer les informations sur la nouvelle unité ou
équipe, et dans un deuxième temps, choisit les équipes ou unité à fusionner avec la
nouvelle.
Département informatique
30
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
CONCLUSION
M on stage avait p ou r b u t la réalisation d ’u n e b ase d e d on n ées co n ten an t tou tes les
informations relatives à l’E cole D octorale ainsi que la réalisation de son interface de
dialogue. Pour réaliser ce projet il a été nécessaire de bien connaître les moyens
informatiques ainsi que les données utilisables et surtout les attentes des futurs
utilisateurs afin de débuter le projet sur de bonnes bases.
L ’an alyse d e l’existan t a p erm is d e se rendre compte que toutes les données étaient
disponibles dans des fichiers Excel. Ces fichiers étant limités au niveau du traitement
des informations écrites, le directeur du CERMAV a d em an d é la réalisation d ’u n e
base de données plus facile à utiliser notam m en t p ou r l’éd ition d e statistiq u es.
L ’in terface d e la b ase d e d o n n ées p erm et la saisie d es éléments nécessaires à la
gestion d e l’école (ch erch eu rs, d octoran ts, unités, équipes). La modification des
informations déjà saisies est aussi possible. Toutes les fonctionnalités de cette
nouvelle base répondent aux attentes demandées par les utilisateurs et ils ont donc
été satisfaits.
U n soin tou t p articu lier a été ap p orté à l’in terface p ou r q u ’elle soit con viviale, claire et
très ergonomique.
Tout au long des 10 semaines des ajustements techniques et esthétiques ont été
réalisés en tenant compte des souhaits et des remarques des futurs utilisateurs.
Ce stage m'a permis de réutiliser toutes les connaissances théoriques de première
année sur les bases de données ain si q u e les m éth od es d ’an alyse et d e co n cep tion d e
projet de deuxième année.
Je m ’ap erçois q u e, d an s la p ratiq u e, tou tes les in form ation s n e son t p as d isp on ib les
immédiatement comme lors des exercices à l’IU T où toutes les informations sont bien
formatées et réunies dans un seul document. Je me suis donc adapté au monde de
l'en trep rise. J’ai p ris con scien ce q u e p ou r b ien exp liq u er au x u tilisateu rs il fau t avoir
u n e gran d e q u alité d ’écou te, d e la p atien ce, et d e la clarté lors d es d ém o n stration s
pour b ien com p ren d re ce q u ’ils d ésiren t.
Département informatique
31
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Je m e su is ap erçu q u e les exigen ces d em an d ées à l’IU T et celles d em an d ées p ar
l’en trep rise son t d ifféren tes. L'IUT suit la théorie à la lettre alors que l’en trep rise
adapte la théorie à la pratique, au temps imparti et aux demandes des utilisateurs.
J’ai ap p récié d ’être d an s le concret d ’u n e en trep rise et d e voir q u e m on travail
rép on d ait à u n b esoin , en com p araison au x travau x p ratiq u es d e l’IU T ou la
réalisation reste ab straite. J’ai p u voir com m en t fon ction n e u n service informatique
dans une entreprise et constater que ce service est sollicité pour des travaux très
différentes (réparation de matériel, mise à jour de logiciels, réalisation de nouveaux
projets, achat de nouveaux m atériels,… ). J’ai ap p rofon d i plusieurs langages
informatiques comme le PHP, vu en cours, le JavaScript, Ajax et le HTML.
Ce stage n'a pas été vraiment une découverte du monde du travail en général, mais
plutôt la découverte d u rôle d e l’in form atiq u e d an s l’en trep rise. Je m e su is ren d u
com p te q u e tou t en étan t u n travail d ’éq u ip e, il y a u n e gran d e p artie d u travail
in d ivid u elle. C e stage m ’a p erm is de constater que le développement de bases de
données et de site web était vraim en t très in téressan t et q u ’il serait p ossib le q u e j’en
fasse mon futur métier.
Département informatique
32
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
GLOSSAIRE
Ajax
Asynchronous JavaScript And XML (« XML et JavaScript asynchrones
») est un acronyme désignant une méthode informatique de
développement d'applications Web.
CSS
Le langage CSS (Cascading Style Sheets : feuilles de style en cascade)
est utilisé pour décrire la présentation d'un document structuré écrit
en HTML ou en XML, et c'est le World Wide Web Consortium (W3C)
qui en a la direction.
GPL
(General Public License) Licence servant à protéger les droits des
logiciels libres et de leurs utilisateurs.
JavaScript Un langage de programmation créé par Netscape. Un programme
JavaScript peut être intégré à une page Web. Un ordinateur compatible
JavaScript exécutera alors le programme au chargement de la page. Un
programme JavaScript ne peut accomplir que des actions limitées.
MySQL
Gestionnaire de base de données (SGBD) libre (sous licence GPL) et
gratuit. Il est très utilisé et très populaire dans les projets libres. Il est
néanmoins très utilisé dans le milieu industriel également grâce à son
rapport qualité/prix.
PHP
Langage de script libre principalement utilisé pour être exécuté par un
serveur HTTP, mais il peut fonctionner comme n'importe quel langage
interprété en utilisant les scripts et son interpréteur sur un ordinateur.
PHP permet de développer des scripts suivant le modèle procédural
et/ou le modèle objet. En raison de la richesse de sa bibliothèque, on
désigne parfois PHP comme une plate-forme plus qu'un simple
langage.
W3C
Consortium international de sociétés concernées par l'Internet et le
Web. Le W3C a été fondé en 1994 par Tim Berners-Lee, l'architecte
créateur du Web. Le but de l'organisation est de mettre au point des
normes ouvertes de manière à ce que le Web évolue sur un axe unique,
plutôt que de se fragmenter au gré de parties en concurrence. Le W3C
est le principal organisme de normalisation pour le HTTP et le HTML.
XHTML
XHTML est un langage balisé servant à l'écriture de pages du World
Wide Web. XHTML est le successeur de HTML (de l'anglais HyperText
Markup Language), XHTML respectant la syntaxe définie par XML,
plus récente et plus simple que la syntaxe définie par SGML respectée
par HTML.
Département informatique
33
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
BIBLIOGRAPHIE
Sites web
http://www.nexen.net/
Site web intégrant toute la documentation PHP avec des commentaires et
exemples en plus.
http://www.phpfrance.com/
S ite In tern et con ten an t la d ocu m en tation
PH P
ain si q u ’u n e gran d e
communauté de programmeurs PHP de tous niveaux.
http://www.wampserver.com/
Site web pour télécharger le logiciel WAMP.
http://www.pspad.com/fr/
Site pour télécharger le logiciel PSPad Editor.
Département informatique
34
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
ANNEXES
Diagrammes de Gantt ............................................................................................. 36
Prévisionnel ........................................................................................................ 36
Réalisé ................................................................................................................ 37
Codes sources ............................................................................................................ 38
Classe générique (couche haut niveau) ............................................................ 38
Classe générique objet (couche intermédiaire) ................................................ 45
Classe SQL (couche bas niveau) ........................................................................ 46
Exemple de page racine (index.php) ................................................................ 48
Comptes rendus ........................................................................................................ 49
B ila n d ’a va n cem en t ........................................................................................... 49
P résen ta tion à l’u tilisa teu r ................................................................................ 50
Département informatique
35
L o giciel d e gestio n d e l’E D C S V
Diagramme de Gantt – Prévisionnel
Mémoire de stage
Département informatique
36
L o giciel d e gestio n d e l’E D C S V
Diagramme de Gantt – Réalisé
Mémoire de stage
Département informatique
37
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Classe Maker (couche haute)
<?php
class Maker
{ /*
Classe permettant de créer des formulaires à partir d'une table
et permet l'enregistrement des données
Maker($class Sql, $nom_de_la_table)
Ce paquet est dépendant des packages : sql.php et objet.php
Mises à jour et corrections de bug : Olivier Versanne - [email protected]
V 1.0 - Juin 2006
*/
private $bd;
private $nom;
private $lattribut;
private $lcle;
private $position;
private $displayRequire;
private $lrequireField;
private $lHidden;
private $nbSelectOption;
private $submit;
private $styleTable;
private $ligneStyle;
private $colStyle;
private $classTable;
private $action;
private $onclick;
private $separator;
private $idAjout;
function Maker($bd, $nom)
{ // Constructeur
$this->bd = $bd;
$this->nom = $nom;
$this->lattribut = $this->lattribut();
$this->position = 1;
}
private function lattribut()
// Pour obtenir la liste des champs situés dans la base de données
public function get($nom, $what = 'value')
// Pour obtenir la valeur d'un champ
public function setAttrib($nom, $val)
// définir la valeur d'un attribut
public function setFullAttrib($w)
// remplir tous les attributs avec le tableau compatible le formulaire du maker
public function displayRequire()
// Ajoute l'affichage des étoiles et du message indiquant les champs obligatoires lors de la saisie
Département informatique
38
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
private function verifAttrib($choix)
// Vérification que la liste des attributs est correctement remplis (pas de hackage)
{
foreach($this->lattribut as $k => $v)
{ // vérification : champs obligatoires remplis, si référencé vérifier la correspondance et la pos
siblité d'ajouter
if($v['need'] && ($v['value'] === "" || $v['value'] === NULL))
{
$erreur = 2;
break;
}
else if($v['reference'] && $v['special'] && $v['adder'])
{ // l'attribut a une référence et l'utilisateur veut ajouter un nouveau objet pour l'attribut
$o = new Objet($this->bd, $v['reference']);
$e = $o->getAllKey();
if(!$o->charge(array($e[1] => $v['value'])))
{ // Vérification de la non existance de la valeur
if($o->ajoute())
{ // erreur du à un problème de conception dans la base de données (exemple : clé uniqu
e définie sur un autre atribut que le 2eme)
$erreur = 5;
break;
}
$this->lattribut[$k][$choix] = $o->idAjout();
}
else
{ // s'il existe déjà on lui attribut la valeur déjà existante
if($v['option'])
{
$trouve = false;
foreach($v['option'] as $w)
if($w['value'] == $o->get($e[0]))
{ // Vérification que l'élément se trouve aussi dans la liste proposée
$trouve = true;
break;
}
if(!$trouve)
{
$erreur = 3;
break;
}
}
$this->lattribut[$k][$choix] = $o->get($e[0]);
}
}
else if($v['reference'])
{ // l'attribut sélectionné doit être dans la liste déroulante et donc dans la table corresponda
nte
$o = new Objet($this->bd, $v['reference']);
$e = $o->getAllKey();
if(!$o->charge(array($e[0] => $v['value'])))
{ // si celui n'est pas dans la bd => erreur
$erreur = 3;
break;
}
else
{ // vérification si celle-ci est aussi dans la liste
if($v['option'])
{
$trouve = false;
Département informatique
39
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
foreach($v['option'] as $w)
if($w['value'] == $o->get($e[0]))
{ // Vérification que l'élément se trouve aussi dans la liste proposée
$trouve = true;
break;
}
if(!$trouve)
{
$erreur = 3;
break;
}
}
$this->lattribut[$k][$choix] = $v['value'];
}
}
else
$this->lattribut[$k][$choix] = $v['value'];
if(strstr($v['Type'],"int") && $this->lattribut[$k][$choix] != (int)$this>lattribut[$k][$choix])
// si un entier est attendu
$erreur = 4;
}
}
public function insere()
{ // ajoute l'élément à la base (ainsi que ses références si autorisé)
/* retour : 0 = insertion réussie
1 = élément existant
2 = données manquantes (formulaire incomplet)
3 = hack : identifiant non présent dans une référence ou dans la liste option
4 = entier attendu, chaine trouvée (d'après la base de données)
5 = Erreur lors de l'ajout d'un élément référencé (problème dans la base de données sur u
ne table référence)
*/
if(!($erreur = $this->verifAttrib('insere')))
{
$o = $this->getObjet('insere');
$erreur = $o->ajoute()?1:0;
$this->idAjout = $o->idAjout();
}
return $erreur;
}
public function update()
// modifie l'élément dans la base (ainsi que ses références si autorisé)
public function getIdAjout()
// Récupère l'identifiant (pour un autoincremente) de l'élément ajouté
public function setReference($nom, $table)
// Ajoute une liaison entre un attribut de la table actuelle et une autre table
public function setDescription($nom, $desc, $require=1)
// Ajoute l'attribut dans le formulaire ainsi qu'une description et défini si celui-ci est obligatoire
public function setType($nom, $type)
{ // Défini le type du champ (input type='$type') + textarea + select + date + email
foreach($this->lattribut as $k => $v)
if($nom == $v['Field'])
$this->lattribut[$k]['type'] = strtolower($type);
}
Département informatique
40
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
public function addHiddenAttrib($nom, $val)
// Ajoute un attribut caché
public function addConfirmationAttribut($nom, $desc, $msg)
// Duplique un champ servant de vérification de saisie (ex : mot de passe ou email)
public function addSelectOption($nom, $val, $desc)
// Ajoute une option à une liste déroulante
public function addSelectOptionl($nom, $sql)
// Ajoute la liste récupérée par la requête SQL dans la liste déroulante $nom
public function addSelectAdder($nom, $desc)
// Ajoute la possibilité d'ajouter un élément non présent dans la liste si sélection de l'élément $d
esc
public function setTaille($nom, $taille)
// définie le nombre de caractères max que pourra recevoir le champs $nom
public function setSubmit($val)
// Définie la description du bouton de validation (submit)
public function setReset($val)
// Ajoute et définie la valeur du bouton de remise à zéro (reset)
public function setStyle($val)
// Défini le style des tableaux du formulaire
public function setLineStyle($val)
// Défini le style de chaque ligne du tableau
public function setColStyle($val)
// Défini le style de la colonne gauche du tableau (libellés)
public function setAttribStyle($nom, $val)
// Défini le style de l'attribut (du textarea, select, input... par exemple)
public function setClassTable($val)
// Défini une classe CSS pour les tableaux du formulaire
public function setAction($val)
// Défini un script JavaScript lors du submit du formulaire
public function setSubmitOnClick($val)
// Défini un script JavaScript lors du clic sur le bouton de validation (submit)
public function setOnClick($nom, $val)
// Défini un script JavaScript lors du clic sur le champ $nom
public function setOnChange($nom, $val)
// Défini un script JavaScript lors du changement de valeur sur le champ select $nom
public function setOnBlur($nom, $val)
// Défini un script JavaScript lors de la sortie du champ $nom
Département informatique
41
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
public function consulter()
{ // Génère le formulaire de consultation
foreach($this->lattribut as $v)
if($v['place'])
$tab[$v['place']] = $v;
if($tab)
ksort($tab);
else
$tab = $this->lattribut;
if($this->separator) { ?><h3><?php echo $this->separator ?></h3><?php } ?>
<table class="<?php echo $this->classTable ?>" style="<?php echo $this->styleTable; ?>">
<?php
foreach($tab as $v)
{
if($v['value'] || $v['value'] === 0)
{
?>
<tr class="ligne<?php echo $i++%2 ?>" style="<?php $this->ligneStyle ?>">
<?php if($v['type']!="textarea")
{
?>
<td style="<?php echo $this>colStyle ?>" <?php $v['type']=="textarea"?'colspan="2"':NULL ?>><?php echo $v['description']?$v['
description']:$v['Field']; ?></td>
<td style="<?php echo $this->colStyle ?>"><?php
}
else
{
?>
<td style="<?php echo $this>colStyle ?>" colspan="2"><?php echo $v['description']?$v['description']:$v['Field']; ?></td></tr>
<tr class="ligne<?php echo $i++%2 ?>" style="<?php $this->ligneStyle ?>"><td colspan="2">
<?php
}
switch($v['type'])
{
#################################################
case("email"):
?><a href="mailto:<?php echo $v['value'] ?>"><?php echo $v['value']; ?></a><?php
break;
#################################################
case("date"):
if($v['value'])
{
list($annee, $mois, $jour) = explode("-",$v['value']);
if((int)$jour && (int)$mois && (int)$annee)
{
echo $jour."/".$mois."/".$annee;
break;
}
}
echo "Indéfini";
break;
#################################################
case("select"):
$trouve = false;
if($v['option'])
{
Département informatique
42
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
foreach($v['option'] as $w)
{
if($w['value'] == $v['value'] && $v['reference'] && file_exists("php/consultation/".$v['ref
erence'].".php"))
{
?><a href="consulte.php?t=<?php echo $v['reference'] ?>&amp;v=<?php echo $v['val
ue'] ?>"><?php echo $w['desc']; ?></a><?php
$trouve = true;
break;
}
elseif($w['value'] == $v['value'])
{
echo $w['desc'];
$trouve = true;
break;
}
}
}
if(!$trouve)
echo $v['value'];
break;
#################################################
case("textarea"):
echo nl2br($v['value']);
break;
#################################################
default:
echo $v['value'];
}
#################################################
?></td></tr>
<?php
if($v['separator'])
{
?> <tr><td colspan="2"><hr /></td></tr>
</table>
<h3><?php echo $v['separator'] ?></h3>
<table class="<?php echo $this->classTable ?>" style="<?php echo $this->styleTable; ?>">
<?php
}
}
}
?> </table>
<?php
}
public function afficher()
// Génère le formulaire d'insertion ou de modification
public function addSeparator($nom, $titre)
{ // Ajoute un séparateur après l'attribut $nom
if($nom)
{
foreach($this->lattribut as $k => $v)
if($nom == $v['Field'])
$this->lattribut[$k]['separator'] = $titre;
}
else
$this->separator = $titre;
}
Département informatique
43
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
public function getObjet($what = 'value')
{ // Récupérer l'objet généré (update / value)
$o = new Objet($this->bd, $this->nom);
if($what == "update")
{
$lCle = $this->bd->lcle($this->nom);
foreach($lCle as $v)
{
foreach($this->lattribut as $w)
if($w['Field'] == $v)
$cherche[$v] = $w['value'];
}
$o->charge($cherche);
}
foreach($this->lattribut as $v)
$o->set($v['Field'],$v[$what]);
return $o;
}
} // Fin de la classe
?>
Département informatique
44
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Classe Objet (couche intermédiaire)
<?php
// Classe permettant de gérer les requêtes SQL envoyés au serveur MySQL
// Mise à jour et correction de bugs : Olivier Versanne - [email protected]
// V4.0 – Mars 2006
class Objet {
protected $bd;
protected $nom;
protected $v;
protected $k;
protected $vsvg;
protected $notFound;
function Objet($bd, $nom)
// Constructeur
public function ajoute($showError=0)
// A jou te l’élém en t d an s la b ase d e d on n ées
public function supprime()
// S u p p rim e l’élém en t d e la b ase d e d on n ées
// Renvoie le résultat de la requête SQL de suppression
public function modifie()
// M et à jou r l’élém en t dans la base de données
// Renvoie le résultat de la requête SQL de modification
public function set($k, $v)
// D éfin it la valeu r ($ v) d ’u n attrib u t ($ k)
public function add($k, $v)
// A jou te la valeu r $ v à la valeu r d e l’attribu t $ k
public function mult($k, $v)
// M u ltip lie p ar la valeu r $ v la valeu r d e l’attrib u t $ k
public function charge($c)
// C h arge l’élém en t avec les clés et valeu r d u tab leau $ c
// R en voi tru e si l’élém en t est trou vé, false sin on
public function get($k)
// R en voi la valeu r d e l’attrib u t $ k
public function getAll()
// Renvoi un tableau avec les attributs pour indexe et leurs valeurs pour valeur
public function getAllKey()
// Renvoi un tableau avec pour valeur le nom des champs
public function nom()
// R en voi le n om d e la tab le d e l’ob jet
public function idAjout()
// Renvoie la valeur d e l’id en tifian t attrib u é à l’ob jet lors d e son ajou t (auto incrémente)
}
// Fin de la classe
?>
Département informatique
45
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Classe SQL (couche bas niveau)
<?php
// Classe permettant de gérer les requêtes SQL envoyés au serveur MySQL
// Mise à jour et correction de bugs : Olivier Versanne - [email protected]
// V4.0 – Janvier 2006
class Sql {
private $reference_bd_ouverte;
private $nb_requete;
private $hostname;
private $database;
private $user;
private $password;
function Sql($hostname, $database, $user, $password){
// Constructeur
$this->hostname = $hostname;
$this->database = $database;
$this->user = $user;
$this->password = $password;
}
function open()
{ // Ouvre la connexion à la base de données
// Ouverture avec une méthode de forcing, 20 tentatives de reconnexion
while(!($this->reference_bd_ouverte = mysql_connect($this->hostname, $this->user, $this>password)) && $nb < 20)$nb++;
if(!$this->reference_bd_ouverte)
{ // Si impossible de se connecter au bout des 20 tentatives
echo "Impossible de se connecter la base de donnes";
exit(); // Arrêt du script (pas de faille)
}
mysql_select_db($this->database,$this->reference_bd_ouverte);
$this->nb_requete = 0;
}
function __destruct()
{ // D estru cteu r d e l’ob jet, ferm e la con n exion
if($this->reference_bd_ouverte)
mysql_close($this->reference_bd_ouverte);
}
function lastinsert()
{ // R écu p ère l’id en tifian t d u d ern ier élém en t ajou té
return mysql_insert_id($this->reference_bd_ouverte);
}
function lcle($table)
{ // R écu p ère la liste d es clés d ’u n e tab le $ tab le
if($l = $this->exec("SHOW COLUMNS FROM `".$table."`"))
{
foreach($l as $v)
if($v['Key'] == "PRI")
$t[] = $v['Field'];
return $t;
}
}
Département informatique
46
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
function lColonne($table)
{ // R écu p ère la liste d es ch am p s et clé d ’u n e tab le $ tab le
if($l = $this->exec("SHOW COLUMNS FROM `".$table."`"))
foreach($l as $v)
if($v['Key'] == "PRI")
$k[] = $v['Field'];
else
$c[] = $v['Field'];
return array_concat($k,$c);
}
function exec($commande,$chut=false)
{ // Exécute la requete SQL $commande
// Si un résultat doit être renvoyé, la classe renverra tous les enregistrements dans un tableau
// Si une erreur est récupérée, celle-ci sera affiché si le paramètre $chut n ’est p as d éfin i
// L ’erreu r est ren voyé p ar la fon ction ($ ch u t ou p as $ ch u t)
if($this->reference_bd_ouverte)
{
$this->nb_de_requete++;
$tableau = mysql_query($commande,$this->reference_bd_ouverte);
if(mysql_error($this->reference_bd_ouverte))
{
if(!$chut)
print ("<br />".mysql_error($this>reference_bd_ouverte)."<br />Commande : ".$commande."<br />");
$contenu['chut']=1;
}
// Création du tableau à renvoyer
$i=1;
while($ligne = @mysql_fetch_assoc($tableau))
$contenu[$i++]=$ligne;
return $contenu;
}
else
{
echo "<br />Base de donnée non ouverte<br />";
exit(0);
}
}
// Récupère le nombre de requête effectué depuis la connexion
function nbRequete(){ return $this->nb_de_requete; }
} // Fin de la classe
?>
Département informatique
47
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Exemple de page « racine » (index.php)
<?php
require "php/commun.php"; // Fichier contenant les constantes, initialisation des variables,
l’in clu sion d es p ackages… (scrip t P H P u tilisé su r tou tes les p ages)
// Partie de traitement propre à chaque page « racine »
if($_SESSION['connecte']==CONNECTE)
{ // Si le visiteur est déjà connecté => on le déconnecte
header("location: connect.php");
exit();
}
switch($_SESSION['connecte'])
{ // analyse du contenu de la connexion
case(DECONNEXION): // l'utilisateur a demandé à se déconnecter
$msg = "Vous avez été déconnectés";break;
case(ECHEC_CONNEXION): // problème lors de la connexion
$msg = "Login ou mot de passe incorrect";break;
}
$_SESSION['connecte'] = NULL;
// Création du formulaire de connexion
$connexion = new Maker($bd, "utilisateur");
$connexion->setDescription("pseudo","Login : ");
$connexion->setDescription("mdp","Mot de passe : ");
$connexion->setType("mdp","password");
$connexion->setClassTable("middle");
$connexion->setSubmit("Connexion");
$connexion->setAction("connect.php");
$connexion->setAttrib("pseudo",$_SESSION['pseudo']);
// Fin de la construction du formulaire
// Fin de la partie des traitements
// C on figu ration p ou r l’affich age d es pages
$lien = "accueil.php"; // Nom de la page à afficher (présente dans le dossier « /pages/ »)
require "pages/index.php"; // G én ération d e l’affich age (n écessaire su r ch aqu e p age)
?>
Département informatique
48
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Compte rendu n°1 – B ilan d ’avan cem en t
Système d'Organisation de
l'Unité de Recherche CErmav
Compte-rendu de réunion
Date :
26 avril
2006
CERMAV
Présents : A. Rivet, J.D. Dubois, S. Cassini, T. Flachaire, M. Cebo, O.
Versanne
Rédacteur :
O. Versanne
Diffusion :
Page : 1/1
Ordre du jour :
- B ilan d ’avan cem en t
Sujets abordés – actions lancées
1
2
3
Qui
Délai
- C ritiq u es d e l’in terface p o u r ajou ter u n ch erch eu r :
+ ajo u ter le sigle en p lu s d u n o m d e l’éq u ip e d an s la
liste déroulante)
+ modifier la base de données pour gérer les sections
O. Versanne
28/04/2006
- C ritiq u es d e l’in terface p o u r ajou ter u n d octo ran t :
+ la mention est la mention de la thèse (et pas du
diplôme)
+ déplacer université dans la partie « personnelle »
+ in tégrer l’ajo u t d e resp o n sab le lo rs d e l’ajo u t d u
doctorant
O. Versanne
28/04/2006
- C ritiq u es d e l’in terface lo rs d e la su p p ressio n d ’u n
élément :
+ suppression possible uniquement si aucun élément
ne dépend de celui-ci (exemple : si une équipe dépend
d ’u n e u n ité, o n n e p o u rra p as su p p rim er l’u n ité tan t
q u e l’éq u ip e existe)
+ garder une interface simple, supprimer la deuxième
méthode de suppression (la méthode successive
décroissante)
O. Versanne
28/04/2006
4
5
Département informatique
49
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Compte rendu n°2 – P résen tatio n à l’u tilisateu r
Système d'Organisation de
l'Unité de Recherche CErmav
Compte-rendu de réunion
Date :
10 mai
2006
CERMAV
Présents : A. Rivet, S. Pérez, J. Dimarco, O. Versanne
Rédacteur :
O. Versanne
Diffusion :
Page : 1/1
Ordre du jour :
-
P résen tation d u p rojet à l’u tilisateu r
Sujets abordés – actions lancées
Qui
Délai
O. Versanne
12/05/2006
1
- Critiques commune d e l’in terface
+ remplacer email par courriel
+ augmenter la description des intitulés
O. Versanne
12/05/2006
2
- C ritiq u es d e l’in terface p o u r ajou ter d es élém en ts :
+ champs manquants
+ champs inutiles
- C ritiq u es d e l’o rgan isatio n d u m en u :
+ lien section peu important, réduire son importance
O. Versanne
12/05/2006
- Possibilité de fusionner les laboratoires et les équipes.
O. Versanne
12/05/2006
- Un responsable peut être un directeur de thèse ou un
co-enseignant
O. Versanne
12/05/2006
3
4
5
Département informatique
50
Mémoire de stage
Département informatique
L o giciel d e gestio n d e l’E D C S V
51
Mémoire de stage
L o giciel d e gestio n d e l’E D C S V
Résumé :
Le but de ce stage est de réaliser une base de données pour gérer les étudiants
et chercheurs-enseignants de l’E D C S V . Après avoir analysé les ressources disponibles
et les besoins des utilisateurs, il a été possible de réaliser un modèle de données ainsi
qu'un schéma relationnel pour cette base de données.
L'interface de la base de données a été écrite en PHP et est disponible sur
l'intranet du CERMAV. Les outils utilisés ont été WAMP pour la création de la base
de données et pour les tests locaux et PSPad Editor pour l'écriture des pages en PHP.
Pour exploiter cette base de données, des interfaces de saisies, de mise à jour,
d'interrogations, ainsi que de suppressions ont été créées. Toutes ces interfaces ont
été réalisées avec une charte graphique.
Cette nouvelle base de données a été créée pour pouvoir éditer toutes sortes de
statistiques.
Mots-clés : Base de données, PHP, Ajax, MySQL, EDCSV
Abstract:
The purpose of this training period is to realize a new data base of doctorants
and professors of the EDCSV. Having analyzed the available resources and the needs
of the users, it was possible to realize a model of data as well as a relational plan for
this new data base.
The interface of the data base was written in PHP and can be viewed on the
intranet of the CERMAV. The tools used have capacities were WAMP for the data
base and PSPad for the writing of PHP pages content. To exploit this new data base,
interfaces for inputting, updating, requesting, as well as deleting information were
created. All these interfaces were realized with a graphic charter.
This new data base was created to be able to publish any sort of statistics.
Key words: database, PHP, MySQL, EDCSV, Ajax
Département informatique
52

Documents pareils