Page 1 sur 1

export csv

Posté : 03 déc. 2008, 12:01
par Invité
Bonjour à tous,
j'essaye d'exporter les données d'un table mysql vers un fichier csv.
globalement ça marche mais dès que j'ai des virgules ou apostrophes dons un champ, la mise en forme est saccagée dans le fichier excel.
Voyez vous comment contourner ce type de pb?

Mon code:
$query = "SELECT * FROM contacts";
$filename = "contacts.csv";

$resQuery = mysql_query($query);
header("Content-type: application/vnd.ms-excel"); 
header("Content-disposition: attachment; filename=\"$filename\"");

if (mysql_num_rows($resQuery) != 0) {
  // titre des colonnes
  $fields = mysql_num_fields($resQuery);
  $i = 0;
  while ($i < $fields) {
    echo mysql_field_name($resQuery, $i).";";
    $i++;
  }
  echo "\n";

  // données de la table
  while ($arrSelect = mysql_fetch_array($resQuery, MYSQL_ASSOC)) {
   foreach($arrSelect as $elem) {
    echo "$elem;";
   }
   echo "\n";
  }
}

Posté : 03 déc. 2008, 12:05
par yaug
Bonjour.
En général pour gérer du csv on utilise les fonctions fputcsv() et fgetcsv() de php.

Ton soucis avec la virgule vient du fait que la par défaut la virgule sert de délimiteur.
En utilisant les fonctions csv de php on peut définir le délimiteur.
Cela devrait pouvoir t'aider.