• Aucun résultat trouvé

Ajout d’un thème sur la base de donnée PP-ORE

N/A
N/A
Protected

Academic year: 2021

Partager "Ajout d’un thème sur la base de donnée PP-ORE"

Copied!
31
0
0

Texte intégral

(1)

HAL Id: hal-02821986

https://hal.inrae.fr/hal-02821986

Submitted on 6 Jun 2020

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Ajout d’un thème sur la base de donnée PP-ORE

Romain Dutrois

To cite this version:

Romain Dutrois. Ajout d’un thème sur la base de donnée PPORE. [Stage] Université d’Auvergne -Clermont-Ferrand I (UdA), FRA. 2009, 30 p. �hal-02821986�

(2)
(3)
(4)

REMERCIEMENTS

Je tiens à remercier toute l'équipe de l'UREP de l'INRA de Clermont-Ferrand pour son accueil et toute l'aide qu'elle a pu m'apporter tout au long de mon stage dans leur entité. Leur bienveillance et tous les moments de détente passés avec eux m'ont permis une bonne intégration avec l'équipe de recherche en général.

Je tiens à remercier plus particulièrement Raphaël Martin et Sylvie Toillon, mes maîtres de stage, sans qui ce stage n'aurait pas pu avoir lieu. Il ont su m'encadrer, me proposer des solutions et des angles de réflexion que je ne n'aurais peut être pas perçus tout au long de ce stage.

Je remercie également Jean-Luc Toutant, mon professeur d'informatique tuteur et chef de département, pour ses cours de PHP et SQL qui m'auront été très utiles.

Et encore ; Tiphaine, Adeline, Élise, Marion, Amélie, Amandine, Vincent, Rémi, François, Romain, Mickaël, Karel, Benjamin, Olivier et tous ceux hélas que j'aurais oublié, en fait tout ceux qui ont contribué à rendre cette expérience agréable.

(5)

RESUME

Depuis maintenant 2005, l'Unité de Recherche sur l'Ecosystème Prairial (UREP) s'est engagée à participer à la gestion d'un Observatoire de Recherche pour l'Environnement. Ce dispositif est mis en place pour une longue période mais ce projet pose quelques problèmes avec le stockage de données sous formats Excel. L'UREP a donc décidé de créer une base de données.

Quand je suis arrivé seul le thème biomasse avait été commencé, et son interface proposait l'import des feuilles Excel et les calculs importants sur les données correspondantes à ce thème. Cette partie étant déjà bien entamée, mes maitres de stage m'ont confié la création du thème gestion.

Sous l'ORE, le thème gestion s'occupe des pâturage, son but est de stocker les données de poids et de positions de animaux pour ensuite identifier les évolutions qu'ils subissent. Nous avons 12 parcelles sur le site de Theix ou nous gérons les animaux et ceux ci se divisent en deux types: les ovins et les bovins.

J'ai donc du intégrer à la base ce thème gestion avec comme précédemment l'import des feuilles Excel et les calculs voulus en sortie. Puis j'ai rajouté une partie formulaire pour permettre aux utilisateurs de rentrer les données directement dans la base plutôt que de remplir une feuille Excel et ensuite l'importer.

Pour réaliser ce stage j'ai du utiliser le code SQL utile à la création des tables pour la gestion, et utiliser du code PHP et javascript pour mettre en forme l'interface de cette base. La plateforme de développement web utilisé est easyphp, comprenant deux serveurs (Apache pour le web et Mysql pour les base de données).

(6)

ABSTRACT

Since 2005 the Unity of Research on the Ecosystem Prairial (UREP) is urged to participate in the management of a Research observatory in Environment (ORE) in french).This emplement is set up for a long period but this project poses some problems with the stocking of data under Excel, and so that why the UREP decided to create a database .

When I arrived only the ''biomasse'' topic was begun and its interface was divided in to two part, the Excel import and the importing counting of the ''Biomasse'' data. This part was already begun, my masters of training period entrusts me the creation of the ''gestion'' topic.

Under the ORE, the ''gestion'' topic is in charge of pasture, purpose is to stock the data of weight and position of animals to identify then evolutions which they are subjected .We have twelve plot on Theix or we manage the animals, the sheep and the cattle.

I have insert the database in the ''gestion'' topic with as before the Excel import and counting wanted in exit. Then I topped up a party form to allow the users to take in data directly into the foundation rather than to fill a leaf Excel and then to import it.

To accomplish this training period I have of use code SQL for the creation of the table for management, and use code PHP and javascript to shape the interface of this database. The platform of development web is easyphp, understood two waiters (Apache for the web and Mysql for database).

(7)

Table des matières

Introduction...1

I. Présentation du cadre de travail...2

1. Présentation de l'INRA...2

2. Le centre de Clermont-Ferrand – Theix – Lyon...3

3. Unité de Recherche sur l'Ecosystème Prairial (UREP)...4

II. Le projet PP-ORE...5

1. Présentation générale...6

2. Différents thèmes...7

3. Zoom sur un thème : le thème gestion...8

4. Choix technique actuel...9

III. But du stage...10

1. Problème posé...10

2. Demandes spécifiées par le Cahier des charges...11

3. La base...12

4. L'interface...13

IV. Réalisations et choix techniques...14

1. La partie graphique...14

2. La base ...15

3. L'interface utilisateur...16

A. La partie importation d'une feuille Excel...16

