Вы находитесь на странице: 1из 82

Copyright (c) Andrew DEMOLIS

Permission is granted to copy, distribute and/or modify this document


under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
BAUDOUIN Jean-Christophe
DEMOLIS Andrew
FRANCOIS Alain-Aymerick
PILLOT Ludovic

PROJET
TUTORÉ
Inspection Académique
de la Haute-Vienne
Licence Professionnelle – IUT du Limousin – Session 2003

IUT du Limousin - Licence Professionnelle – Projet tutoré 2


REMERCIEMENTS

Nous tenions à remercier l’Inspection Académique, et tout particulièrement Monsieur


Jean-Christophe CUBAUT, responsable du service informatique de l’Inspection Académique,
de nous avoir accueilli et permis d’effectuer ce projet tutoré au sein de son service.

Nous remercions également notre tuteur, Monsieur Stéphane MERILLOU, pour ses
conseils et ses mises en gardes.

IUT du Limousin - Licence Professionnelle – Projet tutoré 3


SOMMAIRE

REMERCIEMENTS.................................................................................................................... 3

SOMMAIRE ................................................................................................................................ 4

INTRODUCTION ....................................................................................................................... 7

A) Analyse du projet :.............................................................................................................. 8


I) Analyse de l’application existante : ................................................................................. 8
1) Quel est le rôle de cette application ? : .................................................................... 8
2) Qui sont les utilisateurs de l’application GIE2000 ? : ............................................. 8
3) Comment utilisent-ils celle-ci ? : ............................................................................. 9
4) Sous quel SGBDR GIE2000 est-elle développée et pour quelles raisons ? .......... 11
5) Structure et Modèle Logique Relationnel (MLR) de l’application GIE2000 :...... 12

II) Analyse de la topologie du réseau existant :................................................................. 13


1) Configuration des serveurs de production de l’Inspection Académique : ............. 13
a) Serveur applicatif NT:........................................................................................ 13
b) Serveur WEB : ................................................................................................... 13

III) Description du problème rencontré par l’Inspection Académique :............................ 14

IV) Quels types de solutions pouvons-nous envisager ? ................................................... 14


1) Première solution : lien ODBC direct :.................................................................. 14
a) Type ODBC Bridge : ......................................................................................... 15
b) Type Socket Server :.......................................................................................... 15
2) Seconde solution : synchroniser la base ACCESS avec une autre base ................ 16
a) Première variante : ............................................................................................. 16
b) Seconde variante : .............................................................................................. 17
3) Troisième solution : refonte totale de l’application GIE2000 : ............................. 17

V) Description et justification de la solution retenue : ...................................................... 18


1) Réfutation des solutions non retenues : ................................................................. 18
a) Lien ODBC direct (ODBC Bridge) : ................................................................. 18
b) Socket Server : ................................................................................................... 18
c) Synchronisation des bases avec la nouvelle base sur le serveur
Windows 2000 : .................................................................................................. 19
d) Refonte totale de l’application GIE2000 : ......................................................... 19
2) Justification de la solution retenue :....................................................................... 19
a) Schéma de la solution retenue : ......................................................................... 20
b) Explication du schéma de la solution retenue :.................................................. 20
c) Qu’est-ce que MyODBC ? :............................................................................... 21
d) Procédure globale de la mise en place de la solution : ...................................... 21
e) Les avantages de cette solution :........................................................................ 21

IUT du Limousin - Licence Professionnelle – Projet tutoré 4


B) Prototypage du projet :...................................................................................................... 22

I) Ressources nécessaires pour le prototypage de la solution choisie :.............................. 22


1) Configuration matérielle utilisée : ......................................................................... 22
a) Câblage utilisé :.................................................................................................. 22
b) Ordinateur sous Linux : ..................................................................................... 22
c) Ordinateur sous Windows :................................................................................ 22
d) Remarque : ......................................................................................................... 22
2) Systèmes d’exploitation et logiciels nécessaires : ................................................... 22
a) Ordinateur sous Linux : ..................................................................................... 22
b) Ordinateur sous Windows :................................................................................ 23
c) Remarque : ......................................................................................................... 23
3) Rôle de chaque ordinateur : ................................................................................... 23

II) Prototypage du dialogue entre les deux bases de données :.......................................... 24


1) Installation de Linux : ............................................................................................ 24
2) Installation et configuration des serveurs APACHE et MySQL : ......................... 24
a) Installation du serveur MySQL :........................................................................ 24
b) Installation du serveur Apache : ........................................................................ 25
c) Installation du langage de script PHP : .............................................................. 25
d) Configuration d’Apache et de MySQL pour qu’ils se lancent au démarrage :.. 26
e) Configuration du fichier du serveur Apache : /www/conf/httpd.conf : ........... 26
3) Installation et configuration de PhpMyAdmin : .................................................... 26
a) Installation : ....................................................................................................... 26
b) Configuration du fichier de PhpMyAdmin : config.inc.php :........................... 27
4) Paramétrage de MyODBC : ................................................................................... 28
5) Paramétrage des droits d’accès sur le serveur MySQL (sur le serveur Linux) :.... 30
a) Configuration de la table « host » dans la base de données « mysql »
sur le serveur MySQL :...................................................................................... 30
b) Configuration de la table « user » dans la base de données « mysql »
sur le serveur MySQL :...................................................................................... 31
6) Test du dialogue entre les deux bases de données : ............................................... 31
7) Synchronisation ou liaison de tables ? :................................................................. 33
a) Synchronisation : ............................................................................................... 33
b) Liaison de tables : .............................................................................................. 34

III) Étude de fiabilité de la transmission par MyODBC :.................................................. 35

IV) Problèmes lors de la migration de l’application ACCESS en une base MySQL :...... 36
1) Problèmes que nous avons rencontrés lors de la migration des données de
MS ACCESS vers MySQL :.................................................................................. 36
2) Problèmes les plus rencontrés, en général, lors de la migration des données
d’une base Microsoft ACCESS vers une base MySQL :....................................... 36

V) Développement des pages PHP nécessaires à la publication du site sur l’Intranet de


l’Inspection Académique : ........................................................................................... 38
1) Description :........................................................................................................... 38
2) Organisation du site : ............................................................................................. 38
3) Implémentation : .................................................................................................... 39

IUT du Limousin - Licence Professionnelle – Projet tutoré 5


a) Accès à la base de données : .............................................................................. 39
b) Résultats sous forme de pages Web :................................................................. 39
1- Première requête : .......................................................................................... 39
2- Deuxième requête : ........................................................................................ 40
c) Éditer :................................................................................................................ 41
1- L’existant sur ACCESS : ............................................................................... 41
2- Les quatre types d’édition :............................................................................ 42
3- Résultats :....................................................................................................... 43
4- Rechercher : ................................................................................................... 44
5- Détails : .......................................................................................................... 46

C) Phase de test sur les serveurs de l’Inspection Académique : ............................................ 48

D) Mise en production sur les serveurs de l’Inspection Académique : ................................. 49

I) Procédure de mise en oeuvre sur les serveurs de production :....................................... 49


1) Recréation de la structure correspondante à la base de données ACCESS
convertie en MySQL sur le serveur de production : .............................................. 49
2) Configuration des droits MySQL afin d’accepter une connexion MyODBC : ..... 51
a) Configuration de la table « host » de la base « mysql » sur le serveur
MySQL : ............................................................................................................ 51
b) Configuration de la table « user » de la base « mysql » sur le serveur
MySQL : ............................................................................................................ 52
c) Les mêmes manipulations que ci-dessus mais en mode texte (au cas où
l’utilitaire phpMyAdmin ne serait pas installé sur le serveur) :......................... 52
3) Configuration du pilote MyODBC sur le serveur applicatif NT contenant
l’interface de saisie GIE2000 et mise en place des liaisons de tables MySQL : ..... 53
a) Installation de MyODBC : ................................................................................. 53
b) Mise en place des liaisons de tables sur l’application GIE2000 sur le
serveur NT : ....................................................................................................... 55
4) Remplissage de la base de données MySQL avec les données de l’ancien
support GIE2000 :.................................................................................................. 55
5) Optimisation du code de l’application GIE2000 et correction de certains bugs : . 57
a) Optimisation du code : ....................................................................................... 57
b) Corrections de certains bugs : ............................................................................ 58
6) Mise en place des pages PHP : .............................................................................. 58
7) Remarques importantes :........................................................................................ 59

CONCLUSION.......................................................................................................................... 60

ANNEXE 1 ................................................................................................................................ 62

ANNEXE 2 ................................................................................................................................ 65

IUT du Limousin - Licence Professionnelle – Projet tutoré 6


INTRODUCTION

Notre projet tutoré s’est effectué à la demande, et sous la responsabilité de Monsieur


Jean-Christophe CUBAUT, responsable du service informatique de l’Inspection Académique
de Limoges.

Ce dernier nous a demandés de réfléchir au moyen de rendre accessible les données


d’une application départementale développée avec Microsoft ACCESS et hébergée sur un
serveur local Windows 2000, depuis le serveur Intranet de l’administration dont le système
d’exploitation est LINUX.

IUT du Limousin - Licence Professionnelle – Projet tutoré 7


A) Analyse du projet :
I) Analyse de l’application existante :

1) Quel est le rôle de cette application ? :

L’Inspection Académique de Limoges est chargée de tenir à jour les bases de données
ayant des relations avec l’enseignement scolaire, notamment au niveau du primaire.
Or, de nombreuses activités sont organisées pour les élèves, et elles nécessitent l’intervention
de personnes qui accompagnent et encadrent les écoliers.
Ainsi, elle doit gérer l’ensemble des intervenants extérieurs qui participent aux activités des
élèves (sorties extérieures, piscine…).

Cette application « GIE2000 », développée sous Microsoft Access 97, permet


d’accomplir les tâches nécessaires à cette gestion.

Ainsi, les écoles concernées sont recensées par circonscription (Bellac, Limoges, Saint-
Yrieix).
On peut identifier les projets existants, et de ce fait la nature des activités qui sont proposées.
Les intervenants sont également archivés par un numéro et leurs coordonnées personnelles.
De plus, l’application gère aussi les interventions de ces intervenants (date, circonscription,
école concernée, intervenant, nature de l’activité).

Tout ceci se présente sous la forme d’une interface graphique simple et efficace.
Les utilisateurs ont également la possibilité de visualiser et d’imprimer des états selon des
critères définis (par exemple : liste des écoles par circonscription).

2) Qui sont les utilisateurs de l’application GIE2000 ? :

Les premiers utilisateurs sont les personnels de l’Inspection Académique puisque ce


sont eux qui doivent maintenir à jour l’application et donc la base de données.
Ainsi, les secrétaires ont la tâche de saisir les données, à savoir, l’ajout d’écoles, de projets,
d’intervenants…

Les autres utilisateurs sont les responsables des différentes circonscriptions (Bellac et
Saint-Yrieix) qui doivent venir à Limoges pour également saisir leurs données et consulter la
base de données.

IUT du Limousin - Licence Professionnelle – Projet tutoré 8


3) Comment utilisent-ils celle-ci ? :

Lorsqu’il y a besoin de mettre à jour ou de consulter la base de données, les utilisateurs


ont seulement besoin de lancer le menu général de l’application pour visualiser l’interface
graphique.

Une fois que cela est fait, ils n’ont plus qu’à faire leur choix parmi les opérations qui
leurs sont proposées :

! le premier onglet de l’application leur permet de traiter les données, ce qui


englobe les différentes saisies :

" ajout d’intervention


" ajout de projet pédagogique
" ajout d’école
" ajout d’organisme
" ajout de discipline
" ajout d’intervenant

