csv aus sql datenbank zeilenweise in datei schreiben
neuling28
- php
0 Thomas Luethi0 suit0 Tom
Hi Leuts,
ich habe hier einen Code, mit dem ich mir in meiner Datenbank befindliche Datensätze
durch Komma getrennt ausgeben lassen kann.
Wie stelle ich es aber nun an, diese Ausgabe zeilenweise in eine Datei zu schreiben ???
Schön wäre auch, wenn ich gleich noch in der ersten Zeile die Tabellen Header mit gleicher Trennung schreiben könnte.
Wäre euch für einen Hinweis sehr dankbar.
mysql_select_db($database_local, $local);
$query_images = "SELECT * FROM 00\_images
";
$images = mysql_query($query_images, $local) or die(mysql_error());
$row_images = mysql_fetch_assoc($images);
$totalRows_images = mysql_num_rows($images);
$numfields = count($row_images);
do{
$i=0;
foreach ($row_images as $value){
echo """.$value.""";
if (++$i < $numfields){
echo ",";
}
}
echo "<br/>";
} while ($row_images = mysql_fetch_assoc($images));
mfg
neuling28
Keywords: csv aus sql datenbank zeilenweise in datei schreiben
Hallo,
Wie stelle ich es aber nun an, diese Ausgabe zeilenweise in eine Datei zu schreiben ???
Grundlage: Funktionen des Dateisystems
http://www.php.net/manual/de/ref.filesystem.php
Für Dich interessant sind insbesondere fwrite() und
file_put_contents(). Letzteres ist bequemer, aber
leider erst ab PHP 5 möglich.
HTH, mfg
Thomas
Wie stelle ich es aber nun an, diese Ausgabe zeilenweise in eine Datei zu schreiben ???
http://de.php.net/fopen
http://de.php.net/fwrite
http://de.php.net/fclose
$file = fopen('/home/www/woauchimmer/example.csv', a);
fwrite($file, 'feld1; feld2; feld3;' . "\n");
fclose($file);
alternativ: phpmyadmin könnte hilfreich sein - das kann vernünftig csv importieren und exportieren
Hello,
*** huch da fehlt noch die Verbindung zum Server...
*** aber das kannst Du mal selber einbauen
if(mysql_select_db($database_local, $local))
{
$query_images = "SELECT $fieldlist FROM 00\_images
";
$result = mysql_query($query_images, $local) or die(mysql_error());
if ($result)
{
if ($fh = fopen($dateiname, 'wb+'))
{
if ($flock($fh, LOCK_EX))
{
while ($_row = mysql_fetch_assoc($result))
{
if(!fputcsv($fh, $_row, ,';' '"'))
{
fehlermeldung('umpf, kann nicht mehr schreiben');
break;
}
}
}
else
{
fehlermeldung('blah, Fehler beim Locking');
}
fclose($fh);
}
else
{
fehlermeldung('blubb, Fehler bei Dateiöffnung');
}
mysql_free_result($result);
}
else
{
fehlermeldung('hagah, Kein MySQL-Result vorhanden: '.mysql_error($con);
}
}
else
{
fehlermeldung ('dammich, kann Datenbank nicht ansprechen');
}
http://de.php.net/manual/en/function.fputcsv.php
Mit fputcsv() kannst Du eine CSC-Datei erzeugen, die nachher mit fgetcsv wieder lesbar ist.
Alle CSV-Leseprogramme können damit aber nicht umgehen, weil hier nur Strings in die Delimiter eingepackt werden, reine numerische Werte aber nicht. Das mag aber Excel nun wieder ganz gerne, weil es daran die Typunterscheidung betreibt.
Ein harzliches Glückauf
Tom vom Berg