Datenbank in CSV exportieren

Cluster

Mitglied
Hi zusammen,

also ich versuche mich gerade an nem Script um meine DB in eine CSV zu exportieren nur leider bekomme ich immer nur eine leere Datei, evtl kann mir jemand da auf die Sprünge helfen.

PHP:
<?php
require_once("include/dbconnect.php");

$res=mysql_query("select * from tablename");

$out = '';


$fields = mysql_list_fields('dbname','tablename');


$columns = mysql_num_fields($fields);


// Put the name of all fields to $out.
for ($i = 0; $i < $columns; $i++) {
$l=mysql_field_name($fields, $i);
$out .= '"'.$l.'",';
}
$out .="n";

// Add all values in the table to $out.
while ($l = mysql_fetch_array($res)) {
for ($i = 0; $i < $columns; $i++) {
$out .='"'.$l["$i"].'",';
}
$out .="n";
}

// Open file export.csv.
$f = fopen ('export.csv','w');

// Put all values from $out to export.csv.
fputs($f, $out);
fclose($f);

header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="export.csv"');
readfile('export.csv');
?>
 
Hallo,

dein Script funktioniert bei mir gut.
Das einzigste was ich noch geändert habe sind deine Zeilenumbrüche:

PHP:
// Deine Zeileumbrüche
$out .="n";

// Sollte wohl so aussehen
$out .="\n";

// Oder für Windows Zeilenumbrüche
$out .="\r\n";

Frägst du vielleicht eine falsche Tabelle ab oder bekommst gar keine Datenbankverbindung und hast blöderweise die Fehlermeldungen abgeschaltet?

Gruß
Manuel.
 
Datenbankverbindung geht eigentlich gut, hier ist die dbconnect.php

PHP:
  //database settings
 
  $hostname = 'localhost';
  $username = 'user';
  $password = 'pass';
  $dbname = 'name';
 
  $db = mysql_connect($hostname,$username,$password) or die ("Keine Verbindung moeglich");
  mysql_select_db($dbname, $db) or die ("Die Datenbank existiert nicht");
 
Zuletzt bearbeitet:
Hallo,

wird die Datei exports.csv überhaupt erstellt?
Bzw. teste doch mal mit "is_writeable", nicht das die evlt. auf Read-Only ist oda so ähnlich.

Gruß
Manuel.
 
Die exprot.csv wird mit als Download gesendet nach dem aufruf der export.php udn lässt sich auch einfach öffnen im Office Excel, nur leider ist die dann leer.

EDIT: Jo kann ja auch net wenn ich keine export.csv aufm Server liegen habe :D

Aber irgendwie stehn da nur die Felder drin und nicht die Tabelleninhalte inhalte
 
Zuletzt bearbeitet:
Hallo

Welche Schreibrechte sind auf der Datei?
Setz die doch mal auf 777 und versuchs nochmal.
Außerdem kannst du auch noch Abfragen ob der fopen und fputs überhaupt erfolgreich waren.

Gruß
Manuel
 
so habs nochmal umgebaut nun hauts:

PHP:
<?php
require_once( str_replace('//','/',dirname(__FILE__).'/') .'include/dbconnect.php');

$table = "table";
$res = mysql_query("SELECT * from " . $table);

$out = "";

// Sucht alle Felder der Datenbank datenbankname zusammen aus der Tabelle tabellenname
$fields = mysql_list_fields('dbname','table');

// Zählt die Felder und übergibt an $columns.
$columns = mysql_num_fields($fields);


// übergibt die Namen an $out.
for ($i = 0; $i < $columns; $i++)
{
  $l = mysql_field_name($fields, $i);
  $out .= '"'.$l.'",';
}
$out .="\r\n"; 

// sammelt alle einträge in $out.
while ($l = mysql_fetch_array($res))
{
  for ($i = 0; $i < $columns; $i++)
  {
    $out .='"'.$l["$i"].'",';
  }
$out .="\r\n"; 
}

// öffnet file export.csv.
$f = fopen ('export.csv','w+');

//alle werte von $out gehn in die export.csv.
fputs($f, $out);
fclose($f);

header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="export.csv"');
readfile('export.csv');
?>
 
Zurück