! le second onglet permet l’édition des données par l’intermédiaire de


plusieurs états :

" liste des intervenants par ordre alphabétique


" liste par circonscription
" liste par école
" liste par discipline
" liste des écoles par circonscription…

IUT du Limousin - Licence Professionnelle – Projet tutoré 9


! le troisième onglet permet de gérer des archives en clôturant les projets et en
pouvant en faire une liste :

IUT du Limousin - Licence Professionnelle – Projet tutoré 10


! le quatrième onglet est destiné à la gestion du système :

" gestion des sauvegardes


" suppression d’enregistrement (organismes, intervenants, écoles…)

4) Sous quel SGBDR GIE2000 est-elle développée et pour quelles raisons ?

L’application GIE2000 a été développée avec Microsoft Access 97, en juin 2002 par
une stagiaire en BTS Informatique de Gestion du Lycée Suzanne Valadon.
Elle a ensuite été retravaillée par Monsieur CUBAUT pour en arriver à son état actuel.

Le SGBDR (Système de Gestion de Bases de Données Relationnelles) Microsoft


ACCESS a été choisi par souci de simplicité et rapidité de développement mais également par
souci d’ergonomie.
En effet, il est beaucoup plus rapide de créer et d’exploiter des formulaires et sous-formulaires
sous Microsoft Access que d’utiliser une autre méthode (de type Intranet par exemple, qui
nécessite un minimum de connaissances pour le développement).

IUT du Limousin - Licence Professionnelle – Projet tutoré 11


5) Structure et Modèle Logique Relationnel (MLR) de l’application GIE2000 :

Nous pouvons constater que l’application GIE2000 est orientée autour de trois tables
majeures :
! la table « INTERVENANT » qui permet de stocker toutes les données
personnelles concernant un intervenant (nom, prénom, numéro
d’agrément…),

! la table « INTERVENTION » qui permet de définir une intervention par


son numéro mais aussi par le projet concerné, dans quelle école elle a lieu, à
quelle période, et surtout quel(s) est ou sont les intervenants qui
l’accomplissent.
De plus, une intervention a lieu grâce au support d’un organisme.

! la table « ECOLE » qui permet d’identifier les écoles par un sigle et en


fonction de leur circonscription.
Une école peut demander une ou plusieurs interventions.

Autrement, nous pouvons dire qu’un intervenant est spécialisé dans une discipline, et
qu’il ne peut intervenir que dans sa circonscription.
Toutefois, il peut interagir dans de nombreuses interventions.

Une intervention n’existe que si elle a été demandée par une école, qu’elle a un
organisme support, un projet, et un intervenant.

IUT du Limousin - Licence Professionnelle – Projet tutoré 12


II) Analyse de la topologie du réseau existant :

1) Configuration des serveurs de production de l’Inspection Académique :

Les deux serveurs qui nous intéressent sont :

! le serveur sur lequel sont actuellement stockée la base de données et


l’application GIE2000,

! le serveur Web qui héberge le site Intranet de l’Inspection Académique.

a) Serveur applicatif NT:

Le premier serveur héberge donc l’application GIE2000 ainsi que la base de données
contenant les informations nécessaires.

Celui-ci possède la configuration matérielle suivante :


! processeur : Pentium III 700 Mhz
! mémoire vive : 512 SD-RAM 133Mhz
! capacité de stockage : 12 Go

Sa configuration logicielle est la suivante :


! système d’exploitation : Windows 2000 SP2
! Microsoft Access 2000

Configuration de sauvegarde :
! RAID 1 logiciel pour la partition de données

b) Serveur WEB :

Le serveur Web héberge l’ensemble du site Internet de l’Inspection Académique, ainsi


que le site Intranet qui nous intéresse pour notre projet tutoré.

La configuration matérielle de ce dernier est :


! processeur : Bi-Xéon 700 Mhz IBM X250
! mémoire vive : 1Go SD-RAM 133Mhz
! capacité de stockage : 34 Go

Sa configuration logicielle est la suivante :


! système d’exploitation : Linux RedHat 7.1 version entreprise
! serveur Web : Apache (version 1.3.)
! gestionnaire de bases de données : MySQL (version…)
! langage dynamique de création de pages Web : PHP (version …)

Configuration de sauvegarde :
! RAID 1 matériel pour la partition système
! RAID 5 matériel pour la partition des données

IUT du Limousin - Licence Professionnelle – Projet tutoré 13


III) Description du problème rencontré par l’Inspection Académique :

GIE2000 est une application départementale gérant les intervenants extérieurs lors des
activités des élèves (sorties…).
Comme nous l’avons vu précédemment, trois circonscriptions sont concernées par cette
application : Bellac, Limoges et Saint-Yrieix.

Actuellement, lorsque que les responsables des circonscriptions veulent modifier les
données de la base, ou tout simplement les consulter, ils sont obligés de venir dans les locaux
de l’Inspection Académique à Limoges pour accomplir ces tâches.
Ce fonctionnement est une perte de temps pour ces responsables.

Aussi, le souhait de Monsieur CUBAUT serait de pouvoir rendre accessible les données
de l’application GIE2000 (située sur un serveur local Windows 2000) depuis le serveur Web
(sous Linux) de l’Inspection Académique, pour pouvoir y accéder dans un premier temps
depuis l’Intranet, et dans un second temps en fonction des résultats obtenus, depuis le site
internet de l’Inspection Académique.
Toutefois, une des recommandations de Monsieur CUBAUT est de trouver une solution
économique, voire gratuite, pour son administration.

IV) Quels types de solutions pouvons-nous envisager ?

Une fois le sujet défini et compris, nous nous sommes mis aux recherches.
Il nous a tout de même fallu un moment pour arriver à trouver des solutions opérationnelles.
Au total, nous avons totalisé quatre solutions que nous avons par la suite soumises à Monsieur
CUBAUT.

1) Première solution : lien ODBC direct :

Cette solution consiste à établir un lien direct du serveur Web LINUX vers la base
ACCESS de l’application GIE2000 située sur le serveur Windows 2000.
Cette solution est réalisable à l’aide d’un procédé de type « ODBC Bridge » (Pont ODBC), ou
« Socket Server ».

Pour rappel :

ODBC signifie Open Data Base Connectivity.


C’est une interface de programmation (API) permettant de standardiser les échanges
d’informations entre une base de données et une application cliente. ODBC permet donc à des
applications comme Word, Excel, Access ou n’importe quelle autre application, d’accéder à
des données stockées dans n’importe quel type de base. Il est de la responsabilité du fabricant
du serveur de base de données de fournir les drivers nécessaires pour interconnecter son SGBD
par l’intermédiaire de l’interface ODBC.
ODBC est donc la définition d’un ensemble de fonctions standardisées, qui vont permettre à un
serveur de base de données de communiquer avec d’autres applications.

IUT du Limousin - Licence Professionnelle – Projet tutoré 14


Pour que l’interface ODBC fonctionne, vous devez donc avoir un driver ODBC
spécifique à votre SGBD, et un gestionnaire de drivers ODBC qui se charge de centraliser tous
les drivers ODBC d’une machine donnée.

a) Type ODBC Bridge :

Cette solution permet de créer « un pont d’ODBC » entre le serveur Web et la base de
données ACCESS, comme le montre le schéma suivant :

La solution que nous avons trouvé est une solution payante : Easysoft ODBC-ODBC
Bridge.
En effet, l’entreprise EasySoft est spécialisée dans la conception de pont ODBC entre des
stations à plateformes différentes (Windows, Linux…) et des bases de données diverses
(Microsoft ACCESS, ORACLE, SQLServer…)

Site internet de EasySoft : http://www.easysoft.com

b) Type Socket Server :

MS-Access Browser
| |
ODBC/ADO www server
| |
socket server<------------------------------->PHP
XML Data
Windows Machine Linux Machine

IUT du Limousin - Licence Professionnelle – Projet tutoré 15


Cette solution est gratuite mais se présente sous la forme de deux “modules” : un
module serveur et un module client.
Vous pouvez allez voir le site des développeurs : http://www.soundforge.net

Du fait qu’elle soit soumise à la licence GNU (donc solution libre et gratuite), son
avancement est plutôt lent et à l’heure où est relié ce dossier, seule la partie serveur a été
développée.

2) Seconde solution : synchroniser la base ACCESS avec une autre base

La seconde solution consiste à mettre en place une autre base de données qui sera
visible de l’intranet de l’Inspection Académique, puis de synchroniser les informations de cette
nouvelle base avec celles de l’application ACCESS. La synchronisation se fera par
l’intermédiaire d’un lien ODBC entre les SGBD.
Cette base de données devra donc être attaquable par des pages PHP qui seront distribuées par
le serveur Apache déjà en place sur le poste LINUX.

Cependant, il existe deux variantes dans cette deuxième solution.

a) Première variante :

L’autre base de données est stockée sur le serveur LINUX et dans ce cas on devra
trouver un SGBDR compatible avec les plates-formes de type UNIX.

IUT du Limousin - Licence Professionnelle – Projet tutoré 16


b) Seconde variante :

L’autre base de données est stockée sur le serveur applicatif NT et dans ce cas, on devra
trouver un SGBDR attaquable depuis le serveur LINUX.

La solution de l’une ou l’autre variante doit se faire en fonction de la charge déjà


supportée par chacun des deux serveurs et de l’architecture réseau existante.

3) Troisième solution : refonte totale de l’application GIE2000 :

Cette solution n’est pas forcément la plus simple et encore moins la plus rapide.
Elle consiste tout bonnement à adapter et refondre en pages PHP les formulaires de saisie, les
états… de l’application MS ACCESS GIE2000, et à migrer les données sous une base de
données MySQL.
En revanche, avec cette solution, il n’y a plus aucun problème de liaisons de tables ou
de réplication des bases de données puisque toutes les informations se retrouvent sur le serveur
Linux : en effet, on obtient avec cette méthode un véritable Intranet de type client/serveur.

IUT du Limousin - Licence Professionnelle – Projet tutoré 17


V) Description et justification de la solution retenue :

En premier lieu, il faut noter que le choix des solutions s’est effectué par rapport au
besoin de l’Inspection Académique, mais également par rapport à des points soulevés par
Monsieur CUBAUT, à savoir :
! il fallait choisir une solution gratuite,
! éviter de configurer tous les postes du réseau local,
! tenir compte du fait que le serveur applicatif était quasiment saturé en capacité
de stockage.

1) Réfutation des solutions non retenues :

Voyons maintenant les solutions qui ont été rejetées et pour quelles raisons.

a) Lien ODBC direct (ODBC Bridge) :

Tout d’abord, le lien de type « ODBC Bridge ».


Cette solution, bien que fonctionnelle, n’a pas été retenue à cause de son coût.

b) Socket Server :

La solution Socket Server est, elle, une solution gratuite.


Toutefois, cette application se composait de deux parties : une partie cliente et une partie
serveur.
A l’heure actuelle, seule la partie serveur est utilisable, la partie cliente étant en cours de
développement.

IUT du Limousin - Licence Professionnelle – Projet tutoré 18


De ce fait, nous avons exclut cette solution, qui une fois achevée sera certainement très
intéressante.

c) Synchronisation des bases avec la nouvelle base sur le serveur


Windows 2000 :

Nous n’avons pu retenir la première variante de la deuxième solution pour plusieurs


raisons :

! la première raison est une raison d’encombrement. En effet, le serveur applicatif


NT ne dispose plus que de 600 Mo d’espace disque et la politique actuelle de
monsieur CUBAUT et d’alléger au maximum ce serveur si possible.

