Dans l'article précédent, vous avez appris



Documents pareils
Stockage du fichier dans une table mysql:

Table des Matières. Pages 3-4. A propos d emblue. Page 5. L environnement emblue. Création d une campagne d marketing. Pages 6-15.

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Easy to. report. Connexion. Transformation. Stockage. Construction. Exploitation. Diffusion

Utiliser SQL Server 2008 R2 Reporting Services comme source de donne es pour Microsoft Excel

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

OSIRIS/ Valorisation des données PORTAIL BO MANUEL UTILISATEUR

Méthode de préparation du fichier texte d import depuis Excel, via Access jusqu à Drupal.

LIMESURVEY. LimeSurvey est une application permettant de créer des questionnaires d enquête en ligne et d en suivre le dépouillement.

IMPORTATION ARTICLES DANS LA BASE DE DONNEES

AWS avancé. Surveiller votre utilisation d EC2

BIRT (Business Intelligence and Reporting Tools)

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Auguria_PCM Product & Combination Manager

Base de Connaissances SiteAudit. Utiliser les Rapports Planifiés. Sommaire des Fonctionnalités. Les Nouveautés

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

La technologie au collège

Se Perfectionner à Excel

PHP 5.4 Développez un site web dynamique et interactif

1. Installation du Module

Exploitation des données issues de BE ( utilisation du tableur CALC) Fiche de travail (individuelle ou en binôme)

Vous venez d acquérir un fichier de données issues de la Base de données SIRENE. Comment utiliser votre fichier?

MANUEL DE L UTILISATEUR

8 rue Paul Cézanne Neuilly-Plaisance - Tél : 33 (0) Fax : 33 (0) cvm@cvm.

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Stockez et créez vos documents

Les logiciels gratuits en ligne

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

SOLUTION D ENVOI DE SMS POUR PROFESSIONNELS

Manuel du composant CKForms Version 1.3.2

A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Source :

A5.2.4 Étude d une technologie, d'un composant, d'un outil

Télécharger et Installer OpenOffice.org sous Windows

Manuel d'utilisation d'apimail V3

Importer un fichier CSV

WIMS. Découvrir et utiliser

mailpro mode d'emploi

Documentation pour l envoi de SMS

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Publipostage avec Calc

Modules Prestashop - ExportCatalogue / EXPORT IMPORT POUR MODIFICATIONS EN MASSE DANS PRESTASHOP VERSION Optim'Informatique

Comment échanger des données (fichiers) en format «STANDARD» lisibles par tous, quelque soit le programme et la version utilisés

Publipostage avec Open Office Writer et Open Office Calc

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

MEDIAplus elearning. version 6.6

Utiliser Access ou Excel pour gérer vos données

EXCEL TUTORIEL 2012/2013

Base élèves : des étiquettes avec OpenOffice 2.0

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

PRESENTATION. Parcours de formation à distance A destination des personnels en contrats aidés

Mise à jour : Octobre 2011

!!! La solution bureautique collaborative 100% gratuite!!!

Guide de démarrage de OPEN OFFICE. OpenOffice. Suite bureautique INSTALLATION SUR WINDOWS

Silfid : Agence de création de site internet, formations et Conseils Retour sommaire

La version 3: 100% conforme aux dernières exigences de la DGI au Maroc. Edition Déclaration Télé-déclaration des liasses fiscales

CREER UN PETIT SITE WEB EN COMPOSANT DES PAGES HTML

5. Excel 2010, le tableur collaboratif. a. Concevez des tableaux lisibles

2- Relation entre Writer et Calc dans le mailing

Programmation Web. Madalina Croitoru IUT Montpellier

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Suivi de la formation

Créer vos données sources avec OpenOffice, adieu Excel

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

CAP BOX Note utilisateurs

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Initiation à Excel. Frédéric Gava (MCF)

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

INTERCONNEXION ENT / BCDI / E - SIDOC

IBM Unica emessage Version Date de publication : 7 juin Guide utilisateur

