News - Features - Downloads - Forum - Team - Support - Switch View: Screen
Login - Registrierung - Passwort vergessen

Antworten: 4
Seite [1]
reVerB


Geekboy




Beiträge: 1237
# Thema - 26.05.2011 um 21:58 Uhr
Ich bin gerade dabei, ein Dynamisches Formular-System zu schreiben. Mein Plan sieht so aus:

Es handelt sich dabei um ein Managementsystem für Lernlektionen. Die Lektionen sollen dabei dynamisch erstellbar sein und auch einzelnen Gruppen zugeordnet werden. Dabei lege ich fest definierte Funktionen/Methoden fest.

Nun soll ein Admin für die Lektionen unterschiedliche Formulare erstellen können, die ausschließlich zum bearbeiten oder speichern von Daten dienen.

Das Problem: Es macht keinen Sinn, eine feste Spaltenanzahl in der Datenbank zu definieren, da der Umfang der Formulare variieren kann. Außerdem will ich nicht für jedes Formular eine neue Tabelle erstellen.

Mein Plan: Ich möchte eine Tabelle mit den Formulartemplates erstellen und eine mit den Daten. Die Templatetabelle sieht so aus:
| template_id | template_name | template_code | template_creator | template_createdate |

Die Tabelle für die Daten sieht so aus:
| formdata_id | formdata_tplid | formdata_code | formdata_user | formdata_date |

formdata_code sowie template_code soll dann die Daten enthalten. Zum speichern der Daten allerdings bin ich mir nicht sicher, welches Format ich nehmen soll. Zum einen finde ich Serialize toll, da es weniger Zeichen in der Zelle bedeutet. Zum anderen finde ich wieder XML gut, da durch Parameter präzisere Angaben zu den einzelnen Formularelementen gemacht werden können.

Was eignet sich für diesen Zweck besser?


Zuletzt editiert von reVerB am 26.05.2011 um 21:59 Uhr (1x Editiert)
Inaktiv
SCHIRI ClanSphere Team


Weltmeister



Herkunft: Hamburg
Beiträge: 5299
# Antwort: 1 - 26.05.2011 um 22:43 Uhr
Wenn du etwas suchst, was kürzer ist, als XML, nimm doch JSON. Ansonsten. Allgemein eigenen sich Relationale Datenbanken wie du schon gemerkt hast, nicht so gut für das Speichern von Formularen, da diese ja Baumstrukturen sind. Ob das nun aber ein Grund ist gleich auf eine Solte Datenbank umzusteigen/hinzuzuziehen, ist natürlich noch eine andere Frage.

Wenn du etwas ganz komplexes bauen willst, kannst du auch sowas machen:

Tabellen:
-forms - Eine Zeile Pro Formular, beinhaltet name und id des Formulars
-fields - Beinhaltete eine Zeile Pro Formular-Feld und verschiedene Spalten zur Konfiguration des Feldes
-forms_fields - verknüpft ein Field mit einem Form, ein Field kann in mehreren Forms wiederverwendet werden
-submitions - Pro Benutzung des Formulars wird eine Zeile erstellt. Beinhaltat als Spalten nur ID und Form_id
-submitions_fields - hat die Spalten: submition_id, field_id und value

Wenn man dann noch Feld-Gruppen (z.B. Adresse, mit Street, Zip und City als Felder) bauen möchte, die wiederum in mehreren Formularen wiederverwendet werden können sollen, wird das ganze noch etwas komplexer.
Wenn man dann auch noch Validierungs-Regeln bauen will, wird es noch komplexer...
und so weiter...


------------------
www.laszlokorte.de

Inaktiv
|
reVerB
Thread-Ersteller


Geekboy




Beiträge: 1237
# Antwort: 2 - 26.05.2011 um 23:00 Uhr
Also aktuell sieht die Struktur eines XML für ein Template so aus:
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1. / 2. / ... 
 <template name="demo">
<
element name="note" style="select" type="int" label="Schulnote">
    <
1>1<1/>
    <
2>2<2/>
    <
3>3<3/>
    <
4>4<4/>
</
element>
<
element name="comment" style="text" type="string" label="Kommentar" />
<
element name="nurso" style="text" type="string" label="Irgendwas" />
</
template>


In der Datentabelle sieht das dann so aus:
 
1.
2.
3.
4.
5.
1. / 2. / ... 
 <data template="demo">
<
element name="note" type="int" label="Schulnote">2</element>
<
element name="comment" type="string" label="Kommentar">Hallo</element>
<
element name="nurso" type="string" label="Irgendwas">Ich bins</element>
</
template>


Der Vorteil daran ist, das durch z.B. SimpleXML die Daten gut zu verarbeiten sind. Aus dem ersten XML wird das Formular bei Aufruf gebaut und das 2. XML ist ein beispiel, wie die Daten in der DB dann stehen. Wenn man dann das Formular bearbeiten will, kann man die Edit-Page wieder vollständig herstellen. Außerdem können die Daten trotzdem verwendet werden, da diese gemäß eines anderen templates von PHP umverarbeitet werden können.

Aber Serialize ist um einiges sparsamer im Speicher. Es ist nur schwerer zu verarbeiten.


Inaktiv
|
hajo ClanSphere Team


VIP - Poster




Herkunft: Barsbüttel
Beiträge: 9411
# Antwort: 3 - 26.05.2011 um 23:03 Uhr
wie wärs sonst mit document based storage als database, also etwas nach dem prinzip von mongodb oder auch couchdb. da kannst dann nachträglich noch felder zufügen oder entfernen und es stört nirgends. die daten werden dort ebenfalls als json abgelegt und halten sogar noch referenzen untereinander wie du es zusammenschraubst.


------------------
ClanSphere - professional clan care starts here

Inaktiv
|
reVerB
Thread-Ersteller


Geekboy




Beiträge: 1237
# Antwort: 4 - 26.05.2011 um 23:07 Uhr
Der Vorteil, so wie ich es vorhabe ist ja eben, das man das auch auf einem Standard-Webspace mit normaler MySQL-Datenbank nutzen kann. Solche Datenbanken möchte ich daher nicht Voraussetzen müssen. Die Idee ist gut, aber zum aktuellen Zeitpunkt für meine Pläne nicht zielführend. Trotzdem Danke


Inaktiv
|
Antworten: 4
Seite [1]


Sie müssen sich registrieren, um zu antworten.


ClanSphere Project - Mailus - Imprint - Disclaimer - Scriptinfo