! La seconde raison est une raison de sécurité des données : le poste LINUX
dispose d’un système de sauvegarde en RAID 5 matériel en opposition au
serveur applicatif NT qui ne met en œuvre qu’un système de mirroring
(RAID 1) logiciel.

d) Refonte totale de l’application GIE2000 :

Cette solution présenterait beaucoup d’avantages, notamment par le fait que


l’application serait exploitée par des clients légers (pages PHP par l’intermédiaire du
navigateur Web).

! Ceci permet une portabilité totale des interfaces de l’application.

! Plus de problèmes de compatibilité au niveau du système d’exploitation de


l’utilisateur par exemple.

Cependant, comme nous l’a fait remarqué Monsieur CUBAUT, cette solution ne tient
pas compte de certaines exigences en matière d’ergonomie de l’interface cliente. En effet, il est
plus facile de mettre en place un système d’impression de données basé sur des états à partir
d’ACCESS qu’à partir de pages PHP. En particulier en ce qui concerne les états au format
paysage. De plus, il souhaitait conserver au maximum la partie cliente de son application
développée sous ACCESS 2000. Nous avons donc également éliminée cette solution

2) Justification de la solution retenue :

Nous avons retenu la deuxième variante de la deuxième solution c’est à dire de


synchroniser une nouvelle base de données sous LINUX par rapport à la base ACCESS
préexistante.

Les logiciels de SGBDR pour plate-forme UNIX ne manquent pas, ils sont même très
nombreux, performants et souvent même gratuits ! ! !

Le problème était maintenant de choisir un SGBDR adapté, fonctionnant sous une


plate-forme UNIX. Plusieurs solutions se présentaient à nous : MySQL, POSTGRES,
INFORMIX, etc…

IUT du Limousin - Licence Professionnelle – Projet tutoré 19


POSTGRES aurait été une très bonne solution du fait de sa gratuité et de ses performances. Par
ailleurs, le serveur LINUX de l’Inspection Académique possédait déjà deux autres serveurs de
base de données en fonction : MySQL et INFORMIX.
INFORMIX est le SGBDR utilisé pour gérer les applications de niveau national et MySQL
celles de niveau départemental.

Monsieur CUBAUT n’était pas très enthousiaste à ce que l’on penche pour une solution
INFORMIX étant donné que ce logiciel commençait à tomber peu à peu en désuétude et donc
serait de moins en moins utilisé en ce qui concerne les services de l’éducation nationale.
Nous avons donc opté pour une solution MySQL.

a) Schéma de la solution retenue :

b) Explication du schéma de la solution retenue :

Nous avons choisi la première variante de la seconde solution en y apportant quelques


améliorations.
En effet, nous avons porté une amélioration à la solution choisie initialement dans le sens où
nous ne stockerons plus aucune donnée sous ACCESS mais uniquement sous MySQL.

Nous procèderons de la manière suivante : nous allons utiliser l’utilitaire MyODBC afin
de faire pointer l’application ACCESS vers la base MySQL par l’intermédiaire de liaisons de
tables créées sous ACCESS.

IUT du Limousin - Licence Professionnelle – Projet tutoré 20


Le principe des « liaisons » de tables est de créer des tables virtuelles ayant la même
structure que celles construites sous MySQL. Ainsi, nous pouvons visualiser les données (et
faire des opérations dessus) exactement comme si elles étaient présentes sur la base ACCESS
à la différence qu’elles sont stockées physiquement sur la base de données MySQL située sur
le serveur LINUX. Nous nous servons donc de MyODBC comme d’un pointeur de base de
données.

Cette méthode va nous permettre de conserver l’interface de saisie des données


préexistantes tout en permettant la consultation en parallèle par l’intermédiaire des pages PHP
que nous allons mettre en place.

c) Qu’est-ce que MyODBC ? :

MyODBC est le pilote ODBC utilisé pour accéder à un serveur MySQL. Il est
disponible sur de nombreuses plates-formes dont :

! toutes les plates-formes Windows : 95/98/NT/Me/2000/XP

! tous les systèmes UNIX

d) Procédure globale de la mise en place de la solution :

Cette opération requiert la création d’une base de données MySQL dont la structure
correspond parfaitement à celle de la base ACCESS GIE2000.
De plus, il faudra configurer le serveur MySQL de manière à ce qu’il accepte des connexions
provenant d’autres postes que le serveur.
On devra développer un module de consultation des données sous forme de pages PHP.

e) Les avantages de cette solution :

Cette solution est celle qui nous procure le plus d’avantages :

! contrainte de sécurité des données améliorée (étant donné que le poste LINUX
est équipé d’un RAID 5 matériel et que le serveur NT est équipé uniquement
d’un RAID 1 logiciel),

! conservation de l’interface de saisie ACCESS pour sa convivialité et parce que


les utilisateurs qui saisissent les données y sont habitués,

! visualisation INTRANET / INTERNET des données par l’intermédiaire des


pages PHP : mise en place d’un module de consultation des données,

! allègement de la charge du serveur applicatif ACCESS du fait du basculement


de toutes les données sous le serveur LINUX,

! la migration vers un SGBDR d’avenir (MySQL) est plus performante


qu’ACCESS.

IUT du Limousin - Licence Professionnelle – Projet tutoré 21


B) Prototypage du projet :
I) Ressources nécessaires pour le prototypage de la solution choisie :

1) Configuration matérielle utilisée :

Étudions la configuration matérielle dont nous disposions pour faire nos tests.

a) Câblage utilisé :

Concernant le câblage que nous avons utilisé, il est des plus simples : vu que nous
disposions de deux ordinateurs pour simuler les serveurs, et que nous ne disposions pas de
concentrateur (HUB), nous nous sommes servi d’un câble RJ-45 croisé.

b) Ordinateur sous Linux :

Ensuite, nous avions besoin d’un ordinateur pour installer notre serveur Linux.
Ses caractéristiques sont les suivantes :
! Processeur : AMD K6-2 450 Mhz
! Mémoire : 64 SDRAM 66mhz
! Disque dur : 6Go 5400tr

c) Ordinateur sous Windows :

Enfin, il nous a fallu un poste pour simuler le serveur applicatif NT. Pour cela, nous
avons utilisé un de nos postes de travail dont les caractéristiques principales sont :
! Processeur : AMD DURON 600 Mhz
! Mémoire : 256 SDRAM 133mhz
! Disque dur : 10Go 5400tr

d) Remarque :

Nous n’utilisons pas un matériel doté d’une grande puissance afin que les tests de
performance ne soient pas faussés par la puissance de chaque machine et d’autre part, parce
que nous n’en avons pas les moyens.

2) Systèmes d’exploitation et logiciels nécessaires :

a) Ordinateur sous Linux :

Pour notre serveur Linux, nous avons une installation comme suit :
! Système d’exploitation : Linux RedHat 7.1
! apache_1.3.27.tar.gz
! mysql-3.22.32.tar.gz
! php-4.2.2.tar.gz
! phpMyAdmin-2.3.2-php.tar.gz

IUT du Limousin - Licence Professionnelle – Projet tutoré 22


b) Ordinateur sous Windows :

L’installation de notre poste simulant le serveur applicatif est :


! Système d’exploitation : Windows 2000 professionnel
! Microsoft Access 97
! MyODBC-2.50.39-nt.zip

c) Remarque :

Seuls Windows 2000 professionnel et Microsoft Access 97 ne sont pas gratuits ; tous
les autres logiciels utilisés sont en libre accès.

3) Rôle de chaque ordinateur :

L’ordinateur tournant sous Linux va servir à simuler le serveur Web de l’Inspection


Académique (qui tourne aussi sous Linux RedHat version 7.1) par l’intermédiaire du serveur
Apache que nous installerons sur la machine.

L’ordinateur tournant sous Windows reproduira le serveur applicatif NT de l’Inspection


Académique et contiendra donc la base Access.

IUT du Limousin - Licence Professionnelle – Projet tutoré 23


II) Prototypage du dialogue entre les deux bases de données :

1) Installation de Linux :

La première des choses est d’installer le système d’exploitation. Dans notre cas, il s’agit
de la distribution Linux RedHat 7.1.
Nous avons réalisé une installation des plus classiques, à savoir :

! Au niveau des partitions :


" 1 partition système contenant toute l’arborescence (/)
" 1 partition d’échange de fichiers (swap)

! Au niveau de l’interface et des applications :


" les interfaces graphiques pour plus de convivialité (KDE notamment)
" les consoles pour travailler en mode « lignes de commande »
" les compilateurs
" un navigateur Web (Netscape)
" le gestionnaire de bases de données MySQL (version 3.22.32)
" le serveur Web Apache (version 1.3.27)
" le langage de script PHP (version 4.2.2)
" et pour gérer plus facilement la création et le contrôle de bases de
données, nous avons installé PhPMyAdmin (version 2.3.2)

2) Installation et configuration des serveurs APACHE et MySQL :

Nous allons travailler sur le serveur Linux.


Pour en apprendre un peu plus sur l’environnement UNIX, nous avons décidé d’installer nos
logiciels à partir de leurs sources binaires.
Voici comment nous avons procédé.

Pour installer et configurer correctement le serveur Apache, ainsi que le serveur


MySQL, il nous faut se connecter en tant qu’administrateur (root).
Ensuite, nous copions les fichiers nécessaires dans le répertoire de l’administrateur « root ».

a) Installation du serveur MySQL :

mkdir /usr/local/mysql On copie les fichiers de MySQL dans


cd ./root le répertoire /usr/local
cp mysql-3.22.32.tar.gz /usr/local

cd /usr/local On décompresse l’archive.


tar xzvf mysql-3.22.32

cd mysql-3.22.32 Les fichiers de configuration et les


./configure --prefix=/usr/local/mysql commandes « bin » de MySQL se
trouveront dans le répertoire situé
après « prefix ».

Make Compilation de MySQL.

IUT du Limousin - Licence Professionnelle – Projet tutoré 24


Make install Installation de MySQL.

./scripts/mysql_install_db Création de la base « mysql »

chmod +x support/files/mysql.server start Déverrouillage de mysql.server

./support-files/mysql.server start Lancement du serveur MySQL


(on peut stopper le serveur par la
combinaison de touches Ctrl+C).

cd/usr/local/bin Changement du mot de passe de


./mysqladmin -u root password mot_de_passe l’utilisateur mysql.

./mysql -u root -pmot_de_passe Connexion à mysql.


(ne pas mettre d'espace entre -p et le
mot de passe. On stoppe le serveur
MySQL par Ctrl+c pour revenir au
prompt).

b) Installation du serveur Apache :

cd ./root On copie les fichiers d’Apache dans le


cp apache_1.3.27.tar.gz /usr/local répertoire /usr/local

tar xzvf apache_1.3.27.tar.gz On décompresse l’archive.

cd /usr/local/apache_1.3.27 On se place dans le répertoire où a été


décompressée l’archive.

./configure --prefix=/www Les fichiers de configuration et les


commandes « bin » d’Apache se
trouveront dans le répertoire situé
après « prefix ».

c) Installation du langage de script PHP :

cp php-4.2.2.tar.gz /usr/local On copie les fichiers de PHP dans le


cd /usr/local répertoire /usr/local

tar xzvf php-4.2.2.tar.gz On décompresse l’archive.

cd /usr/local/ php-4.2.2 On se place dans le répertoire où a été


./configure --with-mysql=../mysql --with-config-file- décompressée l’archive.
path=/www/conf --with-apache=../apache_1.3.27 --
enable-tracks-vars

make Compilation

make install Installation

cp php.ini-dist /www/conf/php.ini On copie le fichier de configuration