GESTION DES BONS DE COMMANDE

Utilisation de l éditeur.

ENVOI EN NOMBRE DE SMS

ENVOI EN NOMBRE DE MESSAGES AUDIO

Manuel d intégration API FTP SMS ALLMYSMS.COM

.NET - Classe de Log

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

WordPress :: Migrer son site du local vers le serveur en ligne

SAP Lumira Version du document : Guide de l'utilisateur de SAP Lumira

Atelier Administration

Chapitre 3 : outil «Documents»

Guide d installation de Gael

E.N.T. Espace Numérique de Travail

Disque Dur Internet «Découverte» Guide d utilisation du service

Le stockage local de données en HTML5

Explorer et apprendre à utiliser la clé USB Île-de-France

UTILISATION DE L'APPLICATION «PARTAGE DE FICHIERS EN LIGNE»

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

MyReport, LE REPORTING SOUS EXCEL

Installation / Sauvegarde Restauration / Mise à jour

Service Déposant: Procédure d installation. Page 1. Service déposant. Procédure d installation Version 2.3

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Transcription:

Pour les débutants Les différents formats de sortie proposés par PHPExcel La bibliothèque orientée objet PHPExcel permet de lire et créer des fichiers pour tableurs. Dans cette série d articles, vous apprendrez à manipuler ces classeurs, les mettre en page, y insérer des formules ou des graphiques. Cet article explique : Comment définir le format de sortie d un classeur. Comment le stocker sur le serveur web. Ce qu il faut savoir : Avoir lu l article Générer des classeurs pour tableur avec PHPExcel (PHP Solutions - août 2011). Bases de PHP. Dans l'article précédent, vous avez appris à créer un classeur comportant plusieurs feuilles. La première feuille contenait des données brutes sans mise en forme. La seconde feuille donnait un exemple de mise en forme de cellules, de colonnes et de lignes. Vous avez vu comment envoyer ce classeur au format Excel2007 vers le navigateur. La bibliothèque PHPExcel propose plusieurs formats de sortie : Excel2007, CSV, PDF, HTML ou BIFF5. Cet article présente ces différents formats de sortie et explique comment envoyer vers le navigateur, ou stocker sur le disque du serveur web, les documents générés. Quel que soit le format de sortie choisi, il faut suivre les mêmes étapes lors de la création d'un classeur : inclure la bibliothèque principale (fichier PHPExcel. php), créer le classeur (objet PHPExcel), obtenir la feuille de travail avec la méthode getactivesheet, ajouter des données avec ou sans mise en forme et éventuellement définir le titre de la feuille, ajouter d'autres feuilles et données si nécessaire. Lorsque le classeur contient toutes les données et que les styles ont été définis, il faut fixer un format de sortie et envoyer ou stocker le document généré. Ceci est réalisé en suivant les étapes : inclure la bibliothèque spécifique au format de sor sortie : les scripts qui gèrent l'enregistrement des données dans les différents formats sont tous situés dans le sous-répertoire Writer du répertoire principal de la bibliothèque PHPExcel, créer une instance de la classe gérant le format, fixer les informations nécessaires pour ce format (extension du fichier, type MIME pour l'envoi vers le navigateur), envoyer le classeur vers le navi ateur navigateur ou le stoc stocker sur le serveur en utilisant la méthode save. Chaque format sera détaillé dans cet article et illustré grâce à une adaptation de l'exemple utilisé pour l'article précédent : un classeur à deux feuilles dont une contient uniquement des données brutes (Figures 1 et 3) et l'autre des données formatées (Figure 2). Les extensions à utiliser seront précisées, ainsi que les noms des classes gérant les formats et les fichiers PHP à inclure. Figure 1. Feuille 1 du classeur au format CSV 1 9/2011

pour les débutants Pour tester les listings de cet article, vous devez au préalable avoir installé la bibliothèque PHPExcel (cf Générer des classeurs pour tableur avec PHPExcel). Excel2007 Le format Excel2007 (SpreadsheetML) a été présenté dans l'article du numéro précédent. Cette section rappelle brièvement ses caractéristiques. Listing 1. fonctions.php <?php /** * Place les donnees du tableau dans les cellules de la feuille * @param $feuille (objet) feuille du classeur * @param $tab_donnees (tableau) tableau de donnees a deux dimensions */ function ajouterdonnees($feuille, $tab_donnees){ $i_ligne = 1; foreach ($tab_donnees as $ligne){ $nb_cell = count($ligne); for ($i_col = 0; $i_col < $nb_cell; $i_col++){ $feuille->setcellvaluebycolumnandrow($i_ col, $i_ligne, $ligne[$i_col]); $i_ligne++; /** * Genere un document au format passe en parametre. * Enregistre sur le disque du serveur ou envoie au navigateur. * @param $classeur (objet) classeur * @param $format_sortie (chaine) format de fichier * @param $afficher (boolean) si a true, le fichier est envoye au navigateur, sinon enregistre sur le serveur */ function genererdoc($classeur, $format_ sortie= HTML,$afficher=true){ $nom_fichier = ; $sortie = ; $writer = null; $ext = ; $header = ; $chemin_bib = PHPExcel/Writer/ ; switch ($format_sortie){ case Excel2007 : require $chemin_bib. Excel2007.php ; Excel2007($classeur); $ext = xlsx ; $header = application/vnd.openxmlformatsofficedocument.spreadsheetml.sheet ; case CSV : require $chemin_bib. CSV.php ; CSV($classeur); $writer->setdelimiter(, ); //une seule page : deuxieme feuille $writer->setsheetindex(1); $ext = csv ; $header = text/csv ; case PDF : require $chemin_bib. PDF.php ; PDF($classeur); $ext = pdf ; $header = application/pdf ; case Excel5 : require $chemin_bib. Excel5.php ; Excel5($classeur); $ext = xls ; $header = application/vnd.ms-excel ; case HTML : default: require $chemin_bib. HTML.php ; HTML($classeur); $writer->writeallsheets(); $ext = html ; $header = text/html ; $nom_fichier = basename(str_replace(. php,..$ext,$_server[ SCRIPT_ NAME ])); $sortie = resultats/.$nom_fichier; //stocke sur disque ou envoie au navigateur if (!$afficher){ header( Content-type:.$header); header( Content-Disposition:inline;filename=.$ nom_fichier); $sortie = php://output ; else { echo donnees enregistrees : <a href=.$sortie. >.$sortie. </ a> ; $writer->save($sortie); phpsolmag.org/fr 2

Pour les débutants Un document Excel2007 est une archive Zip comportant plusieurs fichiers XML. Ces fichiers décrivent le classeur, ses feuilles, les données de tout le classeur ainsi que les informations de mises en page de cellesci. Les classeurs Excel2007 supportent : la mise en forme des cellules et de la feuille, les formules et les images, la protection des données, les méta-informations (auteur, titre, description), les feuilles multiples. Pour générer un classeur à ce format il faut : inclure le fichier Excel2007.php, créer un objet de la classe PHPExcel _ Writer _ Excel2007, utiliser l'extension.xlsx et le type MIME application/ vnd.openxmlformats-officedocument.spreadsheetml.sheet. Dans cet article, les listings 1 (fonctions) et 2 (script principal) permettent de générer des documents dans différents formats, dont Excel2007. Le script principal comporte une partie indépendante du format de sortie (création du classeur et de ses feuilles, ajout de données et mise en forme) et une partie spécifique. Les instructions utilisées dans la première partie pour générer le classeur, placer et mettre en forme les données, ont été présentées dans l'article du numéro précédent (Générer des classeurs pour tableur avec PHPExcel). Le script principal de cet article (Listing 2) permet à l'internaute de choisir le format de sortie souhaité, grâce à l'argument format dans l'url (méthode GET). Pour générer un fichier Excel2007, le script reçoit en paramètre : differents_formats.php?format=excel2007 Le script récupère la valeur du choix passé en paramètre et l'envoie à la fonction genererdoc (Listing 1). Celle-ci prend trois arguments : l'objet $classeur, le format $format _ sortie et un argument facultatif qui permettra de stocker le fichier sur le disque du serveur web (cf Stocker le fichier sur le serveur). Par défaut, le fichier sera envoyé vers le navigateur. Si on lui passe le format Excel2007, la fonction genererdoc : inclut la bibliothèque associée au format de sortie qu'elle reçoit en paramètre (instruction require), instancie un objet PHPExcel _ Writer _ Excel2007, fixe le nom du fichier (nom du script avec l'exten l'extension.xlsx), génère les lignes d'en-tête HTTP suivantes (type MIME du fichier, nom et disposition) et envoie le document au navigateur (flux php://output) : header('content-type:application/vnd.openxmlformatsofficedocument.spreadsheetml.sheet'); header('content-disposition:inline;filename=differe nts_formats.xslx'); CSV Les tableurs peuvent importer les données d'un tableau à deux dimensions, stocké dans un fichier texte comportant des délimiteurs de cellules et de lignes. En fonction du caractère délimiteur de cellule utilisé, ce format de stockage est nommé CSV (Comma Separated Value) ou TSV (Tab Separated Values). Ces formats sont très utilisés pour échanger des informations entre applications, ou manipuler et présenter des données issues d'une base de données. Cette section présente rapidement le format CSV, et explique comment générer un fichier CSV à partir d'un classeur. Définition du CSV Un fichier CSV est un fichier texte qui contient les données d'un tableau et des séparateurs de cellules, géné- Figure 2. Feuilles du classeur au format HTML Figure 3. Feuille 1 du classeur au format PDF 3 9/2011

pour les débutants ralement des virgules, et de lignes. Il peut être ouvert dans le tableur Microsoft Excel ou dans le tableur Calc de la solution bureautique alternative gratuite OpenOffice.org. Le format CSV permet de stocker un tableau à deux dimensions dans un format texte très simple : une ligne de tableau par ligne de fichier, la première ligne contient les titres des colonnes du tableau, les cellules d'une ligne de tableau sont séparées par des virgules, chaque li ne ligne comporte le même nombre de cel cellules, si le texte d'une cellule contient un caractère délimiteur, il faut entourer le texte de guillemets, délimi si le texte contient un guillemet, il faut répéter le guillemet et entourer le texte de guillemets. Par exemple, la première ligne de la deuxième feuille du classeur de l'exemple sera ainsi formatée en CSV : Listing 2. differents_formats.php <?php // inclure la bibliotheque principale require PHPExcel.php ; require fonctions.php ; try{ /* PARTIE INDEPENDANTE DU FORMAT DE SORTIE */ // creer le classeur $classeur = new PHPExcel(); // selectionner la feuille de travail $feuille = $classeur->getactivesheet(); // Tableau de donnees a deux dimensions $donnees_feuille1 = array( ); array( lettres, chiffres ), array( xxx,12), array( yyy,5), array( zzz,214) // ajouter des donnees dans la feuille ajouterdonnees($feuille, $donnees_feuille1); Produit,Couleur,Taille,Prix,Livraison Par défaut, certains tableurs importent directement les données pour le format CSV, sans demander les séparateurs de cellules, de lignes ou les délimiteurs de texte. Générer un CSV La bibliothèque PHPExcel permet d'enregistrer les données d'une feuille du classeur au format CSV, et une seule uniquement. C'est la classe PHPExcel_Writer_ CSV, définie dans le fichier CSV.php, qui permet l'export d'une des feuilles du classeur au format CSV. Si le classeur comporte plusieurs feuilles, il faut créer un fichier CSV par feuille. Le document généré ne comporte que les données brutes, aucune information de style et de mise en page ne peut être exportée. Pour générer un document CSV, il faut : inclure le script CSV.php, créer une instance de PHPExcel _ Writer _ CSV (objet $writer), ); array( Chaussure, marron, 43,42, sous 48H ) ajouterdonnees($feuille2, $donnees_feuille2); // mise en page >setautosize(true); $style_feuille = $feuille2->getstyle( A1 ); $style_feuille_font = $style_feuille->getfont(); $style_feuille_font->setname( Verdana ); $style_feuille_font->setsize(14); $style_feuille_font->setbold(true); $feuille2->getcolumndimension( A )- $feuille2->getcolumndimension( E )- >setautosize(true); $style_feuille = $feuille2->getstyle( E1 ); $style_feuille_font = $style_feuille->getfont(); $style_feuille_font->setsize(14); $style_feuille_font->setbold(true); $style_feuille = $feuille2->getstyle( E2 ); $style_feuille_font = $style_feuille->getfont(); $style_feuille_font->getcolor()->setargb(phpexcel_ Style_Color::COLOR_RED); // creer une deuxieme feuille $feuille2 = $classeur->createsheet(); // definir le titre de la feuille $feuille2->settitle( Commandes ); $feuille2->getrowdimension( 1 )->setrowheight(35); $donnees_feuille2 = array( array( Produit, Couleur, Taille, Prix, Liv raison ), array( T-shirt, marron, L,16, EFFECTUEE ), array( Pantalon, bleu, 42,69.9, sous 48H ), /* PARTIE DEPENDANTE DU FORMAT DE SORTIE */ // envoi au navigateur ou stockage sur le serveur $format = (isset($_get[ format ]))? $_ GET[ format ] : ; $stocker = isset($_get[ stocker ]); genererdoc($classeur, $format, $stocker); catch(exception $e){ die( echec :.$e->getmessage());?> phpsolmag.org/fr 4

