Andi: Zeilenumbruch bei *.txt mit PHP (fwrite)

Beitrag lesen

Hello,

Das ganze soll eine Eingabemaske für eine Newssite sein, in der sich ca. 10 News einträge zu je 4 Zeilen sammeln sollen. Jeder 11.Eintrag soll sich dann aus der txt. dat wieder rauslöschen (ist das möglich=)

Dann sollten wir noch klären, wo der neueste Datensatz stehen soll. Oben oder unten? Ich gehe jetzt davon aus, dass nur über die Zeit sortiert wird.

Der neueste Datensatz soll immer oben stehen, so dass ich über eine Auslesemaske in einer tabelle immer den neuesten Eintrag ausgeben kann.

Selbstverständlich kann man Datensätze löschen.

Jedes fwrite dauert länger, als vorher den Stream zusammenzubauen und ihn dann komplett wegzuschreiben.

Was hast Du mit der Datei später noch vor? Sollen die Daten auch mal editiert werden?

Hatte in weiterer Folge vor die Einträge auch editierbar zu gestalten, in erster linie soll die txt. dat aber rein als kleine datenbank fungieren.

Gut, dann lass uns mal gemeinsam über Dateiformate und Datenmodellierung sprechen. Und wenn Dennis zufällig mitlesen sollte, kann er das gleich mitprotokollieren für unser Vorhaben mit dem Feature-Artikel.

Ich fang mal vorne an *gg*

Daten werden bei heutigen DV-Anlagen als Bits dargestellt

Aus den Bits werden durch Gruppierung (Bytes) einzelne Werte gebildet, die einzeln oder zusammengesetzt Datentypen und dann Zeichen ergeben.

Aus den Zeichen können datenzusammengesetzt werden

Diese Datenwerte bezeichnnet man dann bei der Speicherung als Feld oder Spalte

Wie füge ich in eine *.txt Dat Tabellen ein?

Aus mehreren Spalten können Datensätze oder Zeilen zusammengesetzt werden.
Die Spalten müssen irgendwie wieder voneinander trennbar sein.

Übliche Dateien kann man sich vorstellen, wie einen Bindfaden. Der hat nur einen Anfang und ist eben so lang, wei man ihn aus der Reserver zieht. Auf diesem Bindfaden (Stream) können jetzt die Zeilen nacheinander gespeichert werden.

Haben die Zeilen eine feste länge, kann man berechnen, wo eine anfängt. Man spricht dann von einer Datei mit wahlfreiem Zugriff.
Haben die Zeilen eine unterschiedliche Länge, dann spricht man von einer sequentiellen Datei oder auch Textdatei. Hier kann man nicht von vorneherein wissen, wo eine Zeile / ein Datensatz anfängt. Man muss die Datei von vorne her durchlesen (es gibt auch Systeme, die von hinten lesen können) und die Endemarkierungen der zeilen zählen. Die zehnte Zeile fängt also nach der neunten Markierung an und endet mit dem Ende der zehnten. Der "Knoten" in unserem Bindfaden (die Zeilenendemarkierung) gehört also immer zum vorangegangenen Datensatz. Bei der jeweils letzten Zeile auf einem Stream kann auch die Endemarkierung fehlen. Das ist System- und Applikationsabhängig. Manche Systeme ergänzen die dann auch automataisch.

Du merkst also schon, man muss bei jedem Schritt, den wir geistig volltziehen, immer mehr wissen über sein System.

Nun stell Dir mal vor, dass Du die siebte Zeile von 22 ändern willst. In dem Datenfeld, das den Inhalt repräsentiert, soll ein Wort ergänzt werden. Wie würdest Du da vorgehen?

Also ich kann nur sagen wie ich das problem mit VBA angehen würde

ich würde das programm die laufende nummer des eintrags auslesen lassen der editiert werden soll --> Nr.7 dann soll er sich in der 1. Spalte der datenbank das Range mit Caption 7 suchen dann in der eben gefundenen Reihe 7  in die Spalte schicken wo der Eintrag geändert wird und dort die Caption mit der neu gültigen überschreiben.

[... to be continued ...]

Liebe Grüße aus http://www.braunschweig.de

Tom