IUT du Limousin - Licence Professionnelle – Projet tutoré 25


d) Configuration d’Apache et de MySQL pour qu’ils se lancent au
démarrage :

Pour cela, il nous faut se aller dans le répertoire : /etc/rc.d/rcX.d, où X représente le


numéro de démarrage de Linux : Entering Level = X, comme suit :

cd /etc/rc.d/rcX.d
ln -s /usr/local/mysql-3.22.xx/support-files/mysql.server S08mysql
Ainsi, MySQL sera lancé automatiquement à chaque démarrage.

ln -s /www/bin/apachectl S09apache
Avec cette commande, le serveur Apache sera exécuté à chaque démarrage.

e) Configuration du fichier du serveur Apache :


/www/conf/httpd.conf :

Il faut rajouter les deux lignes suivantes au fichier /www/conf/httpd.conf pour permettre
au serveur Apache de reconnaître les pages PHP et de les interpréter en tant que telles.

Addtype application/x-httpd-php .php


Addtype application/x-httpd-php .php3

3) Installation et configuration de PhpMyAdmin :

a) Installation :

Nous avons d’abord du créer un répertoire « adminbase » dans /www/htdocs puis lui attribuer
les droits nécessaires.
Voici les commandes que nous avons exécutées :

cp phpMyAdmin-2.3.2- php.tar.gz /www/htdocs Copie de « phpMyAdmin-2.3.2 –


php.tar.gz » dans le répertoire
/www/htdocs

tar xzvf phpMyAdmin-2.3.2- php.tar.gz Décompression de l’archive.

cd phpMyAdmin-2.3.2 On se déplace dans le bon répertoire.

cp ./www/htdocs/ phpMyAdmin-2.3.2 On copie phpMyAdmin-2.3.2 dans le


./www/htdocs/adminbase répertoire «./www/htdocs/adminbase».

IUT du Limousin - Licence Professionnelle – Projet tutoré 26


b) Configuration du fichier de PhpMyAdmin : config.inc.php :

Il nous faut éditer le fichier config.inc.php et aller aux lignes suivantes :

$cfg['PmaAbsoluteUri'] = 'http://localhost/adminbase';
Celle-ci permet de préciser l’URL du répertoire où se trouve PhpMyAdmin.

$cfg['Servers'][$i]['password'] = 'mot de passe';


Quand à celle-là, elle permet de préciser le mot de passe de l’utilisateur mysql que l’on a
déclaré lors de l’installation du serveur MySQL.

IUT du Limousin - Licence Professionnelle – Projet tutoré 27


4) Paramétrage de MyODBC :

Maintenant, nous travaillons sur le serveur applicatif NT.

Rappelons que MyODBC est le pilote ODBC utilisé pour accéder à un serveur MySQL.
Il est disponible sur de nombreuses plates-formes dont :

! toutes les plates-formes Windows : 95/98/NT/Me/2000/XP

! tous les systèmes UNIX

En ce qui concerne notre projet, nous avons installé la version 2.50.39 pour Windows
NT de MyODBC.
Ce n’est pas la dernière version, celle-ci étant la 3.51, mais c’est la plus stable du pilote.

A titre indicatif, voici l’adresse URL du site officiel de MyODBC (page de


téléchargement) :
http://www.mysql.com/downloads/api-myodbc-2.50.html

Voici les manipulations à suivre pour l’installation et le paramétrage de MyODBC.

Tout d’abord, la boîte de dialogue d'installation permet de choisir les drivers ODBC à
installer sur l’ordinateur. MyODBC ne propose que le driver pour MySQL. On le sélectionne.

Une fois le driver ODBC pour MySQL installé, il s'agit maintenant d'ajouter puis de
configurer une source de données pour se connecter à une base MySQL. Dans la boîte de
dialogue Data Source, on choisit donc « Add... », afin d'ajouter une source.

IUT du Limousin - Licence Professionnelle – Projet tutoré 28


Cette nouvelle source est une base de données MySQL, on choisira donc le driver
ODBC MySQL pour y accéder.

Il s'agit maintenant de configurer la nouvelle source afin d'établir la connexion.

IUT du Limousin - Licence Professionnelle – Projet tutoré 29


Ceci, étant fait, il ne reste plus qu’à utiliser la connexion créée et à la tester, mais après
s’être assuré que nous avons les droits d’accès adéquates sur le serveur MySQL.

5) Paramétrage des droits d’accès sur le serveur MySQL (sur le serveur


Linux) :

Le pilote MyODBC étant installé et configuré correctement, il nous faut maintenant


s’assurer que nous avons les droits d’accès nécessaires sur le serveur MySQL pour pouvoir
utiliser la connexion créée, auquel cas, il nous faudra les modifier.

La base de données « mysql » sur un serveur MySQL est la base dans laquelle sont
définies toutes les permissions et droits d’accès aux différentes bases.

Remarque : les manipulations décrites ci-dessous sont valables lorsque l’on utilise l’interface
graphique PhpMyAdmin mais l’on peut également les effectuer en lignes de commande (en
faisant des requêtes INSERT sur les tables « host » et « user »).

a) Configuration de la table « host » dans la base de données « mysql »


sur le serveur MySQL :

On insère dans la table « host » l’adresse IP du serveur contenant l’interface ACCESS


GIE2000 ainsi que le nom de la base MySQL correspondante à attaquer sur le serveur Linux.
Puis, on lui attribue uniquement les droits que l’on souhaite (ex : SELECT, INSERT…).

IUT du Limousin - Licence Professionnelle – Projet tutoré 30


Cette manipulation permet au serveur MySQL d’autoriser toutes les connexions sur la
base GIE2000 MySQL à partir de l’ordinateur 192.168.0.2 (d’après l’exemple ci-dessus).

b) Configuration de la table « user » dans la base de données « mysql »


sur le serveur MySQL :

On insère dans la table « user » l’adresse IP du serveur contenant l’interface ACCESS


GIE2000 puis le nom de l’utilisateur de la connexion MyODBC, ainsi que son mot de passe.
Puis, on lui attribue uniquement les droits que l’on souhaite (ex : SELECT, INSERT,…). Cette
manipulation permet d’autoriser l’utilisateur « gie_access » à se connecter au serveur MySQL
depuis l’ordinateur « 192.168.0.2 ».

6) Test du dialogue entre les deux bases de données :

Pour tester que les deux bases de données communiquent bien ensemble, il nous faut
les lier.
Ainsi, la dernière étape consiste à créer des liaisons de tables.

Tout d’abord, nous devons renommer les tables de la manière suivante :


«nom_de_table.sav ».

Ensuite, il ne reste plus qu’à créer les liaisons proprement dites.


Pour cela, réalisons les étapes suivantes :

IUT du Limousin - Licence Professionnelle – Projet tutoré 31


1- Ouverture du menu contextuel par un
click droit et choisir « lier les tables… ».

2- Sélectionner le type de source, donc :


« Base de données ODBC »

3- Sélectionner la connexion créée


précédemment correspondante dans le
gestionnaire ODBC.

IUT du Limousin - Licence Professionnelle – Projet tutoré 32


4- Sélectionner toutes les tables en cliquant
sur le bouton « Sélectionner tout »

5- Enfin, lier les tables.

7) Synchronisation ou liaison de tables ? :

a) Synchronisation :

Dans ce cas, nous conservons l’indépendance des bases de données : si une des base de
données vient à être défaillante, les données sont toujours disponibles sur l’autre.
Toutefois, cette solution présente deux inconvénients :

! pour mettre à jour les deux bases, nous devons les synchroniser par le biais de
routines plus ou moins complexes, et de plus, pas en temps réel,

! nous avons une redondance des données, d’où une perte de capacité de stockage
sur les disques du serveur.

Conclusion :
Pour ces raisons, et sachant que le serveur applicatif NT ne dispose plus de beaucoup d’espace
disque, nous n’avons pas retenu cette solution.

IUT du Limousin - Licence Professionnelle – Projet tutoré 33


b) Liaison de tables :

La liaison de tables consiste à créer un lien entre les tables de l’application GIE2000
sous MS ACCESS et les tables correspondantes de la base de données MySQL.

Cette solution a les avantages :

! d’économiser de la capacité de stockage sur les disques des serveurs, puisque les
données, bien que visibles depuis la base de données ACCESS, ne sont
réellement stockées que sur le serveur LINUX,

! de plus, la mise à jour des données se fait immédiatement.

Conclusion :
Aussi, et en tenant compte des remarques de Monsieur CUBAUT (diminution de l’espace
disque du serveur applicatif NT, et sécurité par système RAID5 sur le serveur Linux contre du
RAID1 pour le serveur NT), nous avons opté pour cette solution.

IUT du Limousin - Licence Professionnelle – Projet tutoré 34


III) Étude de fiabilité de la transmission par MyODBC :

A la demande de Monsieur CUBAUT, nous avons effectué quelques tests de fiabilité


afin de recenser les différents cas dans lesquels la connexion MyODBC viendrait à échouer.
Ces tests ont été réalisés avec la configuration de la phase de prototypage.

! Tout d’abord, nous avons simulé une panne de réseau en déconnectant le câble
RJ-45.
La connexion ne s’est pas établie et le message d’erreur est le suivant :

! Ensuite, nous avons simulé une panne du serveur MySQL en stoppant le service
« mysqld ».
De même, la connexion ne s’est pas établie et nous avons obtenu le même
message d’erreur que ci-dessus.

! Nous avons simulé une panne du serveur Apache en arrêtant le service « httpd ».
La connexion s’établit sans difficulté.

! Enfin, nous avons essayé de reproduire un « crash » du driver MyODBC en


désinstallant la connexion GIE2000 dans le gestionnaire ODBC.
Les données insérées sont erronées et l’on constate le « crash » lorsque l’on
reboote le serveur.

IUT du Limousin - Licence Professionnelle – Projet tutoré 35


IV) Problèmes lors de la migration de l’application ACCESS en une base
MySQL :

1) Problèmes que nous avons rencontrés lors de la migration des données de


MS ACCESS vers MySQL :

Lorsque nous avons mis en place, en test, la migration des données, nous avons dû faire
face à certains problèmes.
Aussi, voici quelques astuces pour y remédier.

! si l’on coche, lors de la configuration de MyODBC, « Trace MyODBC », nous


obtenons un journal des évènements, ou historique, de MyODBC qui se trouve
généralement dans C:\myodbc.log. Cela permet un déboguage.

! il y a également la case « Change BIGINT columns to INT » qui transforme


les types afin d’éviter les problèmes : c’est plus que vivement recommandé
lorsque l’on travaille avec MS ACCESS !

! il vaut mieux cocher « Return Matching Rows ». Cela est conseillé lorsque la
source de données est un logiciel de type Microsoft (EXCEL, ACCESS, SQL
SERVER, etc…)

2) Problèmes les plus rencontrés, en général, lors de la migration des données


d’une base Microsoft ACCESS vers une base MySQL :

Lorsque l’on s’est décidé pour migrer les données, par l’intermédiaire de tables liées,
d’une base Microsoft ACCESS vers une base de données MySQL sur un serveur UNIX ou
même sur un serveur Microsoft (car la cohabitation entre les deux formats de bases de données
n’est pas impossible !), un des points les plus importants est de s’assurer que les types de
champ de la base ACCESS sont bien reconnu et ont une correspondance dans la base MySQL.

En effet, bien que cette opération soit relativement simple à effectuer, c’est en général à
cause des conversions de types que l’on se retrouve avec des erreurs.

Ainsi, voici les principales recommandations à prendre en compte lors de la migration


des données d’une base vers l’autre :

! La première chose consiste à vérifier que votre table est bien construite, et donc
si elle possède bien une clé primaire,