B. La partie formulaire...19

C. La partie résultat...21

(8)

Index des illustrations

Illustration 1: Organigramme de l'UREP...4

Illustration 2: Plan des parcelles de Theix...5

Illustration 3: Calendrier prévisionnel d’exploitation des parcelles...7

Illustration 4: exemple de feuille Excel "remplissage des poids"...9

Illustration 5: Schéma relationnel de l'ancienne base de donnée...12

Illustration 6: aperçut de l'ancienne interface...13

Illustration 7: charte de couleur...14

Illustration 8: aperçut de la nouvelle interface...14

Illustration 9: tables ajoutées à table_parcelle par rapport à la base présentée plus haut ...15

Illustration 10: Exemple d'un fichier Excel ici nous avons le remplissage des poids des animaux...16

Illustration 11: Choix des différents formulaires possibles...19

Illustration 12: aperçut de la page entrée sur une parcelle...20

Illustration 13: Les différents filtres possibles...21

(9)

Introduction

Dans le cadre de ma deuxième année d'études de DUT SRC (Service et Réseaux de Communication) au Puy en Velay, j'ai effectué un stage de 3 mois, du 23 Mars au 13 Juin 2009, au sein de l'Institut National de Recherche Agronomique (INRA), à Clermont-Ferrand sur le site de Crouël. J'ai ainsi intégré l'Unité de Recherche sur l'Ecosystème Prairial (UREP) et travaillé sur un de ses principaux projets : la gestion d'un Observatoire de Recherche en Environnement (ORE).

En effet, le centre Clermont-Ferrand-Theix gère un ORE sur les prairies permanentes. Ce dernier a notamment pour objectif de récolter et garder en collection un certain nombre d’échantillons (végétal, sol, eau, …).

Il a aussi pour but de constituer un panel de données relatives à ces prairies et à leur état au cours de l'expérimentation. Ces données étaient conservées dans un premier temps sous forme de fichier xls. Afin de rendre ces dernières plus pérennes et de permettre les opérations de consultation/modification plus aisées, une Base De Données (BDD) est en cours de création.

Mon travail a ainsi consisté à intégrer une nouvelle «fonction» à cette base. J'ai ainsi ajouté et modifié des tables mais aussi réalisé l'interface « utilisateur » permettant de les manipuler. En effet, de nombreux utilisateurs ne sont pas informaticiens et doivent pouvoir accéder aux données de manière simple et intuitive.

Je m'attacherai donc dans un premier temps à vous présenter l'institut qui m'a accueilli, puis dans un second temps nous verrons plus en détail le fonctionnement de l'ORE. Ceci nous permettra alors d'établir les besoins auxquels ce stage a du répondre. Nous verrons enfin les réalisations elles mêmes et les techniques utilisées pour les mettre en œuvre.

(10)

I. Présentation du cadre de travail

1. Présentation de l'INRA

L'INRA a été fondé en 1946, dans le contexte de la reconstruction nationale d’après-guerre et du projet de modernisation de l'agriculture française. Il est aujourd'hui le troisième organisme de recherche Français après le Centre National de la Recherche Scientifique, et le Commissariat à l' Énergie Atomique.

L'INRA est constitué de 20 centres régionaux, composés eux même de 150 sites de recherches. L'INRA emploie environ 8500 titulaires et plus de 4000 stagiaires et doctorants chaque année.

Ses deux ministères de tutelles sont le ministère de la recherche et le ministère de l'agriculture. Avec un budget de plus de 800 millions d'euro en 2007, cet organisme est le premier institut européen concernant les domaines de l'agriculture, de l'alimentation et de l'environnement. L'INRA est partagé en 14 départements :

• Biologie végétale • Alimentation humaine

• Caractérisation et élaboration des produits issus de l’agriculture • Écologie des forêts, prairies et milieux aquatiques

• Environnement et agronomie • Génétique animale

• Génétique et amélioration des plantes • Mathématiques et informatiques appliquées • Microbiologie et chaîne alimentaire

• Physiologie animale et systèmes d’élevage • Santé animale

• Santé des plantes et environnement

• Sciences pour l’action et le développement

• Sciences sociales, agriculture et alimentation, espace et environnement

(11)

2. Le centre de Clermont-Ferrand – Theix – Lyon

Le centre de recherche INRA de Clermont-Ferrand–Theix–Lyon compte 773 agents permanents dont 350 chercheurs et ingénieurs. Ce centre représente un fort potentiel pour l’Institut National de la Recherche Agronomique, puisqu’il rassemble 9% de l’effectif total de l’Institut. Ses thématiques de recherches sont multidisciplinaires et les 30 unités qui le composent relèvent de 13 départements de recherche sur les 14 que comprend l’INRA.

Ses axes de recherches couvrent différents domaines d'investigation allant de l’exploitation agricole, la prairie et l’animal, aux produits animaux (lait, fromages, viande) et à l’Homme, sans oublier le végétal. On peut les regrouper en 4 grands secteurs de recherches :

• L’élevage durable et l'environnement dans les zones herbagères de montagne. • L’élaboration de la qualité des produits animaux : de l’herbe au fromage et à la

viande.

• La nutrition humaine préventive et le vieillissement, l’impact de la « fonction signal » des aliments.

• L’écophysiologie et la génomique pour la qualité des produits des céréales et de l’arbre

(12)

