Mailinglisten-Archive |
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