! Ensuite, il est recommandé d’avoir une colonne de type « TIMESTAMP » dans


toutes les tables qui devront être modifiées (format de date unique) :

Description Stockage Au plus tôt Au plus tard


Date ET Heure 8 bits 4713 avant J-C. 1465001 après J-C.

! Lorsqu’un champ est de type « NUMAUTO » sous Access, il est très fortement
conseiller de le transformer en champ de type « INT » afin d’éviter les erreurs.

IUT du Limousin - Licence Professionnelle – Projet tutoré 36


! Il ne faut utiliser que des champs « DOUBLE FLOAT », Access échouant lors
de la comparaison de type « SIMPLE FLOAT »,

! Sous Windows NT, Access retournera les champs de type « BLOB » comme
des objets « OLE OBJECTS ».

! Les champs de type « MEMO » doivent être transformés en type « TEXT ».

! Access ne gère pas toujours correctement les champs de type « DATE ».


En cas de souci, il est conseillé de modifier ces champs en type
« DATETIME »,

! Les champs Access de type « OCTET » sont exportés au format « TINYINT »


au lieu de « TINYINT UNSIGNED » ; cela empêche les nombres compris
entre -128 et 255 d’être stockés correctement dans la table.
Pour remédier à ce problème, il faut convertir ce champ (dans Access) en champ
de type « ENTIER »,

! Dans certains cas, Access peut générer des requêtes SQL illégales, que MySQL
ne peut pas comprendre. On peut corriger cela en sélectionnant l’option
« QUERY | SQLSPECIFIC | PASS-THROUGH » dans le menu d’Access,

! Enfin, il est conseillé de choisir l’option « RETURN MATCHING ROWS »


lors de la configuration de MyODBC.

Par défaut, la conversion de type se fait de la manière suivante :

Types MS ACCESS Types MySQL


Texte TEXT
Mémo MEDIUM EXT
Nombre (entier long) INT
Nombre (octet) TINYINT
Date/Heure DATETIME
Monétaire DOUBLE
Oui/Non TINYINT
OLE MEDIUM BLOB
Lien hypertexte MEDIUM TEXT

Enfin, il se peut que l’on ait à modifier la structure d’une table MySQL liée à une base
Access. On doit alors mettre à jour la liaison de la table.

! Sous MS Access 10, on peut utiliser le gestionnaire de table liée.

! Sinon, pour les autres versions, il faut supprimer la table liée et rétablir la
liaison.

IUT du Limousin - Licence Professionnelle – Projet tutoré 37


V) Développement des pages PHP nécessaires à la publication du site sur
l’Intranet de l’Inspection Académique :

1) Description :

Tout d’abord, nous nous sommes beaucoup servi de l’application GIE2000 existante,
notamment au niveau des états.
Enfin, nous avons dû, selon les souhaits de Monsieur CUBAUT, respecter le graphisme déjà
établi par les stagiaires précédents, et ce, en utilisant les feuilles de styles existantes.

2) Organisation du site :

Le schéma suivant représente l’organisation et le cheminement à travers les différentes


pages qui constituent le site.

IUT du Limousin - Licence Professionnelle – Projet tutoré 38


3) Implémentation :

a) Accès à la base de données :

Les variables de connexion, sont stockées dans un fichier à part. Ce fichier est inclus
pour chaque connexion.

Connexion.php
<?
$host="localhost"; Les pages PHP sont situées sur le même
poste que le serveur de base de données
$user="root"; Super Utilisateur mysql
$pwd="..........."; Mot de passe mysql
$database="GIE2000"; Base de données
?>

b) Résultats sous forme de pages Web :

Il est nécessaire de disposer les différents résultats sous formes de pages dans les menus
« éditer » et « rechercher », car il peut y avoir plus de mille résultats suivant les requêtes.
Les résultats sous formes de pages sont récupérées à partir d’une seule variable : $page.

if (!empty($HTTP_POST_VARS["page"])) $page=$HTTP_POST_VARS["page"];
else $page=1;

Pour optimiser les résultats, il est nécessaire d’effectuer deux requêtes différentes : une
pour calculer le nombre de résultats, et une pour récupérer les résultats de la page.

1- Première requête :

$sql0 = "SELECT COUNT(*) FROM … WHERE …";

$req0=mysql_query($sql0, $cc);

$count = mysql_result($req0,0,0); Nombre de résultats total


mysql_free_result($req0);

$nbparboucle = 20; Nombre de résultat à afficher par


page
$finboucle = $page * $nbparboucle; Fin de boucle. Ex : $page=3 =>
$finboucle=60
$debutboucle = $finboucle - $nbparboucle; Début de boucle. Ex : 60-20=40

if ($count < $finboucle) $finboucle = $count; Utile pour la dernière page

$lastpage=$count / $nbparboucle ; Calcul de la dernière page

if ($lastpage!=intval($lastpage)) Dernière page arrondie


$lastpage=intval($lastpage)+1;

IUT du Limousin - Licence Professionnelle – Projet tutoré 39


Si $ count=0, alors il n’y a aucun résultat, on ne va pas plus loin, sinon on affiche les résultats.

Il y a $count résultats résultats de $debutboucle + 1 à $finboucle


Ex : Il y a 229 résultats résultats de 101 à 120

2- Deuxième requête :

Pour optimiser la requête, on lui impose une limitation.

$sql1 = "SELECT … FROM … WHERE … LIMIT $debutboucle, $nbparboucle";

Premier champ : Le début de la requête.


Deuxième champ : Le nombre de résultat à récupérer.

Ex : LIMIT 100, 20

On affiche ensuite les résultats obtenus, puis la page en cours et des liens vers la
première page, la page précédente, la page suivante et la dernière page.

Première page : <input type=hidden name=page value=1>


Page précédente $i=$page-1; <input type=hidden name=page value=$i>
Page en cours : page $page/$lastpage
Page suivante : $i=$page+1; <input type=hidden name=page value=$i>
Dernière page : <input type=hidden name=page value=$lastpage>

IUT du Limousin - Licence Professionnelle – Projet tutoré 40


c) Éditer :

1- L’existant sur ACCESS :

La partie « éditer » fait référence à l’édition des données du menu général de


l’application Access. C’est un accès en lecture seulement.

Pour la plupart des éditions de données, il est possible de récupérer les requêtes à partir
de l’application Access. On édite une liste en mode création et on récupère sa source. On
modifie légèrement la requête pour la rendre valide pour Mysql (INNER JOIN à remplacer).

IUT du Limousin - Licence Professionnelle – Projet tutoré 41


2- Les quatre types d’édition :

Sur l’application intranet, il y a quatre différents types d’édition : lister les intervenants,
les interventions, les écoles et les organismes. Tous les types d’édition d’Access sont repris.

! Lister les intervenants :

Il est possible de lister les intervenants


- par circonscription, discipline, école et localisation.
- sans projet et non agréés.
Chaque choix renvoie à une page différente.

Des fonctionnalités ont été rajoutées par rapport à Access. « Trié par » et la possibilité
d’éditer uniquement la partie qui nous intéresse. Par exemple, pour la liste des intervenants par
écoles, il est possible de trier par nom d’intervenant ou par numéro d’agrément, et de choisir un
sigle et une école en particulier.

IUT du Limousin - Licence Professionnelle – Projet tutoré 42


! Lister les interventions :

Il est possible de lister les interventions par cadre intervention, de lister les projets liés à
une intervention et les projets non liés.

! Lister les écoles :

Il est possible de lister les écoles par circonscriptions et par sigles.

! Lister les organismes :

Il est possible de lister les organismes par cadre d’intervention.

3- Résultats :

Les variables « trié par » et les choix possibles sont transmis sur les différentes pages.
Exemple avec « Lister les intervenants par école, trié par nom intervenant, sigle : EMC, école :
indifférent »

$sigle=$HTTP_POST_VARS["sigle"];
$ecole=$HTTP_POST_VARS["ecole"];
$oderby=$HTTP_POST_VARS["orderby"];

$sigle reçoit ‘EMC’, $ecole ne reçoit rien et $orderby reçoit ‘IAN.nomint’.


La requête SQL est modifiée en fonction des variables récupérées.

IUT du Limousin - Licence Professionnelle – Projet tutoré 43


Les résultats peuvent être nombreux (parfois mille résultats), c’est pourquoi ils sont édités sous
formes de pages (voir le paragraphe suivant).

if ($sigle != "none") $sql16="AND E.sigleecl='$sigle' ";


else $sql12="";
if ($ecole != "none") $sql17="AND E.nomecole='$ecole' ";
else $sql13="";

$sql11 = "SELECT E.sigleecl, … FROM INTERVENANT IAN, … WHERE … ";


$sql14 = "ORDER BY E.sigleecl, E.nomecole, $orderby ";

$sql1 = $sql11.$sql12.$sql13.$sql14
$req1=mysql_query($sql1, $cc);

4- Rechercher :

En plus des fonctionnalités d’édition des données, il est possible de rechercher un


intervenant, une école ou une intervention, une possibilité qui n’existe pas sur l’application
Access.

IUT du Limousin - Licence Professionnelle – Projet tutoré 44


Les différentes recherches se font sur divers critères choisis par l’utilisateur. Il peut
aussi trier les résultats comme il le souhaite. Les requêtes pour les résultats ont le même
principe que pour le menu éditer.

! Rechercher un intervenant :

! Rechercher une intervention :

! Rechercher une école :

IUT du Limousin - Licence Professionnelle – Projet tutoré 45


5- Détails :

A partir du menu « rechercher » ou « éditer », il est possible d’avoir des détails sur les
intervenants, les interventions et les écoles.

! Détail d’un intervenant :

Un intervenant a une agrégation ou n’en a pas. Il a une activité qui dépend de sa


discipline et de sa circonscription. Il a une, aucune ou plusieurs interventions appliquée(s) en
école. Il est possible d’avoir plus de détail sur le(s) école(s) et intervention(s) associée(s).

! Détail d’une intervention :

IUT du Limousin - Licence Professionnelle – Projet tutoré 46


Une intervention est définie par un projet, une école, un intervenant et les cadres
d’interventions s’il y en a. Il est possible d’avoir plus de détail sur l’école et l’intervenant
associées.

! Détail d’une école :

Une école est définie par un projet, une école, un intervenant et les cadres
d’interventions s’il y en a. Il est possible d’avoir plus de détail sur l’école et l’intervenant
associés.

IUT du Limousin - Licence Professionnelle – Projet tutoré 47


C) Phase de test sur les serveurs de l’Inspection Académique :

Cette phase va nous permettre de tester notre solution sur les serveurs de tests mis à
notre disposition par le service informatique de l’Inspection Académique.

! Paramétrage et test d’une connexion MyODBC entre un serveur applicatif


ACCESS et un serveur MYSQL sur un ordinateur sous LINUX.

! Présentation de modèles de pages de consultation écrites en PHP.

Cette phase de test nous a permis de :

! valider les modèles de pages de consultation PHP,

! corriger certains bugs de compatibilité entre ACCESS et MySQL

IUT du Limousin - Licence Professionnelle – Projet tutoré 48


D) Mise en production sur les serveurs de l’Inspection
Académique :
I) Procédure de mise en oeuvre sur les serveurs de production :

Nous arrivons maintenant à la phase de concrétisation de notre projet.

D’une part, elle va nous permettre de valider les deux phases précédentes (analyse et
prototypage).
D’autre part, elle nous confronte aux réalités de l’entreprise :
! obligation de résultat,
! mise en place d’une solution adaptée et optimisée,
! respect du délai,
! respect de certaines contraintes initiales.