Pour les débutants choisir la feuille à exporter, s'il y en a plusieurs, avec la méthode SetSheetIndex de la classe PHPExcel _ Writer _ CSV. La méthode prend en argument l'indice de la feuille du classeur (la première feuille a l'indice 0), utiliser l'extension.csv et le type MIME text/csv. Pour générer un CSV (Figure 1), le script PHP reçoit le format CSV en paramètre : differents_formats.php?format=csv La fonction genererdoc (Listing 1) : inclut la bibliothèque associée au format de sortie qu'elle reçoit en paramètre, instancie un objet PHPExcel _ Writer _ CSV, indique que le séparateur de cellules doit être une virgule (méthode setdelimiter) et que la feuille à exporter est la seconde (méthode SetSheetIndex), génère les lignes d'en-tête HTTP suivantes (type MIME du fichier, nom et disposition) et envoie le document au navigateur (flux php://output). header('content-type:text/csv'); header('content-disposition:inline;filename=differents_ formats.csv'); PDF La classe PHPExcel_Writer_PDF, définie dans le fichier PDF.php, permet d'exporter une des feuilles du classeur, ou tout le classeur, au format PDF. PHPExcel utilise le générateur de PDF FPDF. Ce freeware est inclus dans la distribution PHPExcel 1.7.6. Attention, l'export ne conserve pas toutes les propriétés de style (Figure 3). Pour générer un document PDF, il faut : inclure le script PDF.php, créer une instance de PHPExcel _ Writer _ PDF, choisir la feuille à exporter, s'il y en a plusieurs, avec la méthode SetSheetIndex de la classe PHPExcel _ Writer _ PDF. La méthode prend en argument l'indice de la feuille du classeur. Par défaut c'est la première feuille qui est exportée. Pour exporter tout le classeur il faut utiliser la méthode writeallsheets. utiliser l'extension.pdf et le type MIME application/ pdf. L'extension GD2 est nécessaire si vous souhaitez exporter en PDF ou en BIFF5 une feuille de classeur contenant des images (cf Générer des classeurs pour tableur avec PHPExcel dans le numéro précédent). HTML Il est possible de générer une des pages du classeur, ou tout le classeur, au format HTML. Attention, là aussi l'export ne conserve pas toutes les propriétés de style. Cette fonctionnalité peut être utile si l'internaute n'a pas de tableur ou pour visualiser rapidement les données. Pour générer un document HTML, il faut : inclure le script HTML.php, créer une instance de PHPExcel _ Writer _ HTML, déterminer la feuille à exporter, s'il y en a plu plusieurs, avec la méthode SetSheetIndex de la classe PHPExcel _ Writer _ HTML ou utiliser la méthode writeallsheets pour indiquer qu'il faut exporter toutes les feuilles, par défaut c'est la première feuille qui est exportée, utiliser l'extension.html et le type MIME text/html. Si aucun format n'est fourni au script, c'est le format HTML qui est pris par défaut dans la fonction genererdoc. BIFF5 Les versions antérieures de Microsoft Excel ne peuvent pas ouvrir les documents au format Excel2007. Pour générer un document pour ces tableurs, vous devez utiliser la classe PHPExcel_Writer_Excel5, définie dans le fichier Excel5.php. Cette classe est une réécriture du module PEAR Spreadsheet_Excel_Writer (PHP4), elle comporte les mêmes limitations que la classe PEAR. Le document est généré au format BIFF5 (Excel5 Binary Interchange File Format). L'extension à utiliser est.xls. Lors de l'export du classeur certaines fonctionnalités ne seront pas conservées (dégradé de couleur de fond, style par défaut de la feuille, style conditionnel, metainformations...). Pour que le document soit généré au format BIFF5, il faut : inclure le script Excel5.php, créer une instance de PHPExcel _ Writer _ Excel5, utiliser l'extension.xls et le type MIME application/ vnd.ms-excel. Vous avez jusqu'à présent généré avec PHPExcel des fichiers qui étaient envoyés au navigateur. Vous allez apprendre dans la section suivante à stocker le document sur le disque. Stocker le fichier sur le serveur Toutes les classes décrites ci-dessus (PHPExcel_ Writer_*) définissent la méthode save. Comme vous l'avez vu, celle-ci permet d'envoyer le document au navigateur si elle prend en argument le paramètre php:// output. Elle peut aussi stocker le classeur sur le ser- 5 9/2011

pour les débutants Sur Internet http://www.php.net - Site officiel de PHP, http://phpexcel.codeplex.com site officiel de la bibliothèque PHPExcel. veur web. Pour ce faire, il faut lui passer en argument le chemin où doit être enregistré le fichier. La fonction genererdoc du Listing 1 indique que le fichier doit être enregistré dans un répertoire 'resultats' situé dans le même répertoire que le script exécuté. Sous Linux/MacOS, veillez à ce que le script ait les droits en écriture sur ce dossier. Les choix du format et du mode de sortie sont réalisés dans l'url. L'argument format contrôle le format de sortie (cf la partie Excel2007). Si l'argument stocker est présent, le fichier est enregistré sur le disque du serveur web, sinon il est envoyé vers le navigateur. Dans l'exemple ci-après, l'appel au script enregistrera le document au format Excel5 sur le disque du serveur : differents_formats.php?format=excel5&stocker Conclusion Dans cet article, vous avez appris à générer des documents dans les différents formats de sortie proposés par la bibliothèque PHPExcel : Excel2007, CSV, PDF, HTML et BIFF5. Vous avez vu comment stocker ces documents sur le disque dur du serveur web ou les envoyer vers le navigateur. Dans les prochains numéros, vous verrez comment réaliser la mise en page, fixer le style des cellules et des feuilles et comment insérer des formules et des images dans les cellules. CILIA MAURO, MAGALI CONTENSIN Cilia Mauro est gestionnaire de bases de données et développeur d applications web au CNRS. Elle enseigne les bases de données et PHP à l université. Contact : cilia.mro@gmail.com Magali Contensin est chef de projet en développement d applications au CNRS. Elle enseigne depuis plus de dix ans le développement d applications web à l université et est l auteur de nombreux articles sur le développement web en PHP. Contact : http://magali.contensin.online.fr phpsolmag.org/fr 6