Flatfile-Organisation | Wie macht Ihr es?
michel gelin
- php
0 Sven Rautenberg0 Auge
Hallo zusammen,
kleine frage: wie geht Ihr mit flatfile-dbs um?
Diese werden ja meist zeilenweise ausgelesen und dann in arrays gespeichert.
Doch welche Daten liegen nun an welcher stelle? Klar weiss ich dass, sofern ich dieses flatfile erstelle/lese etc. aber wie kann ich das handling verbesseren?
Schreibt Ihr in die erste zeile jeweile die definition der felder, z.B. name, vorname etc. und gar in eine zweite zeile die form-elemente welche Ihr dazu verwendet (checkbox, textfeld etc.), so dass Ihr relativ einfach eine administration (lösche von einträgen, reihenfolge ändern, etc.) der daten realisieren könnt ( Idee: 1 StandardAdmin für verschiedene flats)
Beispiel:
Name|Vname|XY vorhanden|...|
text|text|checkbox|...
Gelin|Michel|1|...
...
Oder weiss Ihr bei Euch im code zuoberst sämtliche variablen des arrays neue, ausagekräftigen variablen zu?
Etwa so:
$zeile[0] = $name
$zeile[1] = $vname
...
Würde mich einfach mal interessieren welche ansätze Ihr zu diesem thema habt!
Gruss
michel
Aloha!
kleine frage: wie geht Ihr mit flatfile-dbs um?
Ich habe bislang für mehr oder weniger umfangreiche Datenbanken immer Datenbanksysteme verwendet.
Einzig für ein wirklich winziges "Problem" habe ich IMHO eine trickreiche Lösung gefunden:
PHP erzeugt den Code, der später mit include() eingebunden wird, selbst. :)
Hintergrund: Ein kleines "Newssystem" sollte ermöglichen, gewisse Newsseiten freizuschalten, und eine der Newsseiten als Teaser zu definieren (das ganze ist unter http://www.rb3m.com/news/ zu sehen - und noch nicht wirklich ausgereizt. :) ).
Da ich mir irgendwo merken muß, welche News freigeschaltet sind und welche Nachricht als Teaser fungiert, habe ich die entsprechenden Variablen ganz einfach in eine PHP-Datei geschrieben.
Der relevante Code-Teil (Dateipfade sind gekürzt):
foreach ($HTTP_POST_VARS['frei'] as $page)
{
$zustand[$page]='on';
}
$fp = fopen("zustand.php","w");
flock($fp,2); # File locked
fputs($fp,"<?php $zustand = unserialize("".addslashes(serialize($zustand)).""); $tease = "".$HTTP_POST_VARS['tease'].""; ?>");
flock($fp,3); # File unlocked;
fclose($fp);
Damit wird als Resultat folgende Zeile in die Datei zustand.php geschrieben (je nach Freischaltzustand natürlich):
<?php $zustand = unserialize("a:2:{s:13:"20020716.html";s:2:"on";s:13:"20020712.html";s:2:"on";}"); $tease = "20020716.html"; ?>
Auf diese Weise wird später die Datei einfach mit include("zustand.php") wieder eingebunden, und das Array $zustand sowie die Variable $tease sind danach verfügbar.
Die Alternative wäre natürlich, jeden Arrayeintrag separat in der Datei abzuspeichern (als Konfigurations-Include-Datei auch sehr zu empfehlen):
<?php
$zustand[1]="wert1";
$zustand[2]="wert2";
...
?>
Da PHP auch Session-Variablen mit serialize() und unserialize() aus der Textdatei liest und in sie schreibt, denke ich, dass dieses Verfahren hinreichend schnell ist, um für kleine Datenspeicherungen auszureichen.
- Sven Rautenberg
Hallo Sven,
Danke für Deine ausführliche Antwort.
Ich habe bislang für mehr oder weniger umfangreiche Datenbanken immer Datenbanksysteme verwendet.
Einzig für ein wirklich winziges "Problem" habe ich IMHO eine trickreiche Lösung gefunden:
Ja, Du hast sicher recht, Datenbanksysteme sind für anspruchsvolle projekte die beste Lösung.
Nun, für kleine projekte finde ich flatfile-lösungen noch ganz tricky, dann fallen nämlich keine zusätzlichen gebühren für mysql etc. an :-)
Zudem gibt es auch fälle, wo es ganz toll sein kann, wenn man sich ein csv herunterladen kann oder dieses uploaden kann (so überträgt zum beispiel unser verband ranglisten aus einem anderen tool(nicht webbased) aufs netz),
...und da ich php "erst" am lernen bin, geht es mir auch ein bisschen darum dass ich etwas lerne, und bei flatfiles kann man sicherlich einiges über arrays und schleifen lernen...
Danke & Gruss
michel gelin
Hallo
kleine frage: wie geht Ihr mit flatfile-dbs um?
Würde mich einfach mal interessieren welche ansätze Ihr zu diesem thema habt!
Für die von uns verwendete Termindatenbank benutze nur
eine Trennung mit "|".Sie ist auch nur zur Anzeige der
Termine auf der Seite vorgesehen und wird in einem
mit htaccess geschützten Bereichper Formular gefüllt.
Da von vornherein feststeht, an welcher Stelle welcher
Wert steht, brauche ich nur noch das Layout für die Ausgabe
festlegen und mit den ausgelesenen Werten füllen.
Tschüß, Auge