Deus Figendi: eigenes CMS - Datenstruktur

Beitrag lesen

Jetzt endlich die Frage:
Wie würdet ihr das machen im Falle einer Tabelle? Auf Kundenseite wäre eine Eingabemaske für eine Tabelle ebenfalls in einer Textarea denkbar, etwa so:

Filiale|Ort|Adresse
Maxfiliale|München|Musterstrasse
Testfiliale|München|Teststrasse
Musterfiliale|Frankfurt|Wurststrasse

(diese Daten werden in einen mehrdimensionalen Array gepackt und serialisiert, später beim Betrachten der Website wie oben beschrieben auf die entsprechenden Datenstrukturen gemappt)

Ist das sinnvoll? Ist sowas einem DAU zumutbar? (Über den Separator kann man streiten, ist nur ein Beispiel.) Oder wäre es besser, auch tabellarische Daten in einzelnen Inputfeldern auszuliefern? Oder ist die ganze Serialisierung Quatsch und ich sollte _ALLES_ in einzelnen DB-Feldern ablegen (das heisst für einen Absatz(!) hätte ich dann u.U. 4 Einträge in einer DB )?

Um DAU-sicher zu arbeiten musst du das Verhalten von Tabellenkalkulationen nachahmen.
Ich fand die Methode von Typo3 nicht schlecht (und das ist das einzige CMS, welches ich aus Redaktioneller Sicht näher kenne). Die machen einfach beides, zunächst eine Textarea wie oben beschrieben mit dem | -Seperator (bzw. einstellbar) oder so eine Maske von input-Feldern, von denen einige als Kopf vorgesehen sind. Lässt sich IIRC auch hin und her schalten.
Ich finde den Ansatz okay und für einigermaßen Computeraffine Menschen auch annehmbar, aber technopobe Leute, die Computer nur benutzen, weil sie müssen dürfte das zu komplex sein.

Dann lieber mit "anderen Mitteln" eine Tabellenkalkulation simmulieren.
Google-Docs macht das - wie ich finde recht geschickt - einfach mit HTML-Tabellen. Sie fangen Tastatureingaben ab und verändern daraufhin die HTML-Tabelle bzw. das CSS mit JavaScript.
Ebenso denkbar sind Canvas+JavaScript, Flash, Silverlight und natürlich Java.
Dabei halte ich Java für die simpelste Lösung, HTML+JS für die beste und Canvas+JS kam mir als erstes in den Sinn ^^
Meine Empfehlung also: Die Maske sei eine HTML-Tabelle und alle relevanten Tastatur- und Maus-Eingaben werden abgefangen, so dass man mit Pfeiltasten/Enter durch die Tabelle navigieren kann und durch Zeicheneingabe einfach in das aktuelle Feld schreibt (typischerweise: überschreibt). Dabei würde ich mich echt an Google bzw. halt Tabellenkalkulationen orientieren und eben _nicht_ das aktuelle (quasi "markierte") Feld mit einem Input belegen, sondern in einem zentralen Input den Inhalt der aktuellen Zelle darstellen. (Dieses Input muss auch kein "echtes" sein, kann man aber imho machen).
Jede Zelle bekommt noch ihren Style bzw. Klasse, wobei ich einfach nicht erlauben würde innerhalb einer Zelle unterschiedlich zu formatieren, das macht es unnötig komplex, im Gegenteil kann man die Formatierungen massiv einschränken, indem man erlaubt den Zellen Semantik zu geben: "Dies ist eine Kopfzelle/-zeile"; "Dies ist eine Ergebnis-Zelle/-Spalte" (...).
Darüber hinaus kann man auch das teilweise automatisieren (Daten-Art feststellen: Zahl, Datum, Zeit, Text...).
Ob dein(e) Kunde(n) auch tatsächlich die _Kalkulation_ brauchen, also ob das rechnen können muss musst du selber wissen, aber so Sachen wie =HEUTE(); sind schon nützlich ^^
Und wenn es fertig ist stell es bitte unter einer offenen Lizenz ins Netz :D

Naja oder du nimmst was fertiges.

--
sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(