3. Unité de Recherche sur l'Ecosystème Prairial (UREP)

Les travaux de l'UREP concernent l'étude intégrée du fonctionnement écologique de la prairie pâturée, en relation avec la gestion agricole et avec le milieu physique. Ils sont appliqués à des objectifs de production et de protection de l'environnement : maîtrise de la dynamique de la végétation, entretien de l'espace et du paysage, gestion des milieux pour la conservation de la biodiversité, préservation des stocks de carbone dans les sols et limitation des pollutions azotées. Les études expérimentales analysent le fonctionnement des peuplements prairiaux plurispécifiques et de leurs interfaces avec l'herbivore, le sol et l'atmosphère (gaz à effet de serre). La dynamique des écosystèmes prairiaux est modélisée numériquement dans un but de synthèse des connaissances et de prévision.

Les programmes concernent des prairies en situation de sous-exploitation par le pâturage (comportant ou non des ligneux spontanés ou plantés), des associations entre espèces prairials modèle (graminées et légumineuses) et des écosystèmes prairiaux soumis à des changements de la composition de l'atmosphère (CO2) et du climat.

L'UREP est une équipe composée de 21 agents permanents, dont 11 chercheurs et ingénieurs et 10 techniciens et administratifs. En 2008, l'unité accueille 1 chercheur du CIRAD, 6 préposés en thèse, 4 scientifiques et 4 techniciens sous contrat.

2008/2009 4

(13)

II. Le projet PP-ORE

1. Présentation générale

Le projet PP-ORE est un des principaux projets de l'UREP. Son objectif est d'étudier les impacts à long terme de la gestion par le pâturage et la fauche de la prairie permanente sur la diversité des organismes résidents, sur les cycles biogéochimiques et sur le comportement des herbivores.

Cet dispositif expérimental de référence sur la prairie permanente est donc mis en place pour une longue période (de 15 à 20 ans). Voici un schéma représentant le dispositif tel qu'on peut le trouver sur le site de Theix à l'heure actuelle :

Nous pouvons voir sur le schéma que les parcelles sont réparties au sein de deux blocs (Moine et Blatière), chacun constitué d'un type de sol différent. Au sein de chacun d'entre eux, on peut discerner sept types différents de parcelles, ou traitements (Bo-, Bo+, Ov-, Ab, nul, pk et npk) .

Chacun de ces traitements est répété deux fois au sein de chaque blocs (1 et 8 sur le schéma par exemple). On peut trouver de plus deux parcelles « témoin » dîtes de sol nu (29 et 30). Les parcelles pâturées ont des superficie de 2200m² (Bovin), 1100 m² (Ovin), 400 m² (abandon ou fauche),et 25 m² (sol nu).

2008/2009 5

(14)

Les traitements suivant sont appliqués depuis 2005. Tout d'abord sur les parcelles pâturées, il existe différents gradients de pression de pâturage :

- le traitement Bo+ soit des pâture de bovins à taux fort: 4 animaux. - le traitement Bo- soit des pâture de bovins à taux faible: 2 animaux. - le traitement Ov- soit des pâture d'ovins à taux faible: 5 animaux.

Les parcelles concernant la fauche sont répartis en trois sortes de traitements possibles à savoir:

-le traitement nul (Nul)

-les traitements à base d'engrais phosphore et potassium (PK)

-les traitements à base d'engrais azote, phosphore et potassium (NPK)

Enfin l'abandon ne demande pas d'intervention mis a part que la végétation soit coupée au même rythme que les parcelle de fauche alors que le sol nu est obtenu par la pose d’une bâche noire entre décembre et août sur les parcelle préalablement tondues et répertoriés sur la carte. Un entretien régulier mensuel par ratissage et/ou arrachage des plantules est nécessaire pour le bon fonctionnement de cette parcelle témoin.

(15)

2. Différents thèmes

Pour contrôler les traitements, il faut pouvoir estimer dans les traitements pâturés le niveau d’utilisation des biomasses (facteur de base des traitements pâturés) et les hauteurs d’herbe (contrôle de fin de pâturage), et dans les traitements fauchés les quantité d’azote, de phosphore et de potassium (pilotage des traitements fauche PK et NPK). Ainsi, les données relatives à l'expérimentation PP-ORE peuvent être scindé en cinq thèmes différents :

Biomasse : C'est la quantité de biomasse produite qui rend compte du rendement exprimé en g/m² de MS (Matière Sèche). Pour les mesures de production, une méthode unique pour tous les traitements a été définie. Il s’agit de mesurer tout au long de l’année les repousses successives sur des placettes de 0,36m², avec changement d’emplacement à chaque repousse et arasement des placettes pour que l’accumulation d’herbe mesurée corresponde au mieux à la croissance de l’herbe. Le rythme de mesure est calqué sur le mode d’exploitation, avec 5 passages par an en pâturage. Pour les traitements fauchés, la production est mesurée au moment des coupes (3 fois par an) sur des placettes et pour l’abandon, les mesures sont réalisées 3 fois par an, comme en rythme fauche

Gestion : Le thème Gestion concerne les traitements Pâturages Ovins et Bovins. Il consiste au pâturage des animaux sur les parcelles à différents taux de chargement. L’objectif de ce thème est de créer et de respecter différents niveaux d’utilisation des biomasses par le pâturage, permettant de différentier un taux fort, compris entre 0.5 et 0.8 UGB (Unité Gros Bétail), et un taux faible (inférieur à 0.5) entre Bo+, Bo- et O-. Les données collectées pour le thème gestion sont les dates d'entrées et les dates de sorties des animaux sur les parcelles, leurs poids vifs ainsi que leur état corporel.

