Daten statt in DB in File schreiben

radarin

Angesehenes Mitglied
Hallo Liste
Daten mittels SQL in eine DB zu schreiben (Tabelle, Spalte, DSid) stellt für mich kein Problem dar. Nun sollte ich die Daten aber alle in einem Textfile ablegen. Neue Einträge erstellen und bestehende aktualisieren. Kennt jemand ein übersichtliches Tutorial (deutsch) das dan Ganze erklärt? Zeilen an ein bestehendes File anfügen kriege ich hin, aber wie unterteile ich die Zeilen in Spalten und wie ändere ich die richtige Zeile, das sind die Fragen die sich mir auf anhieb stellen.

Gruss René
 
danke, aber das meiste davon brauch ich wohl kaum. und xml ist vorerst kein thema.

ich hab ein script geschrieben, dass eine verzeichnisstruktur mit bildern ausliest und daraus eine gallery generiert. bis jetzt integiere ich text vor und nach den bildern mit zwei manuell erstellten textdateien, und bildunterschriften stehen in textdateien die den selben namen wie das bild haben, etwas umständlich also, wenn ich viele bilder mit text versehen will.

deshalb will ich nun beim auslesen der verzeichnisse entsprechende ds erstellen um bildunterschriften darin abzulegen, aber eben nicht in einer db, sondern in textfiles, einfach um nicht auf eine db angewiesen zu sein.
 
Für die Datenverwaltung gibt es im wesentlichen drei Möglichkeiten:

1. Datenbank - scheidet aus.

2. Xml - das ist genau für solche Zwecke gemacht worden, damit man nicht individuell alles manuell entwickeln muß, wie man das früher gemacht hat. Ein Xml-Dokument festlegen, mit diversen Knotentechniken in diesem navigieren.

3. Du machst es wie früher: Du entwickelst deine eigenen Datenstrukturen, deine eigenen Lese- und Schreibstrukturen - und brauchst Ewigkeiten dafür.

PS: Ich muß letzteres gerade auch machen. Ich will in server-daten eine Möglichkeit drinhaben, den Import und den Export von vCard-Dateien zu ermöglichen. Leider ist die Definition von 1996, also nicht xml-basiert - und es ist eine wahnsinnige und ziemlich eintönige Arbeit, das alles zu codieren und einigermaßen brauchbare Datenstrukturen dafür zu entwickeln - eine Klasse mit einigen Strukturen bzw. Arrays von Strukturen. Dabei ist der Code nicht wirklich schwierig - halt nur etwas stumpfsinnig.
 
mit einer db wäre es wirklich am einfachsten. aber dann setze ich voraus, dass der user der das script nutzen will auch db's zur verfügung hat und sich damit einigermassen auskennt.

mit xml habe ich mich noch nicht auseinandergesetzt.
ich hab mir ein news script runtergeladen, das textfiles verwendet. pro feld ein file. jetzt muss ich mir mal den code ansehen, vor allem wie das mit dem update geht, und ob es auf diese weise möglich ist, nachträglich zus. felder, resp. files zu integrieren.
 
Technisch ist das nicht so sonderlich aufregend, vor allem, wenn Du nur einfache Strings ablegen willst.

Irgendein Trennzeichen definieren (bei einfachen Texten eignet sich das Tabulator-Zeichen), dann eine Datei = eine Zeile der (Pseudo-) Datenbank.

Die Texte in einem Array sammeln (soviele Felder wie 'Spalten'), beim Auslesen eben alles trennen (in NET gibt es eine Join-Funktion Array -> String), beim Einlesen umgekehrt mit Split zerlegen. Beim Update wird die ganze Zeile eingelesen, die Position neu geschrieben und die Zeile wieder gespeichert.

Das ist eben eine elende Fummelei, die schnell unübersichtlich und stupide wird.
 
QUOTE (jAuer @ Fr 6.4.2007, 20:55) 1. Datenbank - scheidet aus.

Wieso das? Es gibt auch File-Datenbanksysteme, die ohne einen Server auskommen, zB. SQLite, filePro, DBA, dBase, DBM, DB++ Es unterscheidet sich nur in wenigen Punkten von mySQL, klar ist es nicht so umfangreich, aber das macht die Sache sehr einfach.

PHP Doku SQLite: http://de3.php.net/manual/de/ref.sqlite.php
PHP Doku filePro: http://de3.php.net/manual/de/ref.filepro.php
PHP Doku DBA: http://de3.php.net/manual/de/ref.dba.php
PHP Doku dBase: http://de3.php.net/manual/de/ref.dbase.php
PHP Doku DBM: http://de3.php.net/manual/de/ref.dbm.php
PHP Doku DB++: http://de3.php.net/manual/de/ref.dbplus.php
 
es soll eben einfach nur mit den dateien in der verzeichnisstruktur funktionieren und ausser php keine weiteren abhängigkeiten haben.

würde das script ausschliesslich auf meiner webseite laufen müssen, würde ich eine db einsetzen.

das script das ich jett getestet habe nutzt mir nicht als vorlage. es gibt nicht sowas wie einen 'primärschlüssel' zeilen id, sondern es werden wohl die trennzeichen gezählt.

der inhalt des textfiles dürfte in etwa so aussehen:

auto/genf2005/DSC001.jpg | Ferrari | das auto ist rot
auto/genf2005/DSC002.jpg | Maserati | das auto ist gelb
auto/genf2005/DSC003.jpg | Bugatti | das auto ist blau
ausflug/bodensee/DSC001.jpg | Brunnen | aus stein
ausflug/bodensee/DSC002.jpg | Schwan | beim fressen
ausflug/bodensee/DSC003.jpg | Bank | aus holz

beim auslesen der dateien schreibe ich diese einfach der reihe nach in die textdatei ( $datei = fopen($datenbank,"a"); fwrite($datei, $daten)
wink.gif
. das soll aber nur geschehen, wenn das bild noch nicht erfasst worden ist, also keine dublikate. (problem) danach soll bei bedarf z.b. der zeile mit 'auto/genf2005/DSC002.jpg' die weiteren werte in der zeile einfügen. muss ich da die komplette datei in ein array einlesen, dieses zeilenweise ändern und dann die komplette datei überschreiben? (problem) mit array's tu ich mich einfach etwas schwer...
wie ist das mit der performance und der zuverlässigkeit bei 10'000 zeilen in der datei? doch db einsetzen und usern ohne db die zus. funktionalität vorenthalten? wenn der aufwand für die programmierung zu gross ist, ich hab genügend db's auf meinem server zur verfügung, da kann ich egoistisch sein...
dry.gif
 
QUOTE
wie ist das mit der performance und der zuverlässigkeit bei 10'000 zeilen in der datei? doch db einsetzen und usern ohne db die zus. funktionalität vorenthalten? wenn der aufwand für die programmierung zu gross ist, ich hab genügend db's auf meinem server zur verfügung, da kann ich egoistisch sein...


Das ganze ist für die Architektur bei grösseren Applikationen extrem schlecht. Was machst du wenn 2-3 Änderungen von verschiedenen Usern gleichzeitig kommen? Was machst du wenn du nur 1 Bild der 10'000 Zeilen anzeigen möchtest. MySQL hätte mit einem entsprechender Abfrage ca. 10 "Zeilen" auszulesen um den richtigen Datensatz ausfindig zu machen, du müsstest jeweils alle 10'000 Zeilen auslesen und parsen.


QUOTE
es soll eben einfach nur mit den dateien in der verzeichnisstruktur funktionieren und ausser php keine weiteren abhängigkeiten haben.


Kennst du einen Hoster der PHP *ohne* MySQL anbietet? Lohnt es sich wirklich diese Unschönheit in der Architektur einzubauen, für den Fall dass vielleicht 0.1% der Kunden keine MySQL-Datenbank zum PHP haben könnten?
 
änderungen an der gallery, egal ob bilder hochladen oder wieder löschen, sowei die änderungen an der 'db' macht einzig und allein der besitzer der gallery. das problem besteht also nicht. nur die anzahl der bilder dürfte mit der zeit kritisch werden.

datenbank verwenden ja oder nein ist weniger vom provider abhängig als von usern die mit der einrichtung solcher probleme haben. meine gallery läuft derzeit auch auf der domain eines freundes, der wird damit mächtig ins rudern kommen.

ich werde das script so ausbauen, dass es mit oder ohne db verwendet werden kann.

danke für eure ausführungen. wer die gallery ansehen will wie sie sich vor der erweiterung präsentiert, findet sie unter www.darin.ch.
 
Habe mir die langen Texte aufgrund von Zeitmangel gerade nicht ganz durchgelesen, aber PHP in Verbdindung mit SQLite und ODBC klingt mir doch für Dich ganz nützlich. Muss nichts weiter installiert werden und außer PHP mit ODBC Unterstützung (sowieso build-in) wird da nichts benötigt. Kein DB Server, keine Treiber, kein Aufwand *g*

Falls ich was überlesen haben sollte was SQLite bereits ausgrenzt, bitte ich das zu entschuldigen ...
 
ein riesengrosser hinweis im manual, von wegen die erweiterung sei experimentel, das weckt kein vertrauen...
wink.gif
 
die SQLite Erweiterung gibt es schon über 4 Jahre, und seitdem sie zur Grundausstattung von PHP geworden ist, ist der Hinweis eigentlich überflüssig. Die deutsche Doku ist nicht sonderlich aktuell. In der Englischen Version wurde der Hinweis bereits entfernt:
http://de3.php.net/manual/en/ref.sqlite.php
 
die diskrieminierung der deutschen sprache
ph34r.gif


ich werde dafür eine normale db verwenden. wer die zusatzfunktionen nutzen will muss eine db haben, basta. ist für mich der sicherste weg es umzusetzen.

gruss rene
 
Zumal du für die Einrichtung der DB ein kleines Script schreiben kannst das der Nutzer einmal beim Hochladen ausführen muss.

Damit kannst du es so einrichten das er niemals auch nur in die Nähe seiner DB muss.
wink.gif
 
schon klar, nur gäbe ein sql-file als beilage weniger arbeit als das ganze im browser zu integrieren. tabelle mit spalten erstellen funktioniert jedenfalls. jetzt muss noch ein brauchbartes errorhandling rein.

gute nacht
 
Zurück
Oben