neuling28: csv aus sql datenbank zeilenweise in datei schreiben

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

  1. 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

  2. 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

  3. 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

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de