Analyses du sol : Les mesures sur le sol sont sa texture, sa conductivité, son pH et les éléments qui le composent : C, N, P, Ca, Mg, Na, K, Fe, Mn, Al. Il y a aussi des mesures d'humidité et de température du sol. Une partie des prélèvement est conservée.

2008/2009 7

(16)

Solution du sol : Ces mesures concernent les analyses de C et N, et il est prévu de conserver des échantillons congelés

Météo : Les données météo sont collectées à partir de la station Météo-France et renseignent les températures et les précipitations. Les prairies comme les systèmes d’élevage en général sont soumis au climat et à ses aléas. Le climat agit non seulement sur la production des prairies (Phénologie, biomasse) mais peut aussi contraindre l’accès aux ressources fourragères (séchage du foin, problèmes de portance…).

3. Zoom sur un thème : le thème gestion

Le thème gestion fonctionne chaque année de la même manière, tout d'abord nous avons 5 passages d'animaux d'une durée de 5 a 10 jours sur les parcelles. A chacun de ces passages correspondune date d'entrée et une date de sortie,un poids pour chaque animal ainsi qu'une évaluation de son état corporel, à savoir une note comprise entre 1 et 5 désignant si l'animal est maigre ou gras.

De plus, de nombreux événements particuliers peuvent se produire au cours d'une année :

- changement d'un animal (pour cause de décès ou de maladie)

- ajout d'un animal sur tout ou une partie d'une période de pâturage. Il sera ainsi comptabilisé au prorata de sa présence cet animal (appelé demi animal si il reste seulement la moitié de la période de pâturage sur une parcelle et l'autre moitié sur une parcelle différente).

- exclusion d'une zone de la parcelle (on interdit aux animaux d'aller dans cette zone) provoquée par exemple par de trop forte précipitation(les animaux par le piétinement peuvent détériorer la prairie).

- possibilité qu'une parcelle ne soit pas remplit durant un passage ou que tous les animaux soient dans une seule parcelle (erreur humaine).

(17)

4. Choix technique actuel

Les données collectées doivent être répertoriées et stockées de manières pérennes. Les données sont stockées sous forme de fichiers Excel et sont placées sur un serveur dédié à l'ORE. Les données peuvent être ensuite récupérées, transformées ou supprimées par les personnes ayant accès à ce serveur.

2008/2009 9

(18)

III. But du stage

1. Problème posé

Au départ les données étaient stockées sous forme de fichiers Excel. Ce système de stockage, bien que très répandu, n'est plus jugé adéquat. En effet, il soulève plusieurs problèmes :

– Les fichiers prennent beaucoup d'espace-disque et sont très nombreux. Il est difficile de les stocker de manière efficace.

– Il existe de nombreuses versions concurrentes de fichiers servant à contenir les mêmes données. En effet, une nouvelle version est créée à chaque fois qu'un cas particulier se pose.

– Dans le cas où une nouvelle donnée doit être mesurée, l'ensemble des feuilles doit être modifiées en vu d'ajouter une colonne.

– Les traitements que l'on souhaite effectuer sur les données sont liés à la feuille de calcul et prennent de la place. Le résultat du traitement en soit devient alors une donnée à stocker.

– Les données peuvent être perdues.

– Leur mise à disposition n'est pas sécurisée.

– On peut enfin citer les problèmes de redondances.

Ces différents problèmes étant gênants dans le cas d'un stockage de données sur une longue période et avec de nombreuses entrées, le projet d'une base de données relationnelles a donc été lancée assez naturellement. Je devais donc m'intégrer dans ce projet et réaliser, de sa conception à sa réalisation, le thème relatif à la gestion des animaux sur le dispositif.

(19)

2. Demandes spécifiées par le Cahier des charges

Je vais présenter ici le travail demandé via la description des parties du cahier des charges me concernant. Ce document a été réalisé au début du projet et est en constante évolution. Il a pour objectif de décrire de manière complète et exhaustive les fonctionnalités de la base de données et son interface associée. Il compte à l'heure actuel une vingtaine de pages. A mon arrivée, seul les parties communes et biomasse avaient été écrites. J'ai donc, dans un premier temps, grâce à des réunions et des entretiens, complété ce document avec le texte relatif au thème Gestion. Besoins fonctionnels :

L'accès à la base se doit se faire par une interface conviviale et comportera plusieurs écrans ayant des fonctionnalités facilitant les imports et exports de données. La gestion des cas exceptionnels doit être pensée dès le début.

Contraintes utilisateurs :

Une des premières demandes est de conserver, au moins dans un premier temps, l'utilisation de feuille Excel afin de ne pas dérouter l'utilisateur. Il devra donc être possible de charger la BDD via import des anciens fichiers Excel préalablement remplis par les utilisateurs. De même, les sorties générées par extraction de la BDD doivent elles aussi être sous forme de feuilles Excel.

Charte graphique :

Les thème biomasse et gestion des animaux doivent avoir le même rendu au niveau de leur interface, et permettre aux mêmes utilisateurs d'utiliser l'un ou l'autre de manière assez naturel, sans que ces derniers aient l'impression de changer d'outils, le but étant de réaliser un outil commun aux cinq thèmes.

