![]() |
[php] "Speichern unter"-Dialog?
Hallo,
wie realisiere ich mit php einen "Speichern unter"-Dialog? Ich möchte eine Datenbank in eine *.csv-Datei exportieren. Den Export mache ich wie folgt:
Delphi-Quellcode:
Viele Grüße,
<?php
include "connect.inc.php"; $fp = fopen('file.csv', 'w'); $sql = "SELECT name, vorname, strasse FROM adressbuch"; $res = mysql_query($sql) or die("Fehler: " . mysql_error() . " $sql"); while($row = mysql_fetch_row($res)){ $line = implode(';', $row); fwrite($fp, $line . "\r\n"); } fclose($fp); ?> |
Re: [php] "Speichern unter"-Dialog?
Hallo!
Biete sie einfach zum Download an. Beispiel:
Code:
Grüße
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=".$filename); Faux |
Re: [php] "Speichern unter"-Dialog?
Code:
[Edit: War zu langsam]
header( 'Content-Disposition: attachment; filename='.$fname);
|
Re: [php] "Speichern unter"-Dialog?
Hi,
muss ich das nach dem fclose($fp) setzen? Bin PHP-Neuling :roll: Viele Grüße.. |
Re: [php] "Speichern unter"-Dialog?
Nein vor deinen Code.
|
Re: [php] "Speichern unter"-Dialog?
Hi,
das klappt zwar, aber jetzt wird nix mehr in die Datei geschrieben ?!? |
Re: [php] "Speichern unter"-Dialog?
Eigentlich müsste es danach geschrieben werden, weil die Datei innerhalb deines Skriptes erstellt wird, also nachdem der Download gestartet hat, dann kannst du wenig runterladen :zwinker:
Ich glaube (ich arbeite nicht mit header() direkt), dass er beim Aufruf von
Code:
sofort den Download startet.
header( 'Content-Disposition: attachment; filename='.$fname);
Flare |
Re: [php] "Speichern unter"-Dialog?
Poste mal deinen Code.
Zitat:
Grüße Faux |
Re: [php] "Speichern unter"-Dialog?
Du brauchst gar keine Datei zu schreiben, denn mit dem Header lenkst Du die Ausgabe ja um:
Delphi-Quellcode:
wenn Du schon eine Datei hast, kannst Du sie (nach dem Header) einfach mit readfile() ausgeben ...
header( 'Content-Disposition: attachment; filename='.$fname);
$sql = "SELECT name, vorname, strasse FROM adressbuch"; $res = mysql_query($sql) or die("Fehler: " . mysql_error() . " $sql"); while($row = mysql_fetch_row($res)){ $line = implode(';', $row); echo $line . "\r\n"; } |
Re: [php] "Speichern unter"-Dialog?
nene! Erst der header, dann die Infos.
Also: - Daten bereithalten/erzeugen/öffnen - Header schicken - Daten schicken für weitere Analyse bräuchten wir ein bisschen Code, Grolle. //roter kasten... ja... EDIT: nein, ein Header leitet gar nix um. Wenn er nicht der Location-Header ist. Der Content-Disposition-Header sagt nur, welcher Datentyp (genauer MIME-typ) zu erwarten ist, damit der User Agent entsprechend reagieren kann. |
Re: [php] "Speichern unter"-Dialog?
Hi,
der code oben ist alles, was in der *.php-datei steht! Viele Grüße, // Edit: Aufrufen tue ich die Datei über einen einfachen Link |
Re: [php] "Speichern unter"-Dialog?
öhm.. ok.. dann stimmts so, wie es noch_ein_hannes geschrieben hat.
Du musst dem Browser schließlcih die Daten auch liefern, wenn du da nur auf deinem server rumschreibst, passiert gar nix ;) |
Re: [php] "Speichern unter"-Dialog?
Den Umweg über die datei kannst du dir sparen, wenn du das Ergebnis der Abfrage direkt ausgibst:
Code:
<?php
include "connect.inc.php"; header( 'Content-Disposition: attachment; filename='.$fname); $sql = "SELECT name, vorname, strasse FROM adressbuch"; $res = mysql_query($sql) or die("Fehler: " . mysql_error() . " $sql"); while($row = mysql_fetch_row($res)){ $line = implode(';', $row); echo "$line . "\r\n"; } ?> |
Re: [php] "Speichern unter"-Dialog?
hmm, mkinzler ... das kommt mir sehr bekannt vor ... :-)
|
Re: [php] "Speichern unter"-Dialog?
Sorry, deinen Beitrag habe ich genauso wie Grolle überlesen.
|
Re: [php] "Speichern unter"-Dialog?
Besten Dank. Das klappt so ganz gut :mrgreen:
|
Re: [php] "Speichern unter"-Dialog?
Zitat:
Code:
verwenden.
Content-type: application/octet-stream
der browser entscheidet anhand des mime-types, was er mit den empfangenden daten macht. was, wenn er nun eine spezielle darstellung für csv-dateien hat (ähnlich wie xml-files)? dann kommt der dialog nicht. o.g. bedeutet ein unbekanntes/binäres format für das es keine anzeigeform geben kann. daher sollte immer der speichern unter dialog kommem. |
Re: [php] "Speichern unter"-Dialog?
So wäre es komplett:
Delphi-Quellcode:
Und, wenn die Ausgabe einer Datei per "readfile()" geschieht, dann könnte auch noch folgender Header gesendet werden:
header("Content-Disposition: attachment; filename=".$save_as_name."");
header("Content-type: x-application/octet-stream"); header("Content-Transfer-Encoding: binary");
Delphi-Quellcode:
header("Content-length:".filesize($filename)."");
|
Re: [php] "Speichern unter"-Dialog?
Zitat:
Grüße Faux |
Re: [php] "Speichern unter"-Dialog?
Ja, besten Dank nochmal an euch. Klappt hervorragend!
PHP scheint ja hier sehr populär zu sein :) Viele Grüße... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz