Heiko: csv einfach zum download anbieten

Hallo zusammen & schönes Wochenende,

ich hab einem Kunden ein cms mit php&mysql gebastelt in dem sich User mit sehr vielen Daten anmelden müssen. Diese Daten sind nun alle in einer tabelle gespeichert.

Ich würde es meinem Kunden jetzt gerne ermöglichen eine csv mit genau dieser tabelle herunterzuladen damit er die user direkt in sein Excel integrieren kann (Newsletter per snailmail usw.)

Hat jemand vielleicht ne Hilfe wie ich so eine csv dynamisch erstellen lassen kann? tutorials? Beispielscripte?

Wär prima!

Vielen Dank,
Heiko

  1. Hallo zusammen & schönes Wochenende,

    Hat jemand vielleicht ne Hilfe wie ich so eine csv dynamisch erstellen lassen kann? tutorials? Beispielscripte?

    Beim CSV Trennzeichen der Spalten musst du aufpassen, es darf nicht in den Werten einer Spalte vorkommen.

    Dann erstellst du ein Script, evntl. in PERL was die Tabelle ausliest und mit den Werten die CSV Datei zeilenweise schreibt.

    Ansonsten reicht es sicher, wenn ein Cronjob das Erstellen der CSV Datei macht, also regelmäßig auf dem Server.

    Diese CSV Datei verlinkst du einfach auf der Seite. Klick ...

    Gruss, Rolf

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?
  2. Hi,

    gibt ja da den einfachen weg über PHP:

    <?php

    // Verbindung zur Datenbank
    $db = mysql_connect(... , ... , ...);
    mysql_select_db(... , $db);

    // Datenabfrage
    $query = "SELECT * FROM <TABLE>;";
    $res = mysql_query($query , $db);

    // Datenauswertung
    if(! mysql_num_rows($res)) {
        echo "Keine Daten gefunden!";
        // oder:
        // header("Location: errorpage.htm");
    } else {
        $csv_output = "";
        while($row = mysql_fetch_row($res)) {
            // Erzeugt semikolongetrennte Werte, die mit "" eingeschlossen sind (CSV)
            $csv_output .= """.implode("";"", $row).""\n";
        }
        header("Content-Type: text/x-csv");
        header("Content-Disposition: attachment; filename=list.csv");
        echo $csv_output;
    }

    ?>

    Hinweis: Keine Leerzeichen vor dem ersten <?php, sonst gehts net ;o)

    Gruss Stefan

    1. Hi,

      ma'ne Frage (ich kenne PHP nicht)

      header("Content-Type: text/x-csv");
          header("Content-Disposition: attachment; filename=list.csv");

      Gibt die header() Funktion jedesmal eine Leerzeile aus? Wenn ja, dürfte das da oben nicht klappen, weil die Leerzeile ja erst kommen muss, wenn der header zuende ist.

      Gruss, Rolf

      --
      SELFforum - Das Tor zur Welt!
      Theoretiker: Wie kommt das Kupfer in die Leitung?
      Praktiker: Wie kommt der Strom in die Leitung?