2016-06-04 18 views
1

Ich habe PHP-Skript exportiert Datensatz aus der Datenbank in CSV-Datei. Wenn ich auf Export-Schaltfläche klicke, erstellt es eine CSV-Datei auf dem Server (aktueller Standort). Alle Daten werden ordnungsgemäß in einer CSV-Datei angezeigt, aber sie sollte nicht auf dem Server gespeichert werden. Sie sollte im System heruntergeladen werden. Diese Frage könnte doppelt sein, aber ich habe keine Antwort gefunden.Exportierte Datei auf Server speichern. Es sollte im System heruntergeladen werden, ohne auf dem Server zu speichern

Code für exportierte Daten in CSV-Datei.

$monthData = mysql_query($query, $conn); 
$columns_total = mysql_num_fields($monthData); 

$output = ""; 

for ($i = 2; $i < $columns_total; $i++) { 
    $heading = mysql_field_name($monthData,$i); 
    $output .= '"'.$heading.'",'; 
} 
$output .="\n"; 

while ($row = mysql_fetch_array($monthData)) { 
    for ($i = 2; $i < $columns_total; $i++) { 
     $output .='"'.$row["$i"].'",'; 
    } 
    $output .="\n"; 
} 
$fileName = $month.'Data.csv'; 
$csvfile = fopen($fileName, "w") or die("Unable to open file!"); 
fwrite($csvfile, $output); 

fclose($csvfile); 

Wie pro meine Forschung oder Wissen, ich denke, dass es notwendig ist, einige Header hinzuzufügen (die angeben, Dateiname, Dateigröße und viele andere). Ich habe nicht viel Wissen darüber, warum und wo muss ich es hinzufügen.

Kann mir jemand helfen?

+0

ändern '$ csvfile = fopen ($ filename, "w")' auf '$ csvfile = fopen ('php: // output', "w")' .... und sende [headers] (http://php.net/manual/en/function.header.php), bevor du das tust .... die Beispiele in dem Link, den ich gepostet habe, zeigen, wie man Header für eine PDF-Datei sendet, aber Sie sollten einfach in der Lage sein, den Inhaltstyp in 'text/csv' anstatt –

+0

@MarkBaker - Danke für die Antwort zu ändern. Die Datei wird jetzt nicht einmal auf dem Server heruntergeladen. Es zeigt mir eine Warnung - Header-Informationen können nicht geändert werden - Header, die bereits von .............. gesendet wurden. Es kann sein, dass ich den Header falsch verwendet habe. Kannst du bitte die Syntax posten? Es ist dringend. –

+0

Sie müssen Ihre Header senden, bevor Sie etwas an 'php: // output' senden ... Wenn Sie diese bestimmte Nachricht sogar mit den Headern vor dem Öffnen der Datei erhalten, sendet etwas anderes in Ihrem Code die Ausgabe an den Browser , und die Fehlermeldung sollte Ihnen genau sagen, wo –

Antwort

1

Hier gehen Sie die einfache Antwort auf Ihre Frage.

<?php 
header('Content-Type: text/csv; charset=utf-8'); 
header('Content-Disposition: attachment; filename=testdata.csv'); 

// create a file pointer connected to the output stream 
$output = fopen('php://output', 'w'); 

// fetch the data 
$row = array(array('row1val','row1val','row1val'),array('row2val','row2val','row2val')); 

// loop over the rows, outputting them 
foreach($row as $fields): 
fputcsv($output, $fields); 
endforeach; 

fclose($output); 

?> 

Dank

+0

Wie können Sie die exportierte Datei auch auf dem Server speichern? – karadayi