Kommentare in CSV-Dateien
Silke Schümann erwähnte im Templaterie Blog eine interessante Möglichkeit: CSV-Datensammlungen sind sehr viel besser zu wareten, wenn am Anfang der Dateien ein Kommentar steht, der Sinn und Verwendungszweck der Daten sowie das Datenformat erklärt. Dieser Kommentar ist nur für denjenigen gedacht, der diese Dateien von Hand ändert, oder ein Programm schreibt, das auf diese Daten zugreift. Bei der Auswertung der Daten soll der Kommentar ignoriert werden.
Offensichtlich in der Hoffnung, dass andere daraus lernen, beschreibt Silke einen Fehler, der Ihr unterlaufen ist. Sowohl das fehlerhafte, als auch ihr korrigiertes PHP-Skript sind im Templaterie Blog erläutert. Da mir die Idee sehr gut gefällt, habe ich sie noch ein wenig weiter verfolgt:
Die Testdaten sind unter http://stefan.waidele.info/php-ex/katalogtestdata.csv einzusehen. Sie entsprechen den Orginaldaten, sind jedpch “SFW”. Die Links zu den Skripten öffnen sich in neuen Browserfenstern. Sowohl das Skript als auch die Ausabe desselben sind zu sehen.
Kommentar überspringen 1: Falscher Ansatz
Wie Silke bereits feststellen musste, werden die Zeilen der Datei von der ersten bis zur letzten gelesen, auch wenn die Zählervariable im Skript schon viel weiter ist. Das Resultat kann man der Vollständigkeit halber hier sehen: http://stefan.waidele.info/php-ex/falsch.php.
Vorteil: Keiner
Nachteil: Falsches Ergebniss
Kommentar überspringen 2: Besserer Ansatz:
Der Zeilenzähler beginnt bei 0. Vor der Ausgabe wird geprüft, ob man schon an der 10. Zeile vorbei ist. Wenn ja, werden die Daten ausgegeben: http://stefan.waidele.info/php-ex/besser.php
Vorteil: Einfach (?) zu programmieren
Nachteile: Performance (Prüfung bei jedem Schleifendurchlauf), Feste Position und Größe des Kommentars, die Bedingung der Abrfrage muss in Abhängigkeit von der Schleifenimplementierung formuliert werden (Startet $row bei 0 oder 1? Inwiefern stimmt diese Zählung mit dem Editor überein? In meinem Beispiel wird ein Datensatz “irrtümlicherweise’ Ausgelassen)
Kommentar überspringen 3: Noch besserer Ansatz:
Der Kommentar wird in einer seperaten Schleife gelesen. Die Hauptschleife braucht sich nicht mehr um ihn zu kümmern und startet direkt bei den Daten: http://stefan.waidele.info/php-ex/nochbesser.php
Vor- und Nachteile: Wie bei 2, jedoch bessere Performance da weniger Abfragen erfolgen. Die Bedingungen der ersten Schleife (die den Kommentar überspringt) sind besser (weniger fehlerträchtig) zu formulieren.
Flexible Kommentare: IMO, der beste Ansatz:
Kommentare werden durch eine Raute gefolgt vom Feldtrenner am Zeilenanfang eingeleitet (hier: “#|”). In jeder Zeile wird auf dieses Zeichen geprüft. Es werden nur Daten ausgewertet. Kommentare (und Leerzeilen) werden übersprungen: http://stefan.waidele.info/php-ex/IMOambesten.php
Vorteil: Flexible, gut lesbare Datensammlungen (wichtig bei manueller Pflege), Sicher zu programmieren (kein ‘versehentlicher’ Verlust von Datensätzen)
Nachteile: Performance (2 Prüfungen bei jedem Schleifendurchlauf), Änderung der CSV-Datei (wg. anderem Kommentarsyntax, siehe: http://stefan.waidele.info/php-ex/katalogtestdata2.csv)
Fazit:
Auch wenn Aufgrund der guten Datenbankunterstützung in PHP die Benutzung selbstverwalteten CSV-Dateien meist nur die zweitbeste Lösung ist, kommt man manchmal nicht um diese herum. Dann ist es wichtig, die Daten möglichst Zukunftssicher und übersichtlich abzulegen. Werden die Dateien vom Benutzer im Editor verändert und somit zahlt sich der (leicht) erhöhte Aufwand beim Programieren auf jeden Fall aus.
Ich finde die Idee, CSV-Dateien mit Kommentaren und Leerzeilen lesbarer zu gestalten ausgesprochen gut. Vielen Dank an Silke Schümann für die Idee!


Ach, ich besitze eine minimal überdurchschnittliche Intelligenz, das heißt, ich kann davon ausgehen, dort wo ich mich blöd anstelle, dort stellen sich auch andere blöd und da der Variablen-Wert bereits in der Klammer raufgesetzt wurde, war es gar nicht so abwegig, zu denken, dass man so den Anfang überspringen kann. Die Abfrage nach der Raute ist sicherlich die bessere Idee, denn dann darf man auch den Kommentar um eine oder zwei Zeilen vergrößern.
PS auf die Pipe kann man verzichten, denn diese leitet ja bereits das zweite Feld ein und ein solches will man ja nicht abfragen. Es genügt also einfach am Anfang jeweils eine Raute zu setzen.
[...] Im Templaterie-Blog habe ich angefangen meine ersten PHP-Fortschritte öffentlich zu machen. Diese PHP-Fortschritte sind was sie sind, erste unbeholfene Tapser in der Programmiersprache. Ich habe viele Tutorials gelesen. Lese regelmäßig das PHP-Handbuch und dennoch komme ich mit vielem nicht zurecht und Lösungen werden so manches mal nicht unbedingt die Besten sein. Bislang ist eingetroffen, was ich erhofft hatte und es ist in bester Social-Blogmanier passiert, auch wenn man bei manchen Formulierungen ein wenig mit den Augen rollen darf (in der Hoffnung, dass andere etwas lernen … zu “Kleine Überraschungen für PHP-Anfänger”). [...]
hi,
wirklich ein unterhaltsames thema….
danke für eure informationen und antworten wird mir zukünftlich sehr hilfreich sein…
danke
Kommentare sollten nicht nur in CSV-Files hinterlegt werden, ich musste mir es mit viel harter Erfahrung erarbeiten Kommentare in meine Quelltexte zu schreiben ;)
Oh ja: Lesbar kommentierte Quellen sind etwas wundervolles…