phpbar.de logo

Mailinglisten-Archive

[php] Bearbeiten von Textfile mit php

[php] Bearbeiten von Textfile mit php

Michael Stahmann Michael_(at)_Stahmann.de
Tue, 28 Nov 2000 14:50:50 +0100


Riad Djemili schrieb:
> 
> hallo!
> 
> Ich realisiere grade ein simples Newssystem auf FileBasis. Die News werden
> in der News.txt gespeichert.
> -erste Zeile : Topic
> -zweite Zeile: Text
> -dritte Zeile: Datum
> 
> -vierte Zeile: nächstes Topic
> usw..
> 

Nicht sehr geeignet...

> Mittels einer Admin Site sollen neue News einfach von vorne in die News.txt
> eingefügt werden, so dass ich mit später auch keine Sorgen um die Sortierung
> machen brauche und die File einfach von vorne nach hinten auslesen kann. Das
> mache ich so..
> 
> $fp=fopen("news.txt","r+");
> fputs($fp,nl2br($topic)."\n".nl2br($text)."\n".nl2br($datetime)."\n");
> fclose($fp);
> 
> Allerdings habe ich jetzt das Problem, dass jetzt oft aus mir
> unverständlichen Gründen teile der andren ältereren News überschrieben
> werden(meistens das ganze Topic der nächsten News)
>

Das liegt daran, das Du die Datei mit "r+" öffnest:
'r+' - Öffnet die Datei zum Lesen und Schreiben und setzt den
Dateizeiger auf den Anfang der Datei. 

Besser wäre:
'a+' - Öffnet die Datei zum Lesen und Schreiben. Positioniert den
Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert,
wird versucht sie anzulegen. 

http://www.php-center.de/de-html-manual/function.fopen.html


Aber jetzt mal schnell eine Hilfe für Deinen Ansatz:

Du solltest die Daten im csv-Format (Bekannt aus Fersehen, Funk und
Excel) speichern. Also:
Topic1;Text1;Datum1

Vorher (!) mit nl2br bearbeiten, damit alles hübsch in einer Reihe
bleibt.
Ein Problem kann das Zeichen ";" das solltest Du entweder vermeiden,
oder noch besser rausfiltern und mit einem Zeichen Deiner Wahl
ersetzen:
http://www.php-center.de/de-html-manual/function.str-replace.html
Hilft dabei.

Dann kannst Du die Daten mit 
http://www.php-center.de/de-html-manual/function.fgetcsv.html
bequem einlesen und hast alles schön in einem array. (siehe Beispiel
im Manual)

Zum sortieren kannst Du die das array umstellen und dann ensprechend
nach dem Datum sortieren. 
http://www.koehntopp.de/php/faq-7.html#ss7.4

Oder besser.
Beim eintragen eine Dummy-Datei verwenden. Das heißt den neuen Eintrag
rein, den Rest hinterher und dann in den richtigen Namen umbennen.

Um jetzt Daten zu löschen, solltest Du von anfang an jedem Eintrag
eine id geben. Die kannst Du mit einem exteren Zähler realisieren. Das
hilft bei Vergleichen. Ein Beispiel zum löschen findest Du hier:
http://www.koehntopp.de/php/faq-10.html#ss10.5

Ich habe mal in dieser Weise ein Gästebuch geschrieben, wenn ich Zeit
habe suche ich es mal raus.

Aber erstmal bist Du wieder dran mit der Arbeit :-)

...jetzt ist ersteinmal Ende des Tutorials... 

Gruß Michael

REM: Ich habe zu viel Rindfleisch gegessen, deshalb kaue ich heute
allen Leuten etwas vor 8-)

-- 
--------------------------------------------------------
Michael Stahmann,      web-xact.de <website-development>
http://www.web-xact.de           mailto:info_(at)_web-xact.de
Burchardstr. 10, D-28217 Bremen, Tel/Fax 0421-3887750/51
--------------------------------------------------------
 Sinnloser Bildschirmschoner: http://schlammpeitzger.de


php::bar PHP Wiki   -   Listenarchive