Retour : page principale

Portage de l'application Herbiers vers eFlore


Stagiaire : Sébastien BESSON
Période : 09 février au 03 avril 2009

Contexte


  • Problématique
Afin de répondre à de nouveaux besoins, de quelle façon pouvons améliorer les interfaces d'une application web php développée plusieurs années auparavant ?

  • Analyse de l'existant
Base de donnée utilisée pour gérer la zone herbier du site web de Tela Botanica; cette zone comporte une localisation des herbiers via une cartographie de France, un moteur de recherche pour tous les champs de la base, une zone d'administration, un mode d'emploi, une documentation et une liste de flux RSS sur les herbiers.
Cette Base de donnée herbiers permet à la fois la consultation et l'administration des informations.
Le code PHP des interfaces actuelles ne sépare pas le HTML, servant à l'affichage, de la logique métier.

  • Expression des nouveaux besoins
Séparer la partie administration et la partie consultation de l'ancienne application et les remplacer par :
  • une interface d'administration web utilisant le Google Web Toolkit (réalisation assurée par l'équipe de Tela Botanica),
  • une interface de consultation accessible par tous et respectant les standards du web..
Au niveau des bases de données, l'ancienne base "Herbiers" sera migrée dans deux nouvelles bases :
  • la base collection en ligne (COEL) qui se chargera de gérer la partie administration tel l'insertion, la modification et la suppression des informations,
  • la base "eFlore" qui s'occupera de la partie consultation des informations.
Un mécanisme de service web sera développé pour assurer le transfert d'information entre la base COEL et la base eFlore.
Enfin, le code PHP des interfaces sera revu en utilisant le patron de conception ("design pattern") Modèle Vue Controlleur (MVC) qui permet de séparer la vue (HTML) du modèle (requêtes SQL).

Objectifs

Migration de la base de données Herbiers vers la base Coel.
Réalisation d'un outil (script) de migration de la base de données Coel vers eFlore.
Réalisation du cahier des charges de l'application Herbiers de consultation portées dans eFlore
Développement des modules pour eFlore :


Taches

  1.  Installation de la machine : xampp, eclipse, filezilla, firefox, DBDesginer, mysq-query-broser,  SciTE
  2. Récupération des bases de données sur tela-botanica.org
  3. Installation des bdd en local
  4. Configuration du svn dans Eclipse
  5. Rédaction de la roadmap dans le wikini Stages
  6. Script de migration bdd herbiers vers coel.
  7. Récupération des informations de la bdd coel vers un fichier xml
  8. Modification bdd EFlore (ajout de modules, tables et liaisons) > Script de création de tables
  9. Compression et envoi du fichier xml vers  EfloreVersion
  10. Réception et décompression du fichier dans le service Eflore
  11. Alimenter la base de donnée Eflore avec les valeurs du fichier xml

Roadmap

  • Semaine 1 : installation, configuration, formation wikini, prise en main bdd herbiers et coel. Début script migration bdd herbiers vers coel.
  • Semaine 2 : Fin script migration bdd herbiers vers coel. Début script migration coel vers eFlore.
  • Semaine 3 : Fin script migration coel vers eFlore. Rédaction cahier des charges applis collection-carto et collection-rechercher.
  • Semaine 4 : Début développement PHP dans eFlore : collection-rechercher.
  • Semaine 5 : Fin développement PHP dans eFlore : collection-rechercher.
  • Semaine 6 : Début développement PHP dans eFlore : collection-carto.
  • Semaine 7 : Fin développement PHP dans eFlore : collection-carto.
  • Semaine 8 : Rédaction rapport.

Liens


Astuces

- Insertion des tables en mode console :
  • Taper la commande suivante en mode console : /opt/lamp/bin/mysql -u root --default-character-set=utf8
  • puis entrer (/opt/lamp/bin/mysql désigne le chemin d'accès pour mysql)
  • On passe alors en mysql Monitor; suite à ça, on rentre la commande suivante : use nom_bdd source/home/util/stockage/tmp
  • Les tables ont étés ajoutées à la base de donnée.
  • Cette astuce est utile pour l'insertion de certaines bases de données trop importantes.

- Concaténer deux ou plusieurs champs dans une requête :
  • SELECT ID_CHAMP, CONCAT(U_SURNAME,'',U_NAME) AS NOM_COMPLET
  • On fait une concaténation des champs U_SURNAME et U_NAME que l'on place dans une variable (ici NOM_COMPLET)

- Opération "LEFT JOIN":
  • Le principe est le même que pour une jointure normale, à la différence,
  • le LEFT JOIN se place dans le FROM d'une requête > FROM nom_table1 LEFT JOIN nom_table2 ON (id_champ1 = id_champ2)