Export en CSV

Eléphant du PHP | 51 Messages

31 mai 2013, 09:44

Bonjour à tous
Alors voilà, je possède une base de données avec 9 tables. J'aimerais pouvoir exporter cette base au format CSV pour pouvoir archiver le site.

J'ai exploré la piste du script xls magique mais il semble que la version soit très ancienne et n'est plus compatible..

Des solutions ?

Mammouth du PHP | 619 Messages

31 mai 2013, 10:28

Bonjour,


j'ai pas testé
<?
function exportTable($table){
	$resQuery = mysql_query("SELECT * FROM $table");
	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";
	  }
	}
}

header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=table.csv");

exportTable("matable");

?>

Eléphant du PHP | 51 Messages

31 mai 2013, 15:09

Merci de ta réponse,

J'ai testé en mais je n'arrive pas à la faire fonctionner, le fichier .csv est censé se créer dans le même dossier ? Parce que je n'obtiens rien du tout :(

Mammouth du PHP | 619 Messages

31 mai 2013, 15:10

Bonjour,

non il généré le fichier a l'appelle de la page, tu veux le généré sur ton serveur ?

Mammouth du PHP | 619 Messages

31 mai 2013, 15:16

si jamais c'est le cas voila le code modifie toujours pas tester :p
<?
function exportTable($table){
	$contenu='';
        $resQuery = mysql_query("SELECT * FROM $table");
        if (mysql_num_rows($resQuery) != 0) {
          // titre des colonnes
          $fields = mysql_num_fields($resQuery);
          $i = 0;
          while ($i < $fields) {
                $contenu.=mysql_field_name($resQuery, $i).";";
                $i++;
          }
          $contenu.= "\n";
        
          // données de la table
          while ($arrSelect = mysql_fetch_array($resQuery, MYSQL_ASSOC)) {
           foreach($arrSelect as $elem) {
                $contenu.= "$elem;";
           }
           $contenu.= "\n";
          }
        }
		$fp = fopen ($table."_".time().".csv", "a+");
		fputs($fp, $contenu);
		fclose($fp);
}

exportTable("matable");

?>
je genere un fichier du nom de la table suivie du time