Frage

Ich weiß, diese Frage vor gefragt worden, aber ich lief in ein Problem.

Seltsamer, wenn ich diese Funktion ausführen, enthält es den HTML-Code der Seite, dass der Link wählen Sie die Funktion auszuführen.

function exportCSV($table) {
    $result = mysql_query("SHOW COLUMNS FROM ".$table."");
    $i = 0;
    if (mysql_num_rows($result) > 0) {
        while ($row = mysql_fetch_assoc($result)) {
            $csv_output .= $row['Field']."; ";
            $i++;
        }
    }
    $csv_output .= "\n";

    $values = mysql_query("SELECT * FROM ".$table."");
    while ($rowr = mysql_fetch_row($values)) {
        for ($j=0;$j<$i;$j++) {
            $csv_output .= $rowr[$j]."; ";
        }
        $csv_output .= "\n";
    }

    $filename = $file."_".date("Y-m-d_H-i",time());
    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: csv" . date("Y-m-d") . ".csv");
    header( "Content-disposition: filename=".$filename.".csv");
    print $csv_output;
    exit;
}

Weiß jemand, warum es den HTML-Code in der CSV-Datei enthalten würde? alt text http://i35.tinypic.com/16i9oxi.jpg

War es hilfreich?

Lösung

Meine Vermutung ist, dass Sie irgendeine Art von Vorlage haben, die die gleichen HTML-Header und Footer unabhängig von der Seite, die angefordert wird, erzeugt. Irgendwann vor der ExportCSV Funktion aufgerufen wird, wird der Header erzeugt.

Sie zeigen nicht die Unterseite des Ausgangs, aber ich werde die Fußzeile ist es wetten, da ich die Flusskontrolle vermuten wird, nachdem die Funktion beendet wird zu diesem Code weiterzumachen.

Andere Tipps

php ist nicht wirklich mein Ding, aber es scheint, wie Sie den Antwortstream löschen müssen, bevor Sie Ihre Inhalte auszuschreiben. Vielleicht etwas anderes html aus dem Stream schreibt, bevor Sie diese Funktion zu erreichen? Wie eine Vorlage oder Master-Seite oder etwas in der Art?

Der HTML-Inhalt sieht aus wie ein typisches Kopf / nav bar. wenn es etwas anderes darunter das ist automatisch, dass die Inhalte, die Sie für diese Route deaktivieren müssen?

Sie haben einen Steuerfluss Problem irgendwo bekommen - es den HTML-Kopf scheinen Teil und Navigation ist standardmäßig in jeder Seite enthält, in dem darunter eine, die die CSV erzeugt. Eine Lösung wäre, für eine CSV-Anfrage zu überprüfen und, wenn das der Fall ist, enthalten nicht den HTML-Code, würde ein anderer sein Ausgabepufferung zu verwenden und dann verwerfen alle vorherigen Ausgabe direkt vor die CSV-Daten ausgegeben werden.

Ich schlage vor, die Initialisierung der csv_output Variable auf den leeren String am Anfang des Verfahrens. Alle Ihre Operationen in dem Verfahren sind Verkettungen, so bringen Sie wahrscheinlich entlang einigen alten Daten.

Bitte beachten Sie, dass Sie möglicherweise sensible Daten auf die gesamte Welt zeigen. Sie haben ein Dutzend Leute haben, die jetzt ihre E-Mail und Adressen veröffentlicht haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top