PLAN D’ACTION RETENU

1- Recréation de la structure correspondante à la base de données ACCESS


convertie en MySQL sur le serveur de production.

2- Configuration des droits MySQL afin d’accepter une connexion MyODBC.

3- Configuration du pilote MyODBC sur le serveur applicatif NT contenant


l’interface de saisie GIE2000 et mise en place des liaisons de tables MySQL.

4- Remplissage de la base de données MySQL avec les données de l’ancien


support GIE2000.

5- Optimisation du code de l’application GIE2000 et correction de certains


bugs.

6- Mise en place et test des pages PHP sur le serveur Apache.

7- Remarque importante

1) Recréation de la structure correspondante à la base de données ACCESS


convertie en MySQL sur le serveur de production :

La première étape consiste à créer la structure de la base MySQL sur le serveur de


production. Pour cela, il existe plusieurs méthodes :

IUT du Limousin - Licence Professionnelle – Projet tutoré 49


! S’il on dispose du logiciel phpMyAdmin ou Webmin sur le serveur de
production :

Si ce logiciel est installé sur le serveur, on crée la structure de la base Mysql qui va
accueillir les données de l’interface ACCESS. Cette méthode se réalise par l’interface
graphique de phpMyAdmin.
La procédure est la suivante :
" création de la base par interface graphique
" vérification de la structure

! Création de la structure de la base à partir d’une source SQL :

La source SQL être un fichier texte contenant les requêtes SQL permettant de créer
uniquement la structure de la base MySQL. On doit réinjecter les requêtes de création de
structure contenues dans le fichier au serveur MySQL.
La procédure est la suivante :
" connexion au serveur MySQL (on exécute les requêtes contenues dans le
fichier en redirigeant son contenu vers l’entrée standard du serveur
MySQL) :
./mysql -u root -pmot_de_passe- < «nom_du_fichier_SQL »

" on se déconnecte du serveur MySQL :


mysql> exit

" puis, on se reconnecte à MySQL pour voi si les opérations ont bien été
effectuées :
./mysql -u root -pmot_de_passe-

On liste toutes les bases du serveur :


mysql> show databases
mysql> GIE2000
mysql>

" on se connecte à la base GIE créée afin de vérifier si toutes les tables ont
été créées :
mysql> connect GIE2000
On liste toutes les tables de la base :
mysql> show tables
mysql>

" on peut aussi vérifier la structure de chaque table par la commande


suivante :
(Permet de lister les champs d’une table)
mysql> desc « nom_de_table »
mysql>

IUT du Limousin - Licence Professionnelle – Projet tutoré 50


REMARQUE IMPORTANTE : vérifier si le fichier SQL contient la commande de création de
la base « CREATE DATABASE GIE2000 ». (voir le fichier de création en annexe 1)

Si le fichier ne contient pas d’instruction CREATE DATABASE, il y a 2 solutions :


soit on édite le fichier SQL et on y rajoute l’instruction de création de base avant
de l’exécuter dans MySQL.

soit on se connecte au serveur MYSQL et on crée manuellement une base sans


structure avant d’exécuter le fichier SQL comme précédemment :

// connexion au serveur MySQL


./mysql -u root -pmot_de_passe
// on liste toutes les tables de la base
mysql> connect GIE2000
mysql> show tables

2) Configuration des droits MySQL afin d’accepter une connexion MyODBC :

La base mysql sur un serveur MySQL est la base dans laquelle sont définies toutes les
permissions et droits d’accès aux différentes bases.
Remarque :
Les manipulations ci-dessous sont décrites lorsque l’on utilise l’interface phpMyAdmin mais
on peut également les effectuer en mode texte (en faisant des requêtes INSERT sur les tables
« host » et « user »).

a) Configuration de la table « host » de la base « mysql » sur le serveur


MySQL :

IUT du Limousin - Licence Professionnelle – Projet tutoré 51


On insère dans la table « host » l’adresse IP du serveur contenant l’interface ACCESS
GIE2000 ainsi que le nom de la base MySQL correspondante à attaquer sur le serveur linux.
Puis, on lui attribue uniquement les droits que l’on souhaite. Cette manipulation permet au
serveur MySQL d’autoriser toutes les connexions sur la base GIE2000 MySQL à partir de
l’ordinateur 192.168.0.2 (d’après l’exemple ci-dessus).

b) Configuration de la table « user » de la base « mysql » sur le serveur


MySQL :

On insère dans la table « user » l’adresse IP du serveur contenant l’interface ACCESS


GIE2000 puis le nom de l’utilisateur de la connexion MyODBC ainsi que son mot de passe.
Puis, on lui attribue uniquement les droits que l’on souhaite. Cette manipulation permet
d’autoriser l’utilisateur « gie_access » à se connecter au serveur MySQL depuis l’ordinateur
« 192.168.0.2 ».

c) Les mêmes manipulations que ci-dessus mais en mode texte (au cas
où l’utilitaire phpMyAdmin ne serait pas installé sur le serveur) :

//Connexion au serveur MySQL


./mysql –u root –pmot_de_passe
//On se connecte à la base « mysql » du serveur MySQL
mysql> connect mysql

//On tape et on exécute la première requête correspondant à l’insertion dans la table « host »
mysql> insert into host values
mysql> (‘192.168.0.2’,’GIE2000 ‘,’y’,’y’, ...etc)
mysql> ;
(On ne met à ‘y’ uniquement les privilèges qui sont nécessaires)

IUT du Limousin - Licence Professionnelle – Projet tutoré 52


//On exécute la requête correspondant à l’insertion dans la table « user »
mysql> insert into user values
mysql> (‘162.168.0.2’,’gie_access’,’labo87’,’y’,’y’, …etc)
mysql> ;
(On ne met à ‘y’ uniquement les privilèges qui sont nécessaires)

3) Configuration du pilote MyODBC sur le serveur applicatif NT contenant


l’interface de saisie GIE2000 et mise en place des liaisons de tables
MySQL :

a) Installation de MyODBC :

La boîte de dialogue d'installation permet de choisir les drivers ODBC à installer sur la
machine. MyODBC ne propose que le driver pour MySQL. On le sélectionne.

Une fois le driver ODBC pour MySQL installé, il s'agit maintenant d'ajouter puis de
configurer une source de données pour se connecter à une base MySQL. Dans la boîte de
dialogue Data Source, on choisit donc « Add… » afin d'ajouter une source.

IUT du Limousin - Licence Professionnelle – Projet tutoré 53


Cette nouvelle source est une base MySQL, on choisira donc le driver ODBC MySQL
pour y accéder.

Il s'agit maintenant de configurer la nouvelle source afin d'établir la connexion.

REMARQUES IMPORTANTES : penser à appliquer les conseils vus lors des tests de fiabilité
de transmission de MyODBC.

IUT du Limousin - Licence Professionnelle – Projet tutoré 54


b) Mise en place des liaisons de tables sur l’application GIE2000 sur le
serveur NT :

Pour cela, nous devons suivre les étapes suivantes :


! renommer toutes les tables de la manière suivante : « nom_table_sav »,
! effectuer les liaisons comme nous l’avons fait dans la phase de tests (voir
II/B/6/) :
" click droit
" sélectionner « liaison de table »
" sélectionner « à partir d’une source de données ODBC »
" sélectionner le pointeur MyODBC correspondant dans le gestionnaire
ODBC
" lier les tables

4) Remplissage de la base de données MySQL avec les données de l’ancien


support GIE2000 :

On effectue des requêtes d’insertion en mode QBE ACCESS afin de transférer les
données des tables ACCESS GIE2000 directement dans GIE MySQL par l’intermédiaire des
liaisons de tables.

! tout d’abord, on crée une nouvelle requête en mode création,


! on clique sur le bouton ajouter une table # ,
! on ajoute une des tables renommées en « _sav ».

IUT du Limousin - Licence Professionnelle – Projet tutoré 55


! on clique sur « type de requête » et on sélectionne « requête ajout »

! on sélectionne la liaison de table correspondante et on l’ajoute

! on double-clique sur le champ générique « * » de la table « _sav »

! enfin, on exécute la requête

IUT du Limousin - Licence Professionnelle – Projet tutoré 56


! il faut réitérer cette opération pour toutes les tables. Pour la mise en place sur le
serveur de production, nous avions déjà prédéfini ces requêtes.

5) Optimisation du code de l’application GIE2000 et correction de certains


bugs :

a) Optimisation du code :

! Première amélioration :

Pour ajouter un intervenant, nous avons modifié le code de la procédure d’ajout.

----------------Correction pour le numéro automatique----------------


Dim num_intervenant As Integer

‘récupération du numéro du dernier intervenant enregistré s’il existe


If rstIvnt.RecordCount<>0 Then
rstIvnt.MoveLast
num_intervenant = rstIvnt ![numint]+1
Else
Num_intervenant = 1
End If
‘---------------------------------------------------------------------------------------------------
With rstIvnt
.AddNew
‘---------------------------------------------------------------------------------------------------
‘affectation du numint

IUT du Limousin - Licence Professionnelle – Projet tutoré 57


rstIvnt ![numint] = num_intervenant
‘---------------------------------------------------------------------------------------------------
rstIvnt ![nomint] = txt_Nomint.Value

! Seconde amélioration :

On ne pouvait pas ajouter d’intervention à cause de la structure de la table


« LIAISON » qui était mauvaise. De plus, lorsque l’on faisait la liaison, il fallait tenir compte
du message d’avertissement « cocher les 2 champs qui forment la clé primaire ».

----------------Correction de la structure SQL-----------------


CREATE TABLE ‘liaison’ (
‘NumIntn’ INT NOT NULL,
`NumCdn` INT NOT NULL,
‘numos’ INT,
PRIMARY KEY (‘NumIntn’, ‘NumCdn’)
);

b) Corrections de certains bugs :

! on ne pouvait pas ajouter de discipline dans le formulaire « discipline » car les


champs étaient bloqués,

! lorsque l’on ajoutait un organisme, il écrasait le premier enregistrement de la


table « ORGANISME » au lieu de s’ajouter à la fin,

! le bouton « Supprimer » du formulaire « école » ne fonctionnait pas,

6) Mise en place des pages PHP :

Les étapes suivantes ont été effectuées lors de cette phase.

! copier le dossier contenant les pages PHP dans le répertoire contenant les autres
sites de l’Intranet,

! définir les bons droits sur le dossier du site : le mieux est de mettre les mêmes
que pour les autres sites du dossier,

! tester les pages PHP.

IUT du Limousin - Licence Professionnelle – Projet tutoré 58


7) Remarques importantes :

Pour sauvegarder la base GIE2000 du serveur MySQL, il existe deux solutions majeures :

! mysqldump : sauvegarde « à chaud »


(voir annexe 2)
mysqldump –u root –p GIE2000 > chemin_de_sauvegarde/GIE2000.sav

Il existe plusieurs options possibles :


" -d : sauvegarde de la structure uniquement
" -t : sauvegarde des données uniquement
" --add-drop-table : supprimer les tables si elles existent

Restauration : mysql –u root –p < chemin_de_sauvegarde/GIE2000.sav

! copie des fichiers de données de la base : sauvegarde « à froid »

IUT du Limousin - Licence Professionnelle – Projet tutoré 59


CONCLUSION

Le thème de notre projet tutoré nous a permis de faire des recherches dans plusieurs
domaines, à savoir : les environnements de Microsoft avec Windows et UNIX avec Linux, les
bases de données (sous Microsoft et Unix), la mise en place de pages Web dynamiques avec le
langage PHP…

