CSV Datei enthält leider HTML Code

Hallo zusammen,

nach einer DB Abfrage wird eine CSV Datei generiert. Diese wird dann auf dem Server in ein Verzéichnis kopiert. Öffnet man diese dort - alles wunderbar.

Aber:
die Datei wird im webfrontent per link generiert. Danach erscheint nach einem Header redirect auf der selben seite ein link, der da ist um die Datei zu öffnen. Es werden folgende Header Angaben gesetzt:

Code:
//alles vereinfacht und auszugsweise

//wenn CSV generiert ok .. dann link generieren
if($mp_arr['report'] == 'ok') {
   $link = SELF.'?down=1&file='.$mp_arr['file'];
   $message = 'Die CSV Datei ' . $mp_arr['file'] . ' kann hier herunter geladen werden: ';
}
	
//wenn die Daeti geöffnet werden soll
if(isset($mp_arr['down'] )) {
   header("Content-type: application/csv");
   header("Content-Disposition: attachment; filename=$filename" );
   header("Expires: 0");
   header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
   header("Pragma: public");

   readfile(DOCROOT.'/customer/phoenix/'.$mp_arr['file']);
}

Klickt man auf den link kommt die Dialog Box des IE "Dateidownload" Wollen Sie speichern oder öffnen". Klicke ich auf Speichern oder öffnen, wird die entsprechende Datei in Excel geöffnet, die Tabelle ist wunderbar, aber ... ganz unten steht der HTML Quellcode der aktuellen HTML Datei drin ....

Ich gehe davon aus, dass die Headerinfos nicht ganz korrekt sind (sind gegoogelt).

Weiss jemand warum der HTML Code in die Datei übernommen wird?

Besten Dank und Grüsse
 
Hi,

das klappt aber bei meinem Script nicht. Ich setze die CSV zusammen und dann wird es sofort per header() als download bereitgestellt. Die() würde den header befehl ja nicht mehr ausführen.

Wieso kommt der HTMLCode eigentlich in die Datei?

PHP:
if($f=fopen("csv/".$filename,'w')) { 
while($result->next_record()) { 
$eintrag =$result->f("id").";";
$eintrag.=$result->f("betreff").";";
$eintrag.=$result->f("text").";";
fputs($f,$eintrag."\r\n");
} 
fclose($f);
}
 
Hi,

das kannst Du umgehen, indem Du erst die Datei generierst, auf dem Server ablegst (was ja aus Datenvorhaltungsgründen mehr als sinvoll ist) und danach einen link generierts, unter welchem die Datei dann runtergeladen werden kann. Sofort die Datei zu generieren ist glaub ich ziemlich problematisch ...

Der HTML Code kommt durch die Header Aufrufe in die Datei.

Gruss

Andy
 
Hier mal ein Beispiel:

PHP:
function erstelle_backup()
{
    $sql  = "SELECT * FROM artikel";
    $sqlq = mysql_query($sql);
  
    $handle = fopen("./CSV/backup vom ".ermittle_datumzeit(time())." - ".time().".csv","w"); 

    while($row = mysql_fetch_row($sqlq))
    { 
      $array = array($row[1],$row[2],$row[3],str_replace("\s\n","<br>",$row[4]),$row[5],$row[6],$row[7],$row[9],$row[10],$row[8],$row[11],$row[12]);
      putcsv($handle, $array, ";", '"');
    }
    fclose($handle);
 
Zurück