Dynamische Velden
Voor het vak Informatica op school hebben we een standaard site moeten maken( als eerste project). Nu moeten we daarop een uitbreiding maken( door aanvullende eisen die gegeven zijn).
Het grootste gedeelte is me gewoon gelukt, alleen bij de onderstaande opdracht kom ik er niet helemaal uit:
// deelopdracht //
De velden die je bij een evenement kunt invullen zijn eigenlijk per evenementsoort verschillend. De wens is om dit uiteindelijk volledig dynamisch te maken: de beheerder van de site moet evenementsoorten kunnen aanmaken met de daarbij behorende velden die een vereniging mag invullen bij het aanmaken van een evenement van die soort. Ieder veld heeft hierbij zijn eigen type. De types die ondersteund moeten worden zijn: getal, tekst, plaatje en HTML. Afhankelijk van het type toont het systeem verschillende invoervelden bij het aanmaken en tonen van een evenement.
Bij elk veld kan de beheerder ook aangeven of dit een verplicht veld is.
////
Kan iemand mij misschien wat tips( of voorbeelden) geven hoe ik dit moet aanpakken?, dat zou echt bijzonder fijn zijn!
Gewijzigd op 27/12/2010 20:42:38 door Herman Van der Zandt
Ik bedoel, dat is gewoon een editor maken.
Dat heeft totaal niets met een dynamische website te maken. ;)
Een getal kan je controleren met
ctype_digit() : http://nl2.php.net/manual/en/function.ctype-digit.php
tekst met is_string(): http://nl2.php.net/manual/en/function.is-string.php
een plaatje is een ietsje ander verhaal, dat kan met image_type_to_mime_type()
http://nl2.php.net/manual/en/function.image-type-to-mime-type.php
Zie eerste voorbeeld. ;)
Dan is het nog een beetje met ifjes en elsjes spelen wat verplicht moet worden.
Maar nu twijfel ik of ik een extra tabel in de database moet aanmaken ( met daarin bijvoorbeeld : Soort evenement, type veld ,verplicht).
Maar bedankt voor je tips, daar kan ik wel wat mee!
Gewijzigd op 27/12/2010 21:01:16 door Herman Van der Zandt
Gewijzigd op 27/12/2010 21:11:34 door Aad B
Dan hoeft de database alleen maar een nummerke te fetchen, en deze ga je verder afhandelen in php. Anders is het niet echt dynamisch lijkt me.
Ken de gehele opdracht natuurlijk niet maar zoals ik me het nu voorstel zou het meer iets zijn van een paar verschillende formulieren met verschillende soorten verplichte velden die controleer je met php. Meer is het eigenlijk niet. De database hoeft verder niet te weten of id 2 nu tekstveld verplicht is of niet.
Dat doe je met php regelen.
Je zal alleen het opslaan van die gegevens slim moeten aanpakken.
Een aanmaakscherm voor de beheerder( voor het toevoegen van extra velden met een bepaald type).
Dus deze gegevens zet ik in een tabel evenement_veld met daarin : evenementsoort,naamveld, soort veld, verplicht).
Dan moet ik dus bij het aanmaakscherm van evenementen een soort van FOR/WHILE loop maken die de velden dan weer ophaalt ofzo.
Iemand idee of ik zo een beetje goed denk?
Herman Van der Zandt op 27/12/2010 21:22:04:
Ja, je zit in de goeie denkrichting alleen evenementsoort zet je in de evenement tabel en je neemt het id van de evenement tabel mee naar de evenement_veld tabel (als foreign key, 1 op N relatie).Wat ik nu een beetje zit te bedenken:
Een aanmaakscherm voor de beheerder( voor het toevoegen van extra velden met een bepaald type).
Dus deze gegevens zet ik in een tabel evenement_veld met daarin : evenementsoort,naamveld, soort veld, verplicht).
Dan moet ik dus bij het aanmaakscherm van evenementen een soort van FOR/WHILE loop maken die de velden dan weer ophaalt ofzo.
Iemand idee of ik zo een beetje goed denk?
Een aanmaakscherm voor de beheerder( voor het toevoegen van extra velden met een bepaald type).
Dus deze gegevens zet ik in een tabel evenement_veld met daarin : evenementsoort,naamveld, soort veld, verplicht).
Dan moet ik dus bij het aanmaakscherm van evenementen een soort van FOR/WHILE loop maken die de velden dan weer ophaalt ofzo.
Iemand idee of ik zo een beetje goed denk?
- Evenementid
- Categorieid
- Naam
- Omschrijving
- Begindatum
- Einddatum
- isAanmeldingVerplicht
- organiserendeVerenigingid
- Openbaar
Dus categorieid valt in dit geval onder het soort evenement.
De nieuwe tabel die ik heb aangemaakt heet evenement_veld, en deze bevat de volgende velden:
- categorieid
- naamveld
- soortveld
- verplicht
Categorieid omdat de velden voor een bepaald type evenementen geldt.
Maargoed, nu zit ik met het volgende. Als beheerder wil ik bijvoorbeeld 5 extra velden aanmaken voor een bepaalde soort. Zet je deze gegevens dan als een array ofzo in de database( omdat het meerdere velden zijn)?
Gewijzigd op 28/12/2010 20:27:09 door Herman Van der Zandt
Die zet je in de tabel evenement_veld en die lees je in een loopje uit.
Er ontbreekt nog wel wat in deze tabel evenement_veld:
Evenementid voor de link naar tabel evenement.
evenement_veld_id voor de volgorde.
categorieid hoort alleen in evenement denkik.
"nu zit ik met het volgende. Als beheerder wil ik bijvoorbeeld 5 extra velden aanmaken": maak je 5 records aan in evenement_veld
Alleen nu wil ik als ik een categorie heb geselecteerd( als een vereniging een evenement wil aanmaken), dat de extra aangemaakte velden voor die categorie automatisch eronder verschijnen. Is dit mogelijk?
Ik las op internet iets met Onclick="submit()" ofzo, moet dat hierbij?
Dan nog iets; hoe haal ik meerdere gegevens uit een database met een for-loop:
$d= mysql_fetch_assoc($dynamischevelden);
$aantal = mysql_num_rows($dynamischevelden);
for($veld=1; $veld<=$aantal; $veld++){
echo '
<tr>
<td> '.$d[naamveld].'</td> <-- hier krijg je dus een aantal keer dezelfde waarde, maar hoe krijg ik daar verschillende waarden( uit de DB)?
</tr>
}
Alvast bedankt;)
Gewijzigd op 31/12/2010 19:03:12 door Herman Van der Zandt
Heeft iemand een idee hoe ik het bovenste gedeelte van mijn vorige reactie kan aanpakken?
Alvast bedankt!
Maar categorieën hebben toch geen velden? Alleen evenementen toch?
In dit geval hebben categorieën( evenementsoorten) wel bepaalde velden( aangemaakt door beheerder), die dan weer worden weergegeven als een vereniging een evenement aanmaakt voor die categorie. Volgens mij is dit de bedoeling( Correct me if I'm wrong). Zal dat van de week voor de zekerheid nog even navragen.
Dus zowel soorten evenementen als evenementen hebben velden?
Je hebt standaard velden( die voor elk evenement gelden), maar je hebt dus ook velden die afhankelijk zijn van het evenementsoort(categorie).
Dat vinden ze dynamisch. Als een vereniging een evenement aanmaakt voor bijvoorbeeld een LAN-party, dat er dan (extra) velden bijkomen die alleen voor de LAN-party gelden( dus bijvoorbeeld hoeveel computers iemand meeneemt of iets dergelijks).
En het maken van deze velden voor een evenementsoort(categorie) is dus alleen weggelegd voor een beheerder.