Sascha: CSV-Datei via PHP generieren

Hallo Forum!

Wie kann ich eine CSV-Datei generieren, die der User dann bei sich speichern kann?

Es ist so, dass ich in dieser Datei einen Datenbank-Dump habe und dieser der User weiterverwenden kann. Dazu soll er die CSV-Datei bei sich Speichern.

Wie kann ich das umsetzten

Vielen Dank und Grüße

Sascha

visit: http://www.radiobot-online.de.vu
visit: http://www.projekt-online.de.ms
visit: http://www.sgo.net.ms

  1. Ich bins nochmal ;-)

    die Datei soll quasi 'on the fly' generiert werden

    Viele Grüße

    Sascha

    visit: http://www.radiobot-online.de.vu
    visit: http://www.projekt-online.de.ms
    visit: http://www.sgo.net.ms

  2. Hallo Sascha,

    diese Frage hatte ich gestern schon von dir gelesen. Bleibe doch bitte in deinem Thread.

    Schönen Gruß aus München

    die knappschaft

    --

    sh:(  fo:|  ch:?  rl:°  br:$,<,>  n4:&  ie:|  mo:|  va:)  de:]  zu:)  fl:|  ss:|  ls:[,#
    1. Hallo "die Knappschaft"

      Gestern war es eine andere Problematik... heute geht es mir darum ne CSV Datei zu generieren.

      Wobei ich nur wissen wollte wie sich es damit den Headern verhält..

      aber dennoch danke für Deine hilfe

  3. Hi,

    Es ist so, dass ich in dieser Datei einen Datenbank-Dump habe und dieser der User weiterverwenden kann. Dazu soll er die CSV-Datei bei sich Speichern.

    Du könntest das ganze so machen:

    header( "Content-Type: text/plain; name=csv_dump" );
    header( "Content-Transfer-Encoding: BASE64;" );
    header( "Content-Disposition: attachment; filename=dump.csv" );

    echo ""Spalte1";"Spalte2";"Spalte3"\n\n";

    while($entry = mysql_fetch_row($result)) {
        echo ""$entry[0]";"$entry[1]";"$entry[2]"\n";
    }
    die;

    Gruß,
    small-step

    1. Hey small-step!

      Vielen dank, werde mich jetzt daran machen :-)

      Viele Grüße

      Sascha

    2. Holladiewaldfee,

      while($entry = mysql_fetch_row($result)) {
          echo ""$entry[0]";"$entry[1]";"$entry[2]"\n";

      Du mußt noch darauf achten, daß Anführungszeichen im String selbst verdoppelt werden müssen. Die Anführungszeichen selbst brauchst Du nur, wenn das Trennzeichen im String vorkommt, oder Anführungszeichen oder Zeilenumbrüche.

      Bei großen Datensätzen wird die Angelegenheit überigens deutlich beschleunigt, wenn Du

      echo 'bla'.$variable[1].'blafoo'.$var."\n";

      verwendest.
      Hier (http://de.php.net/manual/en/function.fgetcsv.php) gibt's in den Benutzerkommentaren eine halbwegs vernünftige Funktion fPutCSV zum Erstellen von CSV-Dateien. Diese auf "on-the-fly" umzuschreiben sollte kein größeres Problem sein.

      Ciao,

      Harry

      --
        Intelligenz ist nicht zwingend etwas positives.
        Man weiß erst, was man hatte, wenn man es verloren hat.
    3. Hallo small-step,

      header( "Content-Type: text/plain; name=csv_dump" );

      RFC 2616 definiert keinen Parameter namens 'name' für den Content-Type-Header. Daher dürfte der Parameter nichts bewirken. (btw: darf man nicht definierte Parameter überhaupt angeben?)

      Desweiteren ist der Medientyp für CSV text/comma-separated-values und nicht text/plain. So können Browser, die sich an den HTTP-Standard halten, auch angemessen auf derartige Resourcen reagieren.

      Viele Grüße,
      Christian

      --
      Glaube niemals dem Gelabber der Forums-Antworten. Das sind doch Minderheiten-Diskriminierer, Sexisten, Psychisch Kranke und Depressive.
      Ja auch Rassisten und ähnliche Sozialrowdies befinden sich da drunter. - </archiv/2003/8/54855/#m305505>