Guillaume Rivière 2015 – 2017

Le logo de la CCI Bayonne Pays Basque

Informatisation du Système d'Information

TP6 : Connecteur PHP entre Excel et MySQL

BUTS PÉDAGOGIQUES

  • Interopérabilité entre applications hétérogènes
  • Utiliser une bibliothèque PHP externe
  • Lire un fichier XLSX depuis un programme PHP

Nous considérons une entreprise utilisant un système de gestion pour gérer son entrepôt (WMS) qui ne gère pas les dates de péremption des matières premières qu'elle utilise. Jusque-là, un classeur Excel a été mis en place par les magasiniers pour gérer les dates de péremption par numéro de lot. Seulement, la gestion manuelle, par le responsable, entre le classeur Excel et le logiciel WMS est difficile et chronophage. Pour automatiser cela, nous allons créer une nouvelle table dans la base de données MySQL du logiciel WMS afin d'y lister les numéros de lots qui ont dépassé la date de péremption. Nous aurions bien voulu supprimer le fichier Excel, mais les opérateurs ne veulent surtout pas arrêter d'utiliser Excel. La solution retenue a été de mettre en place un script PHP qui fera le lien entre le fichier Excel et la base de données MySQL.

Figure 0.1 : Connecteur PHP entre Excel et MySQL.

Ce TP propose de voir comment le langage PHP peut être utilisé pour faire le lien entre le tableur Excel et une base de données MySQL.

Exercice 1 • Lire un fichier Excel depuis un script PHP (20 min)

Dans ce premier exercice, nous allons voir comment utiliser la bibliothèque PHPExcel pour accéder au contenu des cellules d'un classeur Excel 2007 (xlsx).

  1. Téléchargez l'archive de la bibliothèque PHPExcel_1.8.0_pdf.zip sur votre disque dur.
  2. Extraire cette archive dans le répertoire D:\TP_PHP\PHPExcel\
    • (Remarque : une fois la bibliothèque extraite, le sous-répertoire "Documentation" contient des PDF qui décrivent le fonctionnement de la bibliothèque)
  3. Téléchargez le fichier classeur_test.xlsx dans le répertoire D:\TP_PHP\ et consultez son contenu en l'ouvrant avec Excel.
  4. Recopiez le code ci-dessous dans un fichier PHP qui s'appellera D:\TP_PHP\test.php
Code 1.1 : Un script PHP qui ouvre un fichier Excel et accède aux cellules de différentes façons.
Question 1.1 : Tester ce premier programme et comprendre les fonctions de la bibliothèque PHPExcel
  1. Testez le script test.php (en appelant l'interpréteur depuis un terminal, comme au TP3) et comprenez les façons dont il est possible d'accéder aux cellules d'un classeur Excel depuis un script PHP.
  2. Quelles sont les deux façons utilisées pour accéder à une cellule ?
  3. À quoi correspondent les trois différentes façons d'interpréter le contenu d'une cellule ?

Exercice 2 • Traiter le fichier Excel avec les dates de péremption (1 h)

Exercice 3 • La base de donnée de WMS (30 min)

Nous allons reprendre la base de données existante de WMS. Sans modifier les tables existantes, car déjà utilisées par les fonctions en place dans le logiciel, nous allons créer une nouvelle table qui listera les numéros de lots périmés et indiquera s'ils ont été retirés du stock. Enfin, nous compléterons le script PHP précédent pour faire les insertions nécessaires dans la nouvelle table MySQL à partir de la lecture du classeur XLSX.

Le schéma relationnel de la base de données de WMS est le suivant :

Figure 3.1 : Schéma relationnel original.

Notation : les clés primaires sont soulignées, les clés étrangères sont précédées d'un croisillon « # ».

Nous souhaitons maintenant ajouter une nouvelle table :

Figure 3.2 : Schéma relationnel modifié.

Pour que tout cela devienne opérationnel, il faudrait que la base de données soit réactualisée chaque jour. Pour ce faire, il est possible d'utiliser le Planificateur de tâches de Windows (voir dans le Panneau de configuration), ou le planificateur CRON sous Linux/Unix, afin de demander l'exécution du script chaque matin à 5 h 00, par exemple.

Exercice 4 • Formulaire HTML pour signaler les lots qui ont été retirés du stock physique

Enfin, pour parfaire le tout, écrire une page PHP qui récupérera, depuis la base de données, les informations de produit, quantité et fournisseur pour chacun des lots périmés qui n'ont pas encore été retirés. Ces informations de lots seront affichées dans un formulaire HTML permettant de cocher les produits, afin de pouvoir indiquer ceux qui ont été effectivement retirés du stock physique. Écrire ensuite le script PHP qui sera appelé par ce formulaire et qui s'occupera de marquer à vrai les lots qui ont été retirés.