Choix techniques :

L'outil mis en place est développé en PHP_MySql, et est hébergé sur le serveur du centre INRA de Clermont-Theix qui dispose de la plateforme Linux/Apache/PHP. Le PHP gère très bien les requêtes SQL, on peut donc facilement écrire des programmes qui affichent des données extraites de bases SQL, ou qui stockent des données postées par un formulaire dans une table SQL.Pour cela nous utilisons l'outil easyphp, une plateforme de développement Web, qui permet de faire fonctionner localement (sans se connecter à un serveur externe) des scripts PHP. Cet environnement comprend deux serveurs (un serveur web Apache et un serveur de bases de données MySQL), un interpréteur de script (PHP), ainsi qu'une administration SQL PhpMyAdmin.

(20)

3. La base

A mon arrivée, seul le thème biomasse était en partie développée, ainsi que les tables communes aux différents thèmes tels que les tables table _site , la table_parcelle ou encore la table_utilisateur, des tables à valeurs fixes dans le développement mais obligatoire pour la suite des événements.

Bien sûr, on pouvait aussi trouver de nombreuses tables relatives aux thèmes biomasses. Celles ci permettent par exemple de spécifier la composition de mélange, ou encore le lieu et la date de prélèvement d'échantillon.

Pour le thème gestion quelques paramètres sont à prendre en compte:

-Chaque parcelle, quelque soit son niveau de chargement, est soumise à 5 passages d'animaux par année. Ainsi, pour chaque animal et chaque passage, on doit stocker une date d'entrée, une date de sortie, le poids de l'animal et son état corporel .

