Hallo Martin,
hmm, führe ich Selbstgespräche? .oO(?)
Du bist dir aber schon darüber im Klaren, worin in PHP der Unterschied zwischen 'einfachen' und "doppelten" Anführungszeichen als Stringbegrenzern besteht?
Nein, das war mir neu,dachte immer es ist egal ob ich Doppelte oder Einfache nehme solange ich das konsequent durchalte....
nein, eben nicht. In Javascript und HTML schon; in PHP ist das aber ein ganz entscheidender Unterschied!
Also: Du hast eine Datei, die den Anforderungen entspricht? Dann kann es nicht so schwer sein - du musst doch "nur noch" das gleiche Format mit PHP erzeugen.
Tja sollt man meinen, aber meinereiner steht mit dem Kopf vor der Wand und kommt nicht durch...
Mit dem Kopf durch die Wand ist auch ein schlechter Ansatz. Entweder außenrum gehen, oder einen Panzer mieten. ;-)
<?php
require('includes/db_verbindung.php');
header("Content-type: text/csv");echo '"Feld"\n';
HALT! Wie war das mit den unterschiedlichen Sorten von Anführungszeichen?
In einem String, der mit 'einfachen' Anführungszeichen notiert ist, werden keine Escape-Sequenzen für Steuerzeichen interpretiert. Also:
echo ""Feld"\n";
Die zusätzlichen Backslashes sind hier nötig, weil die inneren Anführungszeichen den String nicht begrenzen, sondern Teil davon sein sollen. Daher werden sie mit einem Backslash maskiert.
echo '"'.$myrow["inhalt"].'"\n';
Hier genau dasselbe. Ich hatte nicht umsonst den letzten Teil des Strings nochmal abgetrennt, damit das \n in einem String mit doppelten Anführungszeichen steht.
Habe beim Header Content-type:text/csv probiert bekomme dann aber die Meldung Datei kann nicht gefunden werden
Wann? Wo? Bei welcher Aktion? Da kann ich nicht ganz folgen.
aber in der Datei steht der Inhalt genauso wie bei der Ausgabe am Bildschirm also mit \n etc.):
"Feld"\n"inhalt1"\n"inhalt2"\n"inhalt3" etc.
Kein Wunder. Siehe oben.
"inhalt1"CRLF"inhalt2"CRLF"inhalt3"
Was ist DAS denn? *wunder*
Klar könnte ich einfach
echo $name.'<br>'; schreiben und mir das ganze am Bildschirm ausgeben lassen und dann einfach in den Texteditor kopieren und dort als CSV speichern, aber diesen Zwischenschritt möchte ich gerne vermeiden wenn es geht.
Das wäre ja auch, als wenn ich ein Dokument erst ausdrucken, dann wieder einscannen würde. ;-)
Was habe ich übersehen? Wie muß ich die Linedelimiter einfügen, damit die nicht als Textgelesen werden, sondern als Steuerzeichen? Woran liegt es, dass bei text/csv die Datei angeblich nicht gefunden wird, bei den anderen header Angaben aber schon?
Das mit "Datei nicht gefunden" solltest du bitte nochmal genauer erklären. Nach meinem Verständnis dürfte nur eine der beiden Verhaltensweisen auftreten:
a) Das CSV-Dokument wird als Text im Browser angezeigt
b) Der Browser bietet das Dokument zum Speichern als Datei an
Ich kann nicht erkennen, wo hier der beschriebene Fehler auftreten könnte.
So long,
Martin
Ich habe gerade erfahren, dass Tante Frieda gestorben ist. Der Tod hat sie im Schlaf ereilt. - Schrecklich. Dann weiß sie es also noch gar nicht?