2013-06-29 5 views
5

Hier ist mein PHP-Code, um eine. CSV-Datei basierend auf einigen SQL-Daten zu erstellen. Es funktioniert wie beabsichtigt, das einzige Problem ist, dass es erstellt einfach eine .CSV-Datei auf dem Server, und fordert den Benutzer nicht auf, es herunterladen.Wie fordere ich den Benutzer auf, eine PHP-generierte .CSV-Datei herunterzuladen, und wie soll ich damit umgehen?

<?php 
    require_once "../assets/repository/mysql.php"; 

    $query = "SELECT * FROM datashep_AMS.COMPLETE_APPLICATIONS"; 
    $results = mysql_query($query); 

    $first = true; 

    $out = fopen('export.csv', 'w'); 

    while($row = mysql_fetch_assoc($results)){ 
     if($first){ 
      $titles = array(); 
      foreach($row as $key=>$val){ 
       $titles[] = $key; 
      } 
      fputcsv($out, $titles); 
      $first = false; 
     } 
     fputcsv($out, $row); 
    } 

    fclose($out); 
?> 

Also meine Frage ist, wie kann ich den Benutzer herunterladen die Datei sofort bei der Generierung?

Und wenn ich sie heruntergeladen habe (oder abgelehnt habe), wie sollte ich mit dem Löschen der CSV-Datei von meinem Server umgehen?

Antwort

12

keine Notwendigkeit, etwas auf dem Server zu speichern (und somit keine Notwendigkeit zu löschen ...). Nur die Ergebnisse an den Browser zurückschreiben und legen Sie die Header entsprechend:

<?php 
require_once "../assets/repository/mysql.php"; 

$query = "SELECT * FROM datashep_AMS.COMPLETE_APPLICATIONS"; 
$results = mysql_query($query); 

$first = true; 

header('Content-Type: text/csv'); 
header('Content-Disposition: attachment;filename="export.csv"'); 
header('Cache-Control: max-age=0'); 

$out = fopen('php://output', 'w'); 

while($row = mysql_fetch_assoc($results)){ 
    if($first){ 
     $titles = array(); 
     foreach($row as $key=>$val){ 
      $titles[] = $key; 
     } 
     fputcsv($out, $titles); 
     $first = false; 
    } 
    fputcsv($out, $row); 
} 

fclose($out); 
?> 
+0

Ihren Content-Typ festgelegt wird csv nicht excel –

+0

Thx @Dagon wollte OP „Excel“ aber du hast recht –

+0

ich nicht Sehen Sie das Wort Excel in seiner Frage. Wie auch immer CSV ist generisch, und kann von vielen Anwendungen geöffnet werden, sind Excel-Dateien ein proprietary Format –

Verwandte Themen