-Afin d'identifier chaque animal, on lui attribue un numéro de boucle formé des deux derniers chiffres de son année de naissance et son numéro de naissance au cours de l'année (3 si le veau est le troisième à naitre depuis le début de l'année par exemple). Ce numéro est unique sur chaque exploitation.

2008/2009 12

(21)

4. L'interface

A mon arrivée l'interface était divisé en trois fenêtre différentes (principe des frames) : une première sur le haut contient un bandeau décoratif donnant le nom du site, une sur la gauche contient le menu et enfin une centrale affiche la page principal.

Le menu est codé en javascript. Des sous-menus arborescents apparaissent au fur et à mesure de notre exploration. Le tout est en bleu et gris avec quelques teintes de jaune et d'orange sur les tableau par exemples.

2008/2009 13

(22)

IV. Réalisations et choix techniques

1. La partie graphique

Le changement dans l'interface est important il signal un nouveau départ par rapport, aux formats précédents. L'interface ne doit pas être seulement esthétique mais aussi ergonomique. Le bandeau, au départ fixe se retrouve maintenant animé, nous avons remplacé le fond bleu et gris par une animation flash représentant un champ avec quelques fleurs.

En terme de teinte de couleurs, le fond n'est plus blanc mais tend vers un jaune pâle. Les titres important sont vert. Les cadres des tableaux sont eux moins visibles pour ne pas s'imposer à l'œil et tendent vers des rouges-orangés. Pour finir les liens vers les autres pages sont en bleu clair et passe en rouge quand on les survole pour mieux situer la souris.

Enfin les traits principaux de l'ancienne interface sont gardés, à savoir le principe des frame, les codes javascript et les formats des résultats ou des formulaire gardant certaines ressemblance avec les feuilles Excel ( tableau et désignation des cases).

2008/2009 14

Illustration 8 : aperçut de la nouvelle interface Illustration 7 : charte de couleur

(23)

2. La base

(voir aussi document annexe BDD ORE)

Pour la conception de la base de données du thème gestion, nous avons défini dans un premier temps au cours d'une réunion les tables représentant les entités manipulées. Nous avons ainsi déterminé 3 tables différentes, à savoir les tables table_animal, table_pâturage et table_poids_ec. Puis nous nous sommes ensuite penchés sur les cas exceptionnels. Et après réflexions, nous avons dû rajouter des attributs à quelques tables (numéro de passage pour la table poids ou une colonne remarque pour la table pâturage).De plus nous avons créé une table table_exclusion_parcelle pour pouvoir retirer un morceau de terrain sur un temps donnés dans le cas où un morceau de la parcelle ne serait pas praticable.

Nous avons aussi créé une nouvelle clef pour identifier l'animal, car il est possible que tous les dix ans un numéro de boucle identique à un précédent soit généré. Nous avons donc décidé de créer une clef ID_ANIMAL formée de l'année ou l'animal est sur le pâturage, de la première lettre de son type O (ovin) ou B (bovin) et de son numéro de boucle, ces trois ajout formant une clef unique.

Par exemple nous sommes en 2009 et je rentre dans la base une génisse de numéro de boucle « 061234 »(elle est née en 2006 et elle est la 1234eme de l'année).Dans ce cas son ID_ANIMAL sera « 2009B061234 » et sera toujours unique. Pour finir nous nous somme aussi avancés pour un futur proche avec les tables table_point_hauteur_herbes, table_mesure_hauteur_herbes, et table_suite_mesure pour les données qui ne sont pas reliés directement aux animaux sur les pâturages mais qui font partie intégrante du thème gestion elles aussi.

2008/2009 15

Illustration 9: tables ajoutées à table_parcelle par rapport à la base

(24)

3. L'interface utilisateur

Pour ce qui est de la création du site intranet, nous pouvons définir trois parties différentes.

A. La partie importation d'une feuille Excel

Tout d'abord parlons de l'import des feuilles Excel. Le fonctionnement pour l'utilisateur est simple: il suffit de choisir un fichier Excel grâce au bouton parcourir puis de choisir le type de données que l'on souhaite intégrer à la base (les poids des animaux ou les passages de ces mêmes animaux).

Une fois cela réalisé, une page html s'affiche ensuite, permettant de récapituler à l'écran les données entrées dans la base. Ce récapitulatif garde le même format que la feuille Excel. En terme de code, nous avons utilisé les fonction fournies par une bibliothèque trouvée sur internet : ExcelReader. J'ai donc dû étudier les fonctionnalités que me fournissait cette librairie, me basant sur le code déjà réalisé sur le thème biomasse afin de l'intégrer dans la partie « Gestion » .

Quelques détail technique tout de même, certaines cellules d' Excel sont en fait des liens vers d'autre cellules pour éviter de réécrire la même chose plusieurs fois, et ExcelReader ne peut lire ces textes reporté, nous sommes donc obligé de recherche la cellule d'origine pour avons le texte voulu.

Nous avons tout de même été confronté à plusieurs difficultés. Ainsi, certaines cellules d'Excel sont en fait des liens vers d'autre cellules sur des feuilles ou cellules différentes (afin d'éviter de réécrire les mêmes formules de calcul plusieurs fois). ExcelReader ne peut lire ces textes reportés, nous sommes donc obligés de rechercher la cellule d'origine pour récupérer le texte voulu.

2008/2009 16

(25)

Nous avons aussi identifier un problème dû aux caractères spéciaux tel que le « œ » qui pose un problème de lecture par la librairie et est retranscrit sous forme

de points d'interrogations dans des losanges( ) entre chaque caractères. Mais par manque de temps nous n'avons pas pu résoudre cette anomalie. Il devrait être corrigé rapidement.

Exemple : « cœur de l'animal » donne « c� � � � � � � � � �o e u r d e l ' � � � � � �a n i m a l ».

De plus les caractères peuvent se retrouver dans deux sortes de cellules différentes, une cellules appelée « remarque générale » ou les utilisateurs donnent les informations relatives à un bloc, le bloc Moine ou le bloc Blatière ou des cellules appelées « observation » ou nous enregistrons les détails d'un animal sur une parcelle. Ces deux type de cellules ne sont utilisé que pour mettre en évidence les cas particuliers. Mais Nous n'avons mis en place qu'un seul attribut pour les remarque dans la table table_paturage, nous avons donc pour le moment plusieurs tests fonctionnant selon le système suivant:

//Si nous avons des observations mais pas de remarque générale. if(!empty($rem)&&$rem1=="rq:")

{

// Nous rentrons que les données des observation dans la base }

//sinon else {

//Si nous avons des observations et une remarque générale. if(!empty($rem)&&$rem1!="rq:")

{

// Nous rentrons que les données des observation //et de la remarque dans la base

} else {

//Si nous n'avons pas d'observations

//mais que nous avons une remarque générale. if(empty($rem)&&$rem1!="rq:")

{

//on rentre les données de la remarque générale seule }

//Si nous n'avons ni remarque générales ni observations else

{

//on ne rentre pas de remarque ni d'observation dans les données }

} }

PS:la variable $rem1 n'est jamais vide car la cellules est remplit par défaut par « rq: »

(26)

Les dates répertoriées dans le fichier Excel sont exportées sous le format AA/MM/JJ, mais ce format pose problème à la base de donnée car le format date est par défaut en JJ/MM/AAAA et comprends donc pour les résultats Excel JJ/MM/ AA(ou JJ est en fait l'année dès que les chiffres de celle ci sont inférieurs aux nombre de jours dans le mois). Pour réécriture la date dans un format JJ/MM/AA correct nous utilisons la fonction PHP substr qui s'exprime par trois arguments: la variable sur laquelle nous voulons travailler, la position ou nous voulons commencer à récupérer les caractères et le nombre de caractères que nous voulons récupérer.

Par exemple soit une date au format AA/MM/JJ de nom de variable $date: $newDate=substr ($date, 6, 2);

$newDate .="/";

$newDate .=substr ($date, 3, 2); $newDate .="/";

$newDate .=substr ($date, 0, 2);

Et avec ce code la variable $newdate donne comme résultat un date en JJ/MM/ AA ou JJ est bien le nombre de jours.

Pour finir les insertions dans la base se réalisent grâce au deux lignes suivantes: $insert = ''INSERT INTO 'nomdelatable'(clef1,clef2,clef3,...)

VALUES(valeur1,valeur2,valeur3,...)''; resultat = mysql_query($insert);

Avec derrière INSERT INTO le nom de la table de la base voulu(table_animal par exemple) suivis des clef que nous voulons remplir, a savoir que les clef qui existe dans la table mais qui ne sont pas précisé dans la parenthèse seront considérer comme NULL dans la base. Et enfin derrière value les valeur que nous voulons mettre dans les clefs précisées au dessus.

(27)

B. La partie formulaire

Parlons maintenant de l'importation des données sous forme de formulaire. Pour que cette partie fonctionne nous avons différencié les priorités selon les points suivant:

Ces points sont classés par ordre chronologique car nous sommes obligés de rentrer un animal dans la base pour pouvoir ensuite lui donner un poids ou le faire entrer dans une parcelle par exemple.Ces quatre premiers formulaires sont mis sous forme de tableau pour garder une ressemblance avec les feuilles Excel mais à la différence d'une feuille Excel ,ou nous évitons le plus souvent possible de laisser l'utilisateur remplir des champs « textes », nous lui laissons plutôt le choix entre plusieurs possibilités via l'utilisation de menus déroulants. Ces menus déroulants sont eux même organisé avec, par exemple, la différentiation des animaux selon la parcelle ou nous voulons les faire entrer, ce qui en plus de donner des numéros de boucle existants pour les animaux, élimine les erreurs possibles de remplir une parcelle prévue pour des bovins avec des ovins, par exemple.

Pour cela, nous créons deux balises select distinctes,l'une pour les numéros d'ovins, l'autre pour les bovins et nous cachons la balise qui n'a pas de lien avec la parcelle que l'utilisateur aura choisit. Pour cela nous utilisons le code suivant: function typeAnimal(lieu)//la variable lieu est le numéro de parcelle

{// un test des parcelles a qui nous administrons le bovins

if (lieu==1||lieu==2||lieu==8||lieu==9||lieu==15||lieu==17||lieu==22||lieu==23) {

//style.display=block permet de montrer l'élément voulu // et style.display=none cache l'élément voulu

document.getElementById('bovin').style.display='block'; document.getElementById('ovin').style.display='none'; } else if(lieu==3||lieu==10||lieu==16||lieu==24) { document.getElementById('ovin').style.display='block'; document.getElementById('bovin').style.display='none'; } } 2008/2009 19

Illustration 11 : Choix des différents formulaires possibles

(28)

Un autre code important dans la partie formulaire est le code qui nous permet d'ajouter des animaux dans la page « entrée d'une parcelle ». Ce code nous est utile car nous ne savons pas le nombre réel d'animaux par parcelle et bien que des règles aient été établies nous pouvons avoir un animal de plus ou de moins selon les parcelles.

Nous avons donc mis par défaut un seul animal et c'est à l'utilisateur de remplir le nombre réel d'animaux dans la parcelle.

Le principe d'ajout est simple, il suffit à l'utilisateur de cliquer sur le bouton « + » pour faire apparaître le choix par un menu déroulant d'un animal supplémentaire.Le fonctionnement est simple lui aussi bien que assez long à mettre en œuvre car il nous faut ajouter toutes les cellules les unes après les autres grâce aux fonctions createElement (pour insérer un élément comme une balise <tr> ou <td> par exemple) et createTextNode (pour insérer du texte) . Ce code est en javascript car nous ne voulions pas recharger la page à chaque ajout.

Exemple: //Création des variables.

//recherche de ma table d'id="montableau"

Var mytable = document.getElementById('montableau'); //creation d'une balise tr

var row = document.createElement('tr'); //création d'un td

var container = document.createElement('td'); // texte

var theData = document.createTextNode('blabla'); //mise en place des variables

container .appenchild(thedata); rows .appenchild(container); mytable .appendChild(row);

2008/2009 20

(29)

C. La partie résultat

Pour cette dernière partie, nous avons mis en œuvre une première interprétation des sorties de la base. Pour ce faire, nous avons réalisés deux tableaux qui permettent de valoriser les données contenues dans la base :

Le premier est le Chargement des pâturages il met en valeur les poids moyen des animaux et leur correspondance avec le terrain et le nombre de jours passés. Le second, lui, représente les capacités d'ingestion des animaux selon la qualité de l'herbe et de l'état corporel des ovins, celui des bovin n'étant pas assez significatif.

Pour améliorer la lecture de ces tableaux et donner la possibilité d'avoir des moyennes plus précises nous avons prévu de laisser le choix à l'utilisateur grâce à un système de filtre.

Ce système de filtres est basé sur des requêtes vers la base de données s'additionnant les une aux autres. Le principe est simple mais efficace il suffit de quelques tests pour en assurer la fiabilité. Nous mettront donc en avant les possibilités qu'il peut donner. Nous avons cinq filtres possibles :

Chacun diminuant la recherche de valeur des résultats qui suivent à l'écran. Ces filtres sont placés de la variable la plus générale à la variable la plus précise. En terminant bien entendu par les passages, correspondant aux différentes dates importantes de l'année parcourue.

Pour que ces filtres fonctionnent correctement, nous avons imaginé un système de tests et de requêtes complémentaires. L'exemple ci dessous est une partie réécrite de ce code pour faire comprendre la technique utilisée.

Mais d'abord quelques explications, nous ne prendrons que les deux premiers filtres pour cet exemple, les $_POST nous permettent de récupérer les données que l'utilisateur a sélectionné dans ses formulaires.

2008/2009 21

(30)

//Ici nous testons si la balise select des blocs a été changé if(isset($_POST["bloc"])&&$_POST["bloc"]!="---bloc---")

{//Si c'est bien le cas nous prenons la valeur choisit et créons notre sélection $bloc =$_POST["bloc"];

$tableau="SELECT P.* ,A.* FROM `table_parcelle` P,`table_paturage`A WHERE P.`ID_PAR`=A.`FID_PAR` AND A.`COL_DATE_SORTIE` IS NOT NULL AND P.COL_NUM_BLOC='$bloc'";

} else

{ // Si ce n'est pas le cas alors nous donnons comme valeur // « ni » au tableau pour avoir un test par la suite. $tableau='ni';

}

//Ici nous testons si la balise select des traitements a été changé if (isset($_POST["traitement"])&&$_POST["traitement"]!="--type--") { //Si c'est bien le cas nous prenons la valeur choisit

$traitement =$_POST["traitement"];

//Nous vérifions si une autre donnée a été choisit auparavant if($tableau!='ni')

{ //Si c'est le cas nous ajoutons les valeurs voulues par l'utilisateur $plop=" AND P.COL_NUM_TRAITEMENT='$traitement'"; $tableau=$tableau.$plop;

} else

{ //Sinon nous créons notre sélection

$tableau="SELECT P.* ,A.* FROM `table_parcelle` P,`table_paturage`A WHERE P.`ID_PAR`=A.`FID_PAR` AND A.`COL_DATE_SORTIE` IS NOT NULL AND P.COL_NUM_TRAITEMENT='$traitement'";

} }

//Test final pour voir si l'utilisateur a créé une nouvelle requête if($tableau=='ni')

{ //Si ce n'est pas le cas nous créons une requête par défaut

$tableau="SELECT P.* ,A.* FROM `table_parcelle` P,`table_paturage`A WHERE P.`ID_PAR`=A.`FID_PAR` AND A.`COL_DATE_SORTIE` IS NOT NULL "; }

//Enfin nous mettons l'ordre d'importance que nous voulons pour nos résultats $tableau=$tableau."GROUP BY A.COL_NUM_PASSAGE ASC, A.FID_PAR ASC, P.`COL_NUM_BLOC` ASC ";

//Et nous avons une requête prête à être lancée. $r=mysql_query($tableau);

Une fois ce bout de code correctement utilisé nous pouvons augmenter la précision de la recherche grâce aux choix des valeurs comprises dans les filtres.

(31)

Conclusion

Le thème gestion a permis de mettre en forme un formulaire de remplissage. Cela nous permettra de voir l'importance de celui ci et d'évoluer progressivement vers ce genre de mise en forme. Ce formulaire n'est pas parfait et doit encore être amélioré, mais il permettra de cibler les inconvénients pour améliorer le tout. Cela implique un travail dans le temps mais il est essentiel pour répondre correctement aux besoins des utilisateurs.

Le thème gestion fonctionne correctement et certaines solutions proposées dans le code seront reprises pour les autres thèmes, comme la proposition de tri dans la partie résultat qui a déjà été reprise sur certaines pages de la partie biomasse. Bien qu'il reste quelques amélioration à ajouter sur mon travail, les différentes pages existantes sont déjà crées et la reprise du code est simplifié grâce aux commentaires dans les pages elle même et le dossier technique de la BDD ORE.

Les différents problèmes ou blocages détectés durant mon stage ont été réglés rapidement grâce à mes deux maitres de stage, Raphaël Martin et Sylvie Toillon, qui ont toujours été à mon écoute et on sut me consacrer du temps pour m'aider dans la compréhension et la résolution des différents problèmes. Il était intéressant pour moi de me plonger dans la création de base de donnée et de son interface utilisateur car cela m'a permis d'utiliser les différents raisonnements et techniques appris en cours tout en améliorant ces mêmes connaissances et travaillant avec un esprit logique.

Le projet PP-ORE m'a aussi permis de travailler avec des personnes travaillant dans la recherche et ainsi enrichit mon vocabulaire sur la nature et la compréhension du fonctionnement de certaines expériences. Mais le fait de travailler avec des programmeurs et des chercheurs m'a aussi aidé a mieux m'exprimer pour parler de l'informatique avec les personnes que je côtoie.

Pour finir, même si le thème gestion est bien avancé, il reste à résoudre certains bugs et éventuellement simplifier l'interface proposée pour les utilisateurs. Le projet en lui même s'améliorera ensuite en fonction des usages, les feuilles Excel seront de moins en moins utilisées et enfin, nous pourrons administrer certaines données (les échantillons, par exemple).

Figure

Illustration   1   : Organigramme de l'UREP
Illustration   2   : Plan des parcelles de Theix
Illustration   3   : Calendrier prévisionnel d’exploitation des parcelles
Illustration   4   : exemple de feuille Excel &#34;remplissage des poids&#34;
+7

Références

Documents relatifs

LICENCE 2 SEG Pˆ ole Lamartine - ULCO MATH ´ EMATIQUES 2 Novembre 2010 - Contrˆ ole Continu, Semestre 1.. Dur´ ee de l’´ epreuve : 2h00

D´eterminer le noyau et l’image

Trouver une base de ImA et une base de

Pour cela on choisira un attribut (dans certains cas plusieurs) dans le schéma pour identifier chaque élément de manière unique. Souvent un entier plus aisé à traiter qu’une

D Elle permet d’ouvrir le fichier &#34;exemple.txt&#34; en mode écriture même si le fichier n’est pas dans le même dossier que le fichier du programme Python comportant

B elle liste tous les fichiers du répertoire /home/pi et enregistre le résultat dans un fichier toto.txt C elle liste tous les fichiers des répertoires de /home/pi et de toto.txt. D

Sachant que le répertoire courant contient les fichiers fich.txt, mafich.txt et programme.py, quel est le résultat de la commande ls fich* dans un shell

Déterminer une base et la dimension de