PHP FlatFileDB von Hugo Wiledal

Möchten Sie große Mengen Content verwalten und systematisch organisieren oder entwickeln ein eigenes Flatfile CMS, dann hilft die Flatfile DB von Hugo Wiledal

Download ZIP

Wiledal FlatFileDB

Vermutlich hatte Hugo Wiledal an dem Tag an dem er sein Projekt bei Github (Link hier) eingecheckt hat einen schlechten Tag, zumindest lassen die wirklich vielen Schimpfwörter in der Dokumentation und im Programmcode vermuten. Dennoch handelt es sich um ein wirklich gutes PHP-Script mit etwa acht nützlichen Funktionen zum Anlegen, Löschen und Selektieren von Datensätzen aus einer leichten Flatfile DB im typischen CSV-Format.

Zunächst Fehlerbehebung

Da das Projekt von Hugo Wiledal bereits 10 Jahre auf dem Buckel hat, werden mittlerweile einige PHP-Befehle nicht mehr in der Form unterstützt wie es 2012 der Fall war.

function _splitRow($row)

Die Funktion splitRow() soll den Datensatzeintrag in Spalten aufteilen. Für diesen Zweck gab es 2012 den Befehl split() der heute jedoch veraltet ist und nicht mehr unterstützt wird, daher wird dieser mit dem explode() ausgetauscht. Es ergibt sich daher das folgende Coding.

121  function _splitRow($row) {
122    //$arr = split('\",\"', $row); // Veraltet
123    $arr = explode('","', $row);   // neu
124    $arr[0] = substr($arr[0], 1);
125    $arr[count($arr)-1] = substr($arr[count($arr)-1], 0, strlen($arr[count($arr)-1])-3);
126    return $arr;
127  }

Ersetzen Sie daher die bisherige Zeile 122 mit dem explode aus Zeile 123 und schon läuft die kleine FlatFileDB wieder.

Eine leere Datenbank anlegen

Leider ist die Dokumentation von Hugo Wiledal derart schlecht, da überhaupt nicht erwähnt wird, wie die Datenbank aufgebaut sein soll. Mit etwas herumprobieren ist dabei die folgende Vorgabe entstanden.

001  "_id","title","author","date","description","content",
002

Die FlatFileDB muss eine Kopfzeile mit den oben gezeigten Feldern besitzen, dabei ist das Feld _id zwingend vorgescrieben, da dort ein Zeitstempel eingetragen wird. Die restlichen Felder entstammen meinem eigenen Programm-Beispiel und können daher individuell definiert und erweitert werden.

Die leere Datenbank im CSV-Format muss zwingend eine Leerzeile unter den Feldnamen enthalten, damit neue Daten automatisch untereinander beginnen. Falls Sie das vergessen erhalten Sie einen Abbruch. Erstellen Sie die Datenbanktabelle in einem Ordner Ihrer Wahl und referenzieren dann im PHP Script darauf.

Das PHP Script

Um die FlatFileDB in einem PHP-Script nutzen zu können, müssen Sie die Tabelle und das Script von Hugo Wiledal wie folgt in Ihrem Code einbinden.

001  <?php
002      include('flatfiledb/bin/FlatFileDB.php');
003      $db = new FlatFileDB();
004
005      // Insert
006      $table = $db->get("flatfiledb/dbtable.csv");
007      $entry = array(
008          "title"       => "Titel",
009          "author"      => "O.Lohse",
010          "date"        => date('Y.m.d H:m'),
011          "description" => "Ein neuer Datensatz wurde hinzugefügt.",
012          "content"     => "Beschreibung des Feldes",
013      );
014      $db->insert("flatfiledb/dbtable.csv", $entry);
015
016      // Select
017      $table = $db->get("flatfiledb/dbtable.csv");
018      foreach($table as $row) {
019          echo '<h1>'.$row["title"].'</h1>';
020          echo '<p>'.$row["description"].'</p>';
021          echo '<p>'.$row["author"].' - '.$row["date"].'</p><hr>';
022      }
023  ?>

