PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lösung ohne Datenbank nur mit PHP+CSV/TXT möglich?


antiprodukt
2019-03-20, 15:55:08
Hallo!

Für ein kleines privates (ergo hier sitze nur ich und dies ohne dafür nur einen Cent zu sehen) Projekt soll eine kleine "Datenbank" die benötigten Datensätze beherbergen.

Ein Datensatz ist reiner Text, welcher maximal 3000 Zeichen (eine von mir gewählte Grenze ohne technischen Hintergrund) beinhalten soll und dazu eine Kategorie mit zwei weiteren Details und eine Überschrift haben soll.

Hier ein Beispiel (und nein, ich mache keine Hardware-Enzyklopädie, mir ist nur nichts besseres gerade eingefallen zur Veranschaulichung):


Kategorie: CPU
Zeitraum: 1990er
Hersteller: Intel

Überschrift: Der Intel Pentium Pro - 6x86

Text: (hier folgen noch max. weitere 2897 Zeichen plus Datumstempel)


Die einzelnen Einträge sollen nur einem bestimmten Zeitraum (30 bis 45 Tage) lang auffindbar sein - ich würde also irgendwo noch einen Datumstempel benötigen um dies abzufragen.

Ich gehe davon aus, dass nie mehr als maximal 200 Datensätze gleichzeitig aktiv sein werden - die ganze "Datensammlung" also ~585 KB haben wird.
Die Daten kommen von extern. Das Hinzufügen und Löschen würde ich manuell übernehmen, da wird nicht so viel zu tun sein. Es werden auch nirgendwo sensible/vertrauliche/schützenswerte Daten gespeichert.

Ich würde auf der Einstiegsseite eine kurze Statistik präsentieren - etwa "Wie haben insgesamt 179 Datensätze, welche sich in 21 Kategorien gliedern, sie können auch nach 9 Herstellern und 5 Zeiträumen filtern."

Eine Volltextsuche würde ich mir gern ersparen.

Ich würde die Daten gern in eine CSV schreiben und diese dann mittels PHP immer direkt auslesen lassen und die benötigten Daten dann ausfiltern.

Ich würde mir gern eine richtige Datenbank ersparen, da dies die Sache mMn nur verkomplizieren würde - außerdem mache ich dies alles privat und ohne Entlohnung.

Ist ein CSV hier der richtige Weg?
Welche Alternativen gibt es?

Ich kann mir auch vorstellen jeden Eintrag als eigene TXT Datei zu speichern, und in einer CSV nur Kategorie etc. und den Namen zu speichern.

Eventuell hat hier jemand schon so etwas umgesetzt oder ein paar Ratschläge für mich - Danke!

no.this.is.patrick!
2019-03-20, 16:37:09
XML könnte evtl. funktionieren.
und das dann mit XSLT in HTML code umwandeln...

antiprodukt
2019-03-20, 16:45:02
XML könnte evtl. funktionieren.
und das dann mit XSLT in HTML code umwandeln...

Hm, dies klingt richtig spannend...
Danke für den Denkansatz!

konkretor
2019-03-20, 19:38:32
sowas in diese richtung?

https://pjj.pl/pjjtextbase/tutorial/setting-up

Trap
2019-03-20, 21:03:14
Ich sehe da 3 Varianten:

Static site generator
PHP+SQLite
PHP + selbst Dateien verwalten

Wenn ein static site generator für deinen Anwendungsfall passt (siehe https://www.staticgen.com/ und https://jamstack.org/)würde ich den bevorzugen.

Als nächstes würde ich SQLite das handhaben lassen, das ist sehr robust, erlaubt SQL-Abfragen und ist problemlos als PHP-Modul verfügbar - siehe: https://sqlite.org/whentouse.html und http://php.net/manual/en/book.sqlite3.php

Aber natürlich kann man das auch zu Fuß in Dateien schreiben. Dann hat man kein praktisches JOIN oder GROUP BY, keine eingebaute Übersicht über alle vorhandenen Daten und man muss sich eine Prüfung der Datenformate aller Dateien selbst bauen, wenn man keine Laufzeitfehler für falsch befüllte Dateien haben möchte.

Ganon
2019-03-20, 21:09:47
und man muss sich eine Prüfung der Datenformate aller Dateien selbst bauen, wenn man keine Laufzeitfehler für falsch befüllte Dateien haben möchte.

Muss man bei SQLite aber auch. Sie garantieren keine Typ-Sicherheit.

Gast
2019-03-20, 21:17:26
Static site generator oder Javascript basiert. Die Datenbank einfach komplett als JSON Datei speichern, die wird ja (normalerweise) gezippt ausgeliefert, da ist das <80kb. Und dann dynamisch ne Tabelle oder was auch immer erzeugen und filtern lassen. Das geht dann clientseitig blitzschnell.
Wenn nur wenige (einzelne) der Einträge angezeigt werden, kann man natürlich auch nur die Metadaten in ein JSON packen und die Einträge dann nachträglich laden.

antiprodukt
2019-03-22, 13:11:01
sowas in diese richtung?

https://pjj.pl/pjjtextbase/tutorial/setting-up
Vielen Dank!

Trap
2019-03-22, 13:35:15
Muss man bei SQLite aber auch. Sie garantieren keine Typ-Sicherheit.
Aber es gibt bei SQLite keine Fehler, dass in Zeile 374 ein "," im CSV fehlt und deshalb die Zeile nicht lesbar ist. Oder Felder die ein """ enthalten, oder Newlines enthalten...

Bei XML analog mit Syntaxbaum und Escaping.

Monger
2019-03-22, 19:04:41
Solange alle Daten so klein sind, dass man sie problemlos vollständig an den Client schicken kann, braucht man mMn keine Datenbank. Ob jetzt Xml, csv oder Json... Im Endeffekt wurscht.
Ich persönlich würde wahrscheinlich ein Json wählen, weil sehr viele UI Frameworks ihre Controls daran binden können.
Hauptsache einfach.

Lokadamus
2019-03-23, 16:51:00
Kannst auch einfach CSV nehmen.

https://www.google.com/search?q=php+csv
http://unckel.de/blog/mit-php-csv-lesen-und-html-tabellen-erzeugen/