Dynamisches Formular nach POST auswerten

andy72

Erfahrenes Mitglied
Hallo @all,

ich bin gerade dabei ein eigenes MVC-Framework samt CMS zu schreiben. ich bin soweit schon ganz gut durch,
es fehlen nur noch hier und da ein paar spezielle Dinge um das ganze abzurunden.

Zu meinem Problem:
Ich habe einen Formbuilder, der mit Templates und DB-Requests sämtliche Formulare aus der DB generieren kann.
Das ganze passt 100% mit Daten, die nur aus einer einzigen Tabelle kommen, jedoch scheitere ich gerade an der
Möglichkeit Tabellen dafür zu verbinden. Das Generieren der Formulare passt, jedoch weiss ich ja nach einem POST
nicht, wohin die ganzen Daten sollen.

Hier sind jetzt also Ideen gefragt, wie ich das umsetzen könnte.

Zur Erklärung:
Das ganze besteht aus mind. 6 Tabellen:

Tabelle cmsusers
-------------------
cmsusers_id
cmsusers_name
cmsusers_enabled
cmsusers_email

Tabelle cmspermissions
----------------------------------
cmspermissions_id
cmspermissions_name

Tabelle cmsuserpermissions
----------------------------------------
cmsuserpermissions_id
cmsuserpermissions_cmsusers_fid
cmsuserpermissions_cmspermissions_fid
cmsuserpermissions_enabled

Tabelle cmsforms
-------------------------
cmsforms_id
cmsforms_name

Tabelle cmsformselements
--------------------------------------
cmsformselements_id
cmsformselements_type
cmsformselements_name

Tabelle cmsformsdata
-------------------------------
cmsformsdata_id
cmsformsdata_cmsforms_fid
cmsformsdata_cmsformselements_fid
cmsformsdata_required

Ein Formular kann ich also somit vollständig über im Code bekannte (und geprüfte!) Variablen generieren,
bleibt das Problem: Woher weiss ich nach einem POST, in welche Tabelle ich was updaten/inserten muss ?

Beim oben gezeigten Tabellenbeispiel bedeutet das, ich generiere ein Formular aus den Tabellen
cmspermissions, cmsuserpermissions und cmsusers für einen einzelnen User.

Bisher läuft mein Code so, dass die Formularfelder gleich den Feldnamen in der Datenbank sind - was ich jedoch für
einen falschen Ansatz halte da das einige Sicherheitsrisiken in sich birgt...

Bin für jede Idee offen - bei Fragen einfach fragen ;)
LG
Andy
 
Das einfachste wäre wo, wenn du das in der Hinsciht auf vollkommen Dynamisch machst:

////// bereich aus error-handling - anfang///////
/**
* eventuelle fehlermeldungen aufgrund nicht ausgefüllter form-felder anzeigen (nach dem abschicken des formulars und erhalt der bereits eingegebenen daten
*
*//
////// bereich aus error-handling - ende///////


////// bereich aus user-registrierung - anfang///////
<form action=".......">
////// bereich aus user-registrierung - ende///////

////// formularfelder aus aus der DB (dynamische klamotten von dir) - anfang///////
//daten
////// formaularfelder aus aus der DB (dynamische klamotten von dir) - ende///////


////// bereich aus user-registrierung - anfang///////
<input type=".........>
////// bereich aus user-registrierung - ende///////


Ich hoffe, man kann damit etwas anfangen ;)
 
Das Darstellen eines Formulars ist wie gesagt ja kein Problem ... ich brauche eher einen Lösungsansatz, wie ich NACH einem POST weiß, in welche DB_Table ich was updaten od. inserten muss ohne dass ich unbedingt Feldnamen der DB_Table im Formular verwenden muss und vor allem wie ich es Löse, wenn ein Formular aus 2 oder gar mehr DB-Tables generiert wurde :/

Dennoch Danke für Deine Antwort ;)
 
Das Darstellen eines Formulars ist wie gesagt ja kein Problem ... ich brauche eher einen Lösungsansatz, wie ich NACH einem POST weiß, in welche DB_Table ich was updaten od

Dafür hast du doch "<form action="foo.php">"

du kannst natürlich auch ein input type="hidden name="funktion" value="edit" oder "insert" aus der DB holen und es dementsprechend nach dem Abschicken feststellen
 
... wenn ich nicht ModRewrite aktiv hätte das nur Pfade in der Browserzeile erlaubt und ich somit nur
einen einzigen GET-Parameter habe der den Pfad beinhaltet *grrr*

Nun ja, habe den Formbuilder beiseite gelegt und nun doch in jedem Model eine Edit-Funktion implementiert - ist vom Code her einfacher zu handlen, obwohl es nicht die Dynamik hergibt die ich eigentlich haben wollte. Werde das bei Glegenheit nochmal anschauen ;)

Bis hierher also erstmal Danke.
LG
 
... wenn ich nicht ModRewrite aktiv hätte das nur Pfade in der Browserzeile erlaubt und ich somit nur
einen einzigen GET-Parameter habe der den Pfad beinhaltet *grrr*

Nun ja, habe den Formbuilder beiseite gelegt und nun doch in jedem Model eine Edit-Funktion implementiert - ist vom Code her einfacher zu handlen, obwohl es nicht die Dynamik hergibt die ich eigentlich haben wollte. Werde das bei Glegenheit nochmal anschauen ;)

Bis hierher also erstmal Danke.
LG

Eine vollkommen andere Möglichkeit wäre, wenn du es wie hier im Vbulletin-Forum machst, das die kompletten Templates aus der Datenbank stammen ;)
Das ganze würde nicht mal die DB zusätzlich belasten, weil du ja sowieso die User/Gruppen-Rechte usw. feststellen musst und da schon mind. 1 DB-Query hast
 
Öhm ja, genau daran habe ich auch schon gedacht .
Der Formbuilder soll später auch eine GUI bekommen, womit ich mir meine Formulare zurechtbasteln kann die im CMS auftauchen - von daher ist ein speichern in der DB eh sinnvoll.
 
Zurück