Page 1 sur 1

Export en CSV

Posté : 31 mai 2013, 09:44
par Gorbi
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 ?

Re: Export en CSV

Posté : 31 mai 2013, 10:28
par ghost5922
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");

?>

Re: Export en CSV

Posté : 31 mai 2013, 15:09
par Gorbi
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 :(

Re: Export en CSV

Posté : 31 mai 2013, 15:10
par ghost5922
Bonjour,

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

Re: Export en CSV

Posté : 31 mai 2013, 15:16
par ghost5922
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