login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Dynamische formulieren

Offline Codestar - 16/01/2007 19:56
Avatar van CodestarNieuw lid Ik zit me een beetje te ergeren aan het feit dat ik 4 pagina's (HTML, queries etc) moet wijzigen als ik bij mijn profielen op mijn website een veld wil toevoegen. (Voor het registeren en wijzigen van een profiel).

Ik zit er aan te denken om de forumlieren dynamisch te maken, maar ik weet niet precies hoe ik dit moet gaan aanpakken. Kunnen jullie me helpen?

Ik zat er aan te denken 2 tabellen in de database te plaatsen met:

tabel 1:
-id
-Naam v/h formulier

tabel 2:
-id :: relatie leggen met het forumlier id van tabel 1
-Type van het(de) element(en) (input/textfiel etc)
-Id van het veld
-Naam van de submit button
-Waarde (Value) van de submit button

En iedere keer als ik een nieuw veld wil in mijn formulier wil toevoegen plaats ik een rij in de database tabel.

Zit ik in de goede richting te denken?  Wat kan er beter? Hoe ga ik de volgerde van de elementen opslaan?

4 antwoorden

Gesponsorde links
Offline Rik - 16/01/2007 20:37
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik heb er ook eens aan zitten denken om zoiets te maken.  

Je moet een beetje een grens trekken tussen template (layout) en formulier. Je kan wel alles opslaan in de database maar dan moet je alles wel weer op de goede plek zien te krijgen. Als je een goede stylesheet maakt voor de opmaak hoef je dat niet erbij op te slaan in de database.

Als je het gelijk in een database wilt zetten moet je ook valideren en een query parsen.

Ik zou zoiets doen:
Tabel "forms":
- id (Uniek nummer)
- name (Formulier naam)
- method (Post of Get)

Tabel "form_elements":
- id (Uniek nummer)
- form_id (Verwijzing formulier)
- name (Naam van de variabele)
- type (Dropdown / Radio / Text / Hidden)
- value (Waarde)
- order (Volgorde)
- validate_pattern

Tabel "form_elements_options":
- id (Uniek nummer)
- form_element_id (Verwijzing formulier element)
- value (Waarde)
- order (Volgorde)

Die laatste tabel zou dan zijn voor dropdown lijsten, radio buttons, checkboxen. Steeds order kan je dan de volgorde veranderen. Bij "validate_pattern" lijkt me wel gaaf als je dan in je script een lijst met 20 verschillende validatie patronen hebt, bijv.; email, url, nummeriek enz.. En dan kun je gewoon in de db zeggen waar hij aan moet voldoen.  

Als je alle informatie uit de tabellen hebt gehaald heb je iets van een multidimensionale array die je dan in een templateparser oid kan parsen.

Natuurlijk kan (en moet) hier nog vanalles bij: sql query dynamisch maken. Fout meldingen als de ingevulde waarde niet valid is. (Dat zou met weer een extra tabel kunnen.) Bij een uploadveld automatisch een 'enctype="multipart/form-data"' toevoegen. En meer van zulk soort dingen.

Ik moet zeggen, het is een beetje overweldigend zo, steeds weer zijwegen waar je ook nog iets aan moet scripten, maar het lijkt me wel vet als je zo makkelijk je formulieren kan organizen!  

Als ik een keer veel tijd heb ga ik dit misschien wel een keer uitwerken!
Offline Codestar - 16/01/2007 21:06 (laatste wijziging 16/01/2007 21:09)
Avatar van Codestar Nieuw lid Bedankt Boukefalos, het is me nu weer iets duidelijker. Al zie ik het nu al gebeuren dat ik straks verschillende keren zal merken dat ik iets moet toevoegen aan de functionaliteit hiervan.

Ik vraag me nog wel af hoe ik de volgorde van de elementen beheer. Ik denk dat dit gewoon met getallen van 0 t/m .. moet gebeuren. En in de query sorteren op het volgorde veld. 

Iig bedankt, en als er nog mensen wat op te merken hebben dan hoor ik het graag 
Offline pj_muller00 - 17/01/2007 09:07
Avatar van pj_muller00 PHP interesse Hoe ga je de input opslaan ?

pr_id| id (form elements) | input (dit is een str of een verwijzing naar form_elements_options).

Op deze manier ga je wel zeer veel rijen hebben.

Het beste is om een soort admin te maken om vragen toe te voegen, en van zodra je er één toevoegt hij automatisch de query toevoegt om één extra kolom te hebben in 'data' ofzo.

Dan lijkt met dit systeem wel iets hebben  

Pj  
Offline Berten - 17/01/2007 10:11
Avatar van Berten PHP beginner Je kan natuurlijk ook een functie buildForm() maken die de form genereert.

echo buildForm();

zo moet je telkens maar 1 maal in functions.php in je functie buildForm() het formulier aanpassen.

op die manier kan je ook bv: verwerkForm($geklikteknop); maken om het formulier te verwerken.

weer moet je het maar 1 keer aanpassen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.165s