PRATIQUE PHP 
Stocker ses données dans un fichier CSV
 
Utiliser fputcsv() pour construire un premier système de stockage de données complexes. (01/06/2006)
  Forum

Réagissez dans les forums de JDN Développeurs

Le format de fichier texte CSV est aujourd'hui un standard dans l'échange de données entre applications d'éditeurs différents. Format par défaut de MS Excel, il est également utilisé par une pléthore d'autres applications non-MS, du fait de sa simplicité d'implémentation : les données sont séparées par une virgule, ce qui a donné son nom au format (Comma-Separated Values). Même s'il ne dispose pas d'une spécification précise, c'est un standard industriel de facto de la période pré-XML.

PHP dispose d'une fonction de chargement de fichier CSV, fgetcsv(), depuis sa version 3.0.8 du 22/05/99, mais ce n'est que depuis sa version 5.1 (16/08/05) que PHP peut nativement écrire des fichiers dans ce format, avec fputcsv(). Là où fgetcsv() recherche les champs CSV dans la ligne courante du fichier chargé (et les renvoie sous forme de tableau), fputcsv() formate un tableau en champs CSV, et sauve le tout dans un fichier.

Nous avons déjà abordé fgetcsv() (lire notre article du 14/12/04), il est temps de se pencher sur sa contrepartie. fputcsv() fonctionne de la même manière que fputs(), mais prend un tableau en second argument, et les deux arguments suivants définissent le séparateur et l'encadreur, dans le cas où le format doit différer des standards virgule et guillemet.

Ainsi, pour écrire dans un fichier les informations équivalentes à ce tableau :

Parts de marché des navigateurs utilisés par les professionnels français
(en milliards d'euros)
Période
IE
Firefox
Autres
Avril 2006
70,4
20,9
8,7
Mars 2006
71,4
20,4
7,9

...on passera par le code suivant :

  1.  <?php
  2. $data = array(
  3.   array(Période, IE, Firefox, Autres),
  4.   array('Avril 2006', '70,4', '20,9', '8,7'),
  5.   array('Mars 2006', '71,4', '20,4', '7,9')
  6.   );
  7.  
  8. if ($f = @fopen('usage.csv', 'w')) {
  9.   foreach ($data as $ligne) {
  10.     fputcsv($f, $ligne);
  11.     }
  12.   fclose($f);
  13.   }
  14. else {
  15.   echo "Impossible d'acc&eacute;der au fichier.";
  16.   }
  17. ?>

Les différents tableaux pouvant être produits dynamiquement, voire chargés depuis un autre fichier CSV, il devient possible de se créer rapidement un système de stockage par fichiers texte, dernière étape avant le passage à des solutions plus solides, comme SQLite ou MySQL.

 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page