Die Funktionsweise ist dabei einfach wie auch simpel erklärt. Zeile 002 inkludiert die Funktionen der PHP FlatFileDB von Hugo Wiledal in das PHP-Script. In Zeile 003 was das Datenbankobjekt erzeugt und in Zeile 006 wird die zu diesem Zeitpunkt noch leere Datenbanktabelle (CSV-Format) geladen. Zeile 007 erzeugt einen neuen Datensatz und speichert ihn in 014 in der FlatFileDB ab. Ab Zeile 017 bis 022 wird der soeben gespeicherte Satz gelesen und angezeigt.

Sie erhalten etwa den folgenden Inhalt in der FlatFileDB (dbtable.csv):

001 "_id","title","author","date","description","content",
002 "7940474e2ae0078ae3d8d577aecceb06","Titel","O. Lohse","2021.09.04 12:09","Ein neuer Datensatz wurde hinzugefügt.","Beschreibung des Feldes",
003 "c0c5ffd52d82c72acf62dd2183995f5a","Titel","O. Lohse","2021.09.04 12:09","Ein neuer Datensatz wurde hinzugefügt.","Beschreibung des Feldes",
004 "d3081b55768fb620bfeb6ff332346eec","Titel","O. Lohse","2021.09.04 12:09","Ein neuer Datensatz wurde hinzugefügt.","Beschreibung des Feldes",
005 "ff2aae30626d8b65d11e3717d98de818","Titel","O. Lohse","2021.09.04 12:09","Ein neuer Datensatz wurde hinzugefügt.","Beschreibung des Feldes",
006 "30999cb6658da313b987e7c3a7dacb3f","Titel","O. Lohse","2021.09.04 12:09","Ein neuer Datensatz wurde hinzugefügt.","Beschreibung des Feldes",
007

Aktualisieren Sie das PHP Script im Browserfenster mit F5 einige Male und Sie erhalten jedes mal einen Eintrag in der CSV Tabelle.

Die Funktionen beschränken sich allerdings auf get, update, insert und delete... folglich gibt es keinen search oder select in der Funktionsbilbliothek. Dieser müsste mit Hilfe des get und einer PHP foreach Schleife nachgebildet wierden - dies ist aber gar kein Problem.

Schade das ein so gutes Projekt auf Grund der schlechten Dokumentation kaum Beachtung findet und daher dessen Potential vollkommen verschwendet wurde. Dennoch hat es sich gelohnt in mühsamer Arbeit die Funktionsweise der FlatFileDB und deren Konfiguration herauszutüfteln. Die kleine FlatFileDB kann durchaus Kern eines kleinen CMS werden.

Sofern Sie ein anderes Trennzeichen der Datensätze bevorzugen, müssen Sie die Funktion splitRow() und insert() entsprechend anpassen.


WordPress für Einsteiger

WordPress für Einsteiger - Meistern Sie WordPress mit dem visuellen Schritt-für-Schritt-Ansatz. Das Buch ist eine Neuerscheinung für 2021 und deckt die neueste Version von WordPress ab. Das Erstellen einer schönen, professionell aussehenden WordPress Website (oder Blogs) ist nicht länger für Webdesign Agenturen bestimmt. WordPress ermöglicht es jedem, eine Website zu erstellen, die auf jedem Gerät – PC, Mac, Tablet und Smartphone - gut aussieht. Egal, ob Sie eine geschäftliche Website, eine Hobbysite oder einen Blog erstellen möchten, WordPress ist eine großartige Wahl und dieses Buch zeigt Ihnen, wie. Das Ziel dieses Buches ist es, jeden, auch einen absoluten Anfänger, in wenigen Stunden von Null zum WordPress Guru zu machen. (*

lesen...

© CMSWorkbench.de

db flatfile csv datenbank ascii

about me

About me

Mein Name ist Oliver Lohse. Ich bin diplomierter Wirtschafts-Informatiker und Organisations-Programmierer in verschiedenen Programmier-Sprachen und Markup-Dialekten, z.B. Java, JEE, COBOL, PHP, Python, MySQL, HTML, CSS, ANSI C, Lisp, Rexx, JavaScript, Scheme, ActionScript 2.0, Maschinensprache, Assembler und JCL. Seit mehr als 24 Jahren arbeite ich als Entwickler in einem großen Softwareunternehmen für Versicherungen in Hannover Niedersachsen und seit etwa 37 Jahren im EDV-Sektor mit wechselnden Aufgaben.