De plus, bien que le projet soit aujourd’hui fonctionnel, il est toujours possible d’y
apporter des améliorations.
Ainsi, rien n’interdit de développer des pages PHP de saisie pour remplacer les
formulaires de saisie de l’application ACCESS GIE2000.
De ce fait, à terme, la base de données du serveur applicatif NT pourra être supprimée
et on obtiendra un vrai système client/serveur.

IUT du Limousin - Licence Professionnelle – Projet tutoré 60


IUT du Limousin - Licence Professionnelle – Projet tutoré 61
ANNEXE 1

Fichier de création de la structure de la base GIE2000 MySQL :

CREATE TABLE annee_agrement (


numanag varchar(50) NOT NULL default '',
PRIMARY KEY (numanag)
);

CREATE TABLE archive (


numarch int(11) NOT NULL auto_increment,
ancnumpj int(11) default '0',
libpj varchar(50) default NULL,
numintv int(11) default '0',
afreq varchar(50) default NULL,
anumint varchar(50) default NULL,
anumeco int(11) default '0',
PRIMARY KEY (numarch)
);

CREATE TABLE cadre_intervention (


numcdint int(11) NOT NULL default '0',
libcdint varchar(50) default NULL,
codeorg int(11) default NULL,
PRIMARY KEY (numcdint)
);

CREATE TABLE circonscription (


codeccpt varchar(50) NOT NULL default '',
libccpt varchar(50) default NULL,
);

CREATE TABLE code (


suppnum varchar(50) NOT NULL default '',
PRIMARY KEY (suppnum)
);

CREATE TABLE discipline (


codedisc varchar(50) NOT NULL default '',
libdisc varchar(50) default NULL,
PRIMARY KEY (codedisc)
);

IUT du Limousin - Licence Professionnelle – Projet tutoré 62


CREATE TABLE ecole (
numecole int(11) NOT NULL default '0',
nomecole varchar(50) default NULL,
adrecole varchar(50) default NULL,
cpecole varchar(5) default NULL,
comecole varchar(50) default NULL,
codeccpt varchar(50) default NULL,
sigleecl varchar(50) default NULL,
PRIMARY KEY (numecole)
);

CREATE TABLE intervenant (


numint int(11) NOT NULL default '0',
numagr varchar(50) default NULL,
nomint varchar(50) default NULL,
prenomin varchar(50) default NULL,
dateagr datetime default NULL,
codeagr int(11) default NULL,
codedisc varchar(50) default NULL,
numanne varchar(50) default NULL,
numanag varchar(50) default NULL,
codeccpt varchar(50) default NULL,
PRIMARY KEY (numint)
);

CREATE TABLE intervention (


numintn int(11) NOT NULL default '0',
freqintn varchar(50) default NULL,
numpj int(11) default NULL,
numint int(11) default NULL,
codeccpt varchar(50) default NULL,
numecole int(11) default NULL,
dateint datetime default NULL,
PRIMARY KEY (numintn)
);

CREATE TABLE liaison (


NumIntn int(11) NOT NULL default '0',
NumCdn int(11) NOT NULL default '0',
numos int(11) default NULL,
PRIMARY KEY (NumIntn,NumCdn)
);

IUT du Limousin - Licence Professionnelle – Projet tutoré 63


CREATE TABLE organisme_support (
numos int(11) NOT NULL default '0',
raisoc varchar(50) default NULL,
adros varchar(50) default NULL,
numCdi int(11) default NULL,
PRIMARY KEY (numos)
);

CREATE TABLE projet_pedagogique (


numpj int(11) NOT NULL default '0',
intactn varchar(50) default NULL,
PRIMARY KEY (numpj)
);

CREATE TABLE sauvegarde (


chemin varchar(100) NOT NULL default ''
);

CREATE TABLE sigle (


numsigl varchar(50) NOT NULL default '',
libsigl varchar(50) default NULL,
PRIMARY KEY (numsigl)
);

CREATE TABLE utilisateur (


NumUti int(11) NOT NULL auto_increment,
NomUti varchar(50) default NULL,
MotPasse varchar(50) default NULL,
Groupe varchar(50) default NULL,
PRIMARY KEY (NumUti)
);

IUT du Limousin - Licence Professionnelle – Projet tutoré 64


ANNEXE 2
Exemple de fichier généré à partir de « mysqldump » :

-- MySQL dump 8.21


--
-- Host: localhost Database: GIE2000
---------------------------------------------------------
-- Server version 3.23.49-max-nt

--
-- Table structure for table 'annee_agrement'
--

DROP TABLE IF EXISTS annee_agrement;


CREATE TABLE annee_agrement (
numanag varchar(50) NOT NULL default '',
PRIMARY KEY (numanag)
) TYPE=MyISAM;

--
-- Dumping data for table 'annee_agrement'
--

INSERT INTO annee_agrement VALUES ('0005');


INSERT INTO annee_agrement VALUES ('0153');
INSERT INTO annee_agrement VALUES ('0606');
INSERT INTO annee_agrement VALUES ('0607');
INSERT INTO annee_agrement VALUES ('0608');
INSERT INTO annee_agrement VALUES ('0609');
INSERT INTO annee_agrement VALUES ('0610');
INSERT INTO annee_agrement VALUES ('0611');
INSERT INTO annee_agrement VALUES ('0612');
INSERT INTO annee_agrement VALUES ('0613');
INSERT INTO annee_agrement VALUES ('0614');
INSERT INTO annee_agrement VALUES ('0615');
INSERT INTO annee_agrement VALUES ('0616');
INSERT INTO annee_agrement VALUES ('0617');
INSERT INTO annee_agrement VALUES ('0618');
INSERT INTO annee_agrement VALUES ('0619');
...

IUT du Limousin - Licence Professionnelle – Projet tutoré 65


--
-- Table structure for table 'archive'
--

DROP TABLE IF EXISTS archive;


CREATE TABLE archive (
numarch int(11) NOT NULL auto_increment,
ancnumpj int(11) default '0',
libpj varchar(50) default NULL,
numintv int(11) default '0',
afreq varchar(50) default NULL,
anumint varchar(50) default NULL,
anumeco int(11) default '0',
PRIMARY KEY (numarch)
) TYPE=MyISAM;

--
-- Dumping data for table 'archive'
--

INSERT INTO archive VALUES (12,0,NULL,19,'ponctuelle','462',112);


INSERT INTO archive VALUES (13,0,NULL,24,'ponctuelle','470',139);
INSERT INTO archive VALUES (14,0,NULL,105,'ponctuelle','529',34);
INSERT INTO archive VALUES (15,0,NULL,106,'ponctuelle','529',34);
INSERT INTO archive VALUES (16,0,NULL,107,'ponctuelle','529',34);
INSERT INTO archive VALUES (17,0,NULL,108,'ponctuelle','529',34);
INSERT INTO archive VALUES (18,0,NULL,109,'ponctuelle','529',34);
INSERT INTO archive VALUES (19,0,NULL,61,'ponctuelle','500',134);
INSERT INTO archive VALUES (20,0,NULL,110,'ponctuelle','500',1);
INSERT INTO archive VALUES (21,0,NULL,111,'ponctuelle','500',1);
INSERT INTO archive VALUES (22,0,NULL,104,'ponctuelle','43',34);
INSERT INTO archive VALUES (25,0,NULL,6,'ponctuelle','455',60);

--
-- Table structure for table 'cadre_intervention'
--

DROP TABLE IF EXISTS cadre_intervention;


CREATE TABLE cadre_intervention (
numcdint int(11) NOT NULL default '0',
libcdint varchar(50) default NULL,
codeorg int(11) default NULL,
PRIMARY KEY (numcdint)
) TYPE=MyISAM;

--
-- Dumping data for table 'cadre_intervention'
--

IUT du Limousin - Licence Professionnelle – Projet tutoré 66


INSERT INTO cadre_intervention VALUES (1,'bénévole',0);
INSERT INTO cadre_intervention VALUES (2,'rémunérée',0);
INSERT INTO cadre_intervention VALUES (3,'commune',-1);
INSERT INTO cadre_intervention VALUES (4,'association',-1);
INSERT INTO cadre_intervention VALUES (5,'groupement professionnel',-1);
INSERT INTO cadre_intervention VALUES (6,'communauté territoriale',-1);
INSERT INTO cadre_intervention VALUES (7,'exercice libéral',0);
INSERT INTO cadre_intervention VALUES (8,'parents d\'élève',0);
INSERT INTO cadre_intervention VALUES (9,'convention S.T.A.P.S.',0);
INSERT INTO cadre_intervention VALUES (10,'organisateur de séjour',-1);

--
-- Table structure for table 'circonscription'
--

DROP TABLE IF EXISTS circonscription;


CREATE TABLE circonscription (
codeccpt varchar(50) NOT NULL default '',
libccpt varchar(50) default NULL,
PRIMARY KEY (codeccpt)
) TYPE=MyISAM;

--
-- Dumping data for table 'circonscription'
--

INSERT INTO circonscription VALUES ('B','BELLAC');


INSERT INTO circonscription VALUES ('D','DEPARTEMENT');
INSERT INTO circonscription VALUES ('L1','LIMOGES I');
INSERT INTO circonscription VALUES ('L2','LIMOGES II');
INSERT INTO circonscription VALUES ('L3','LIMOGES III');
INSERT INTO circonscription VALUES ('L4','LIMOGES IV');
INSERT INTO circonscription VALUES ('SY','SAINT-YRIEIX');

--
-- Table structure for table 'code'
--

DROP TABLE IF EXISTS code;


CREATE TABLE code (
suppnum varchar(50) NOT NULL default '',
PRIMARY KEY (suppnum)
) TYPE=MyISAM;

--
-- Dumping data for table 'code'
--

IUT du Limousin - Licence Professionnelle – Projet tutoré 67


INSERT INTO code VALUES ('000000039');

--
-- Table structure for table 'discipline'
--

DROP TABLE IF EXISTS discipline;


CREATE TABLE discipline (
codedisc varchar(50) NOT NULL default '',
libdisc varchar(50) default NULL,
PRIMARY KEY (codedisc)
) TYPE=MyISAM;

--
-- Dumping data for table 'discipline'
--

INSERT INTO discipline VALUES ('AG','EPS, activités généralistes');


INSERT INTO discipline VALUES ('AP','arts plastiques');
INSERT INTO discipline VALUES ('AS','EPS, activités spécifiques');
INSERT INTO discipline VALUES ('CC','classe culturelle');
INSERT INTO discipline VALUES ('DA','danse');
INSERT INTO discipline VALUES ('ED','education musicale');
INSERT INTO discipline VALUES ('IN','informatique');
INSERT INTO discipline VALUES ('LV','langue vivante');
INSERT INTO discipline VALUES ('MU','education musicale');
INSERT INTO discipline VALUES ('NN','autres');
INSERT INTO discipline VALUES ('OC','langue régionale');
INSERT INTO discipline VALUES ('TH','théâtre');

--
-- Table structure for table 'ecole'
--

DROP TABLE IF EXISTS ecole;


CREATE TABLE ecole (
numecole int(11) NOT NULL default '0',
nomecole varchar(50) default NULL,
adrecole varchar(50) default NULL,
cpecole varchar(5) default NULL,
comecole varchar(50) default NULL,
codeccpt varchar(50) default NULL,
sigleecl varchar(50) default NULL,
PRIMARY KEY (numecole)
) TYPE=MyISAM;

--
-- Dumping data for table 'ecole'

IUT du Limousin - Licence Professionnelle – Projet tutoré 68


--

INSERT INTO ecole VALUES (0,'E.E. COGANC LA FORET','LE BOURG - COGNAC LA


FORET','87310','COGNAC LA FORET','L1','EPC');
INSERT INTO ecole VALUES (1,'DE SAGNAT','HAMEAU DE
SAGNAT','87250','BESSINES','L3','EMC');
INSERT INTO ecole VALUES (2,'GLANE','GLANE RTE DE SAULGOND','87200','ST
JUNIEN','L1','EPC');
INSERT INTO ecole VALUES (3,'PUY MERY','HAMEAU DE PUY MERY','87110','LE
VIGEN','L4','EPC');
INSERT INTO ecole VALUES (4,'10 RUE TURGOT','10 RUE
TURGOT','87350','PANAZOL','L4','EPC');
INSERT INTO ecole VALUES (5,'4 RUE TURGOT','4 RUE
TURGOT','87350','PANAZOL','L4','EPC');
INSERT INTO ecole VALUES (6,'A. BRIAND','R BECQUEREL','87410','LE
PALAIS/VIENNE','L4','ECU');

--
-- Table structure for table 'intervenant'
--

DROP TABLE IF EXISTS intervenant;


CREATE TABLE intervenant (
numint int(11) NOT NULL default '0',
numagr varchar(50) default NULL,
nomint varchar(50) default NULL,
prenomin varchar(50) default NULL,
dateagr datetime default NULL,
codeagr int(11) default NULL,
codedisc varchar(50) default NULL,
numanne varchar(50) default NULL,
numanag varchar(50) default NULL,
codeccpt varchar(50) default NULL,
PRIMARY KEY (numint)
) TYPE=MyISAM;

--
-- Dumping data for table 'intervenant'
--

INSERT INTO intervenant VALUES (3,'B020809AS','ALLARD','martine','2002-08-22


00:00:00',-1,'AS','02','0809','B');
INSERT INTO intervenant VALUES (4,'L1020810AS','ALLORENT
FERNANDEZ','isabelle','2002-08-22 00:00:00',-1,'AS','02','0810','L1');
INSERT INTO intervenant VALUES (5,'L2020811AS','AMARA','zahia','2002-08-22
00:00:00',-1,'AS','02','0811','L2');

IUT du Limousin - Licence Professionnelle – Projet tutoré 69


INSERT INTO intervenant VALUES (6,'L4020812AS','ANDRIEUX','veronique','2002-08-22
00:00:00',-1,'AS','02','0812','L4');
INSERT INTO intervenant VALUES (7,'L1010007AS','ANTIGNY','christiane',NULL,-
1,'AS','01','0007','L1');
INSERT INTO intervenant VALUES (8,'L3010008AS','ANTOINE','agnes',NULL,-
1,'AS','01','0008','L3');
INSERT INTO intervenant VALUES (9,'L4010009AS','ARRONDEAU','philippe',NULL,-
1,'AS','01','0009','L4');
INSERT INTO intervenant VALUES (10,'L4010010AS','AUDOIN','philippe',NULL,-
1,'AS','01','0010','L4');
INSERT INTO intervenant VALUES (11,'B010011AS','AUGIZEAU','isabelle',NULL,-
1,'AS','01','0011','B');
...

--
-- Table structure for table 'intervention'
--

DROP TABLE IF EXISTS intervention;


CREATE TABLE intervention (
numintn int(11) NOT NULL default '0',
freqintn varchar(50) default NULL,
numpj int(11) default NULL,
numint int(11) default NULL,
codeccpt varchar(50) default NULL,
numecole int(11) default NULL,
dateint datetime default NULL,
PRIMARY KEY (numintn)
) TYPE=MyISAM;

--
-- Dumping data for table 'intervention'
--

INSERT INTO intervention VALUES (1,'régulière',NULL,153,'D',134,'2001-03-13 00:00:00');


INSERT INTO intervention VALUES (2,'ponctuelle',6,451,'D',134,'2001-03-13 00:00:00');
INSERT INTO intervention VALUES (3,'ponctuelle',27,452,'D',134,'2001-03-13 00:00:00');
INSERT INTO intervention VALUES (4,'ponctuelle',27,453,'D',134,'2001-03-13 00:00:00');
INSERT INTO intervention VALUES (5,'ponctuelle',27,454,'D',134,'2001-03-13 00:00:00');
INSERT INTO intervention VALUES (7,'ponctuelle',11,455,'L2',62,'2001-03-13 00:00:00');
INSERT INTO intervention VALUES (8,'ponctuelle',11,458,'L2',62,'2001-03-19 00:00:00');
INSERT INTO intervention VALUES (9,'ponctuelle',11,458,'L2',60,'2001-03-19 00:00:00');
INSERT INTO intervention VALUES (10,'ponctuelle',15,459,'L1',136,'2001-03-19 00:00:00');
INSERT INTO intervention VALUES (11,'ponctuelle',15,460,'L2',31,'2001-03-19 00:00:00');
INSERT INTO intervention VALUES (12,'ponctuelle',15,460,'L2',32,'2001-03-19 00:00:00');

IUT du Limousin - Licence Professionnelle – Projet tutoré 70


--
-- Table structure for table 'liaison'
--

DROP TABLE IF EXISTS liaison;


CREATE TABLE liaison (
NumIntn int(11) NOT NULL default '0',
NumCdn int(11) NOT NULL default '0',
numos int(11) default NULL,
PRIMARY KEY (NumIntn,NumCdn)
) TYPE=MyISAM;

--
-- Dumping data for table 'liaison'
--

INSERT INTO liaison VALUES (805,1,NULL);


INSERT INTO liaison VALUES (804,8,NULL);
INSERT INTO liaison VALUES (804,1,NULL);
INSERT INTO liaison VALUES (803,8,NULL);
INSERT INTO liaison VALUES (803,1,NULL);
INSERT INTO liaison VALUES (802,8,NULL);
INSERT INTO liaison VALUES (802,1,NULL);
...

--
-- Table structure for table 'organisme_support'
--

DROP TABLE IF EXISTS organisme_support;


CREATE TABLE organisme_support (
numos int(11) NOT NULL default '0',
raisoc varchar(50) default NULL,
adros varchar(50) default NULL,
numCdi int(11) default NULL,
PRIMARY KEY (numos)
) TYPE=MyISAM;

--
-- Dumping data for table 'organisme_support'
--

INSERT INTO organisme_support VALUES (1,'etsdyg','gddftyft',5);


INSERT INTO organisme_support VALUES (2,'COMITE DEPARTEMENTAL HAUTE-
VIENNE TENNIS DE TABLE','35, bld de Beaublanc - 87100 LIMOGES',4);
INSERT INTO organisme_support VALUES (3,'S.E.L.I. Patinoire des Casseaux','Patinoire des
Casseaux - 87000 LIMOGES',5);

IUT du Limousin - Licence Professionnelle – Projet tutoré 71


INSERT INTO organisme_support VALUES (4,'U.S.E.P. LIMOGES','44 cours Gay-Lussac -
87000 LIMOGES',4);
INSERT INTO organisme_support VALUES (5,'VILLE DE
MONTMORILLON','MONTMORILLON (VIENNE)',3);
INSERT INTO organisme_support VALUES (7,'F.O.L. HAUTE-VIENNE','44 COURS GAY-
LUSSAC -87100 LIMOGES',5);
INSERT INTO organisme_support VALUES (8,'O\'NAVIO THEATRE','31 RUE DU PONT
ST-ETIENNE - 87000 LIMOGES',4);

--
-- Table structure for table 'projet_pedagogique'
--

DROP TABLE IF EXISTS projet_pedagogique;


CREATE TABLE projet_pedagogique (
numpj int(11) NOT NULL default '0',
intactn varchar(50) default NULL,
PRIMARY KEY (numpj)
) TYPE=MyISAM;

--
-- Dumping data for table 'projet_pedagogique'
--

INSERT INTO projet_pedagogique VALUES (6,'ESCALADE');


INSERT INTO projet_pedagogique VALUES (11,'ATELIER EXPRESSION THEATRALE');
INSERT INTO projet_pedagogique VALUES (15,'EDUCATION MUSICALE');
INSERT INTO projet_pedagogique VALUES (20,'CHANT CHORAL');
INSERT INTO projet_pedagogique VALUES (21,'ARTS PLASTIQUES');
INSERT INTO projet_pedagogique VALUES (22,'INITIATION A LA CERAMIQUE');
INSERT INTO projet_pedagogique VALUES (26,'Un musée à l\'école');
INSERT INTO projet_pedagogique VALUES (27,'NATATION');
INSERT INTO projet_pedagogique VALUES (30,'Travail en A.P. sur le thème de l\'Arbre');
INSERT INTO projet_pedagogique VALUES (32,'Atelier BCD/Conte');
INSERT INTO projet_pedagogique VALUES (37,'LIRE ET FAIRE LIRE');
INSERT INTO projet_pedagogique VALUES (38,'Inititation à la danse traditionnelle');
INSERT INTO projet_pedagogique VALUES (39,'Aborder les droits et les devoirs de
l\'enfant');
INSERT INTO projet_pedagogique VALUES (45,'DANSE');
INSERT INTO projet_pedagogique VALUES (48,'Intervention musicale en milieu scolaire');
INSERT INTO projet_pedagogique VALUES (49,'Eveil vocal et chorégraphique');
INSERT INTO projet_pedagogique VALUES (54,'ANGLAIS');
INSERT INTO projet_pedagogique VALUES (55,'Enseignement langue vivante');
INSERT INTO projet_pedagogique VALUES (68,'EQUITATION');
...

IUT du Limousin - Licence Professionnelle – Projet tutoré 72


--
-- Table structure for table 'sauvegarde'
--

DROP TABLE IF EXISTS sauvegarde;


CREATE TABLE sauvegarde (
chemin varchar(100) NOT NULL default ''
) TYPE=MyISAM;

--
-- Dumping data for table 'sauvegarde'
--

--
-- Table structure for table 'sigle'
--

DROP TABLE IF EXISTS sigle;


CREATE TABLE sigle (
numsigl varchar(50) NOT NULL default '',
libsigl varchar(50) default NULL,
PRIMARY KEY (numsigl)
) TYPE=MyISAM;

--
-- Dumping data for table 'sigle'
--

INSERT INTO sigle VALUES ('ECU',NULL);


INSERT INTO sigle VALUES ('EMC',NULL);
INSERT INTO sigle VALUES ('EPC',NULL);
INSERT INTO sigle VALUES ('PR',NULL);

--
-- Table structure for table 'utilisateur'
--

DROP TABLE IF EXISTS utilisateur;


CREATE TABLE utilisateur (
NumUti int(11) NOT NULL auto_increment,
NomUti varchar(50) default NULL,
MotPasse varchar(50) default NULL,
Groupe varchar(50) default NULL,
PRIMARY KEY (NumUti)
) TYPE=MyISAM;

IUT du Limousin - Licence Professionnelle – Projet tutoré 73


GNU Free Documentation License
Version 1.2, November 2002

Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.


59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other


functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.

This License is a kind of "copyleft", which means that derivative


works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.

We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below,
refers to any such manual or work. Any member of the public is a
licensee, and is addressed as "you". You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of


the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (Thus, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.

The "Invariant Sections" are certain Secondary Sections whose titles


are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy,


represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain


ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose


title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and
you may publicly display copies.

3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.

If you publish or distribute Opaque copies of the Document numbering


more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.

It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled "History" in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the "History" section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section
may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements"
or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or


appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains


nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.

You may add a passage of up to five words as a Front-Cover Text, and a


passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License


give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History"


in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications". You must delete all sections
Entitled "Endorsements".

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate


and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these


copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may


distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements",


"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions


of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number.


If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.

Вам также может понравиться