Problem mit fseek und fwrite
Poljo
- php
0 Philipp Hasenfratz0 Poljo0 romy0 Philipp Hasenfratz0 Philipp Hasenfratz
Hi
Also ich öffne eine Textatei, platziere mit fseek den Dateizeiger an eine Stelle und möchte dann mit fwrite an diese Stelle etwas reinschreiben. Das Problem ist nur, dass fseek zwar den Dateizeiger an die richtige Stelle setzt (hab ich mit ftell überprüft), fwrite aber nicht an diese Stelle, sondern an das Ende der Datei schreibt.
Hier mal den betreffenden Teil:
$datei = fopen ("data.txt", "a");
fseek ($datei, 200);
$zeiger = ftell($datei);
echo $zeiger;
fwrite ($datei, $text);
fclose($datei);
So, und was hab ich jetzt falsch gemacht?
Hoffentlich weis jemand da ne Lösung. :-)
tschau jojojojo...........
Halihallo Poljo
$datei = fopen ("data.txt", "a");
^^^ Was bedeutet 'a', frage ich dich?
fseek ($datei, 200);
... und was macht fseek in Textdateien für einen Sinn? - Wohl bemerkt, es kann Sinn
machen, aber das ist eher unwahrscheinlich.
So, und was hab ich jetzt falsch gemacht?
Genau ein Buchstabe ist falsch.
Viele Grüsse
Philipp
Halihallo Poljo
$datei = fopen ("data.txt", "a");
^^^ Was bedeutet 'a', frage ich dich?
Laut http://www.php.net/manual/de/function.fopen.php öffent man so eine Datei zum schreiben; wenn die datei nicht existiert wird versucht sie anzulegen
fseek ($datei, 200);
... und was macht fseek in Textdateien für einen Sinn? - Wohl bemerkt, es kann Sinn
machen, aber das ist eher unwahrscheinlich.
Naja, was anderes als Textdateien hab ich halt nicht zur verfügung.
Geholfen hat mir das jetzt aber auch nicht.......
:-(
tschau jojojoj.........
Hi,
Geholfen hat mir das jetzt aber auch nicht.......
wer lesen kann ist klar im Vorteil ;)
habs mal rauskopiert:
<zitat>
3. if you're using fseek() to write data to a file, remember to open the file in "r+" mode, example:
$fp=fopen($filename,"r+");
Don't open the file in mode "a" (for append), because it puts the file pointer at the end of the file and doesn't let you fseek earlier positions in the file (it didn't for me!). Also, don't open the file in mode "w" -- although this puts you at the beginning of the file -- because it wipes out all data in the file.
Hope this helps.
</zitat>
Quelle: <www.php.net>
ciao
romy
Halihallo Poljo
$datei = fopen ("data.txt", "a");
^^^ Was bedeutet 'a', frage ich dich?
Laut http://www.php.net/manual/de/function.fopen.php öffent man so eine Datei zum schreiben; wenn die datei nicht existiert wird versucht sie anzulegen
Lies genauer. Positioniert den Dateizeiger ans Ende, das mag wohl durch fseek
temporär geandert werden, aber 'a' heisst nunmal append und nicht 'w+b'/'wb'.
Aber du hast recht, die Dokumentation ist nicht genau, shame on php.net; der Hinweis
auf "append" hätte ich zumindest in der Englischen Version erwartet.
Viele Grüsse
Philipp
Halihallo romy
[...]
and now shame on _me_ :-)
War an Poljo gerichtet.
Viele Grüsse
Philipp
Hi,
[...]
and now shame on _me_ :-)
nun aber ab in die Ecke und die Hörnchen auf ;-)
ich mag deine Signatur!
schönen Tag noch!
ciao
romy, die dringend Feierabend braucht und Sonne und Meer und ... Schokolade!!!
Halihallo romy
[...]
and now shame on _me_ :-)
nun aber ab in die Ecke und die Hörnchen auf ;-)
*stark-errötet-im-stillen-ecklein-sitz* ;)
ich mag deine Signatur!
Oh, danke, danke. Würden das nur alle tun, die armen Stamm-Servierdüsen hätten fast gar
nix mehr zu tun... Ach, wär eigentlich auch schade... es bräuchte keinen Cheatah mehr ;)
romy, die dringend Feierabend braucht und Sonne und Meer und ... Schokolade!!!
Uh, ich sag jetzt lieber nicht, wo ich gewesen bin... Naja, is zwar auch schon wieder
ein Zeitchen her, somit habe ich die selben Wünsche wie du :-)
Also gegen das Schokoladenbedürfnis hätte ich etwas: Lola-Crip, Billigschokolade aus
dem Coop (Aldi für Schweiz? *g*) aber einfach die Beste! :-)
Ich glaube der schöne Tag hat sich auf _meinen Wunsch hin_ zu dir begeben, bei mir is er
nämlich nimmer :-)
Viele Grüsse
Philipp
Hi,
Ich glaube der schöne Tag hat sich auf _meinen Wunsch hin_ zu dir begeben, bei mir is er
nämlich nimmer :-)
gerade sehe ich die ersten Sonnenstrahlen durch den grauen Himmel blitzen.
Frau dankt für soviel Energie...
ciao
romy
@ Romy: Danke! Hätt ich eigentlich auch sehen können.
Aber bei r+ hat man ja wieder das Problem, dass da irgentwie Bytes die "im weg" sind überschrieben werde. Da peil ich irgentwie nich ganz durch(bin PHP Anfänger, wie man merkt). aber das wär ja eh wieder ein andres Thema.
tschau jojojoj.........
Hi,
Aber bei r+ hat man ja wieder das Problem, dass da irgentwie Bytes die "im weg" sind überschrieben werde.
wenn Du genau weisst , wo der einzufügende TExt hinsoll, benutze STringoperationen, bzw. arrayfunktionen.
mit file() kannst Du eine Datei in ein array einlesen und mit implode() einen String drauss machen. Es gibt genug Funktionen, die DInge einfügen können bzw. löschen
schau Dich nochmal um bei php.net
ciao
romy