Check niet verplicht veld of geboorte datum juist is en naar database
Door
Hans De Ridder
op 02-03-2016 16:39
gewijzigd op 02-03-2016 16:41
4.268 views
Ik ben met een registratieformulier bezig.
Daarin staat ook een veld voor het invullen van de geboortedatum.
Dit is niet verplicht.
Maar als er iets ingevuld wordt moet wel beoordeeld worden of het een juiste weergave is.
Ongeveer in de vorm 1951-12-09.
Dus geen datum naar voren, te ver naar achter, of een 13e maand, een 33 juli, of een 30 februari.
Als de datum akkoord is, dan moet het naar de database (mysql) worden geschreven.
De verschillende checkfuncties komen in een map 'include'.
Ik ben heel wat scriptjes tegen gekomen, maar werken niet zoals ik het wil.
Ben er ook poosje uitgeweest, zodat ik minder op de hoogte ben van de nieuwste functies in PHP
Iemand die mij verder kan helpen
Ik ben eigenlijk wel benieuwd hoe het(/de) formulierveld(en) er uitziet(/n) waarin je je geboortedatum invult?
Is dit een tekstveld waarin men verzocht wordt dat, wanneer je dan iets invult, dit van de vorm JJJJ-MM-DD is? Dit is wellicht voor normale (Nederlandse) gebruikers nogal tegennatuurlijk.
Daarnaast zou je ook de volgende tactiek kunnen hanteren: indien je niet wilt dat iemand iets vrij/willekeurig in kan vullen, geef deze persoon dan de gelegenheid ook niet. Stap, ingeval je een tekstveld gebruikte, bijvoorbeeld over op dropdown menu's in de "natuurlijke" volgorde dag - maand(naam) - jaar. Bijkomend voordeel is dat je deze informatie dan ook meteen in de goede vakjes binnenkrijgt. Je hoeft dan al minder toeren uit te halen om de informatie ook te valideren. Ook is dit wellicht wat gebruiksvriendelijker: je hoeft in dit geval niets meer te typen, maar slechts enkele keren te klikken. Het verkleint ook de kans op fouten want de informatie is in zekere zin al voor je ingevuld.
Ook loont het misschien de moeite om in termen van "samengestelde formulier elementen" te gaan denken die je als eenheid behandelt en mogelijk op den duur ook kunt hergebruiken. Een geboortedatum is in feite een datum (dag/maand/jaar selectboxes) met wat restricties. Probeer deze elementen ook wat meer te behandelen als (generieke/herbruikbare) bouwstenen.
Dan zou ik daar ook de validatie op afstemmen die een wat algemenere aanpak vereist. Bijvoorbeeld, een formulier bestaat uit elementen. Elk element heeft eigen gedrag en eigen validatieregels. Je zou bij het formulier, bij haar elementen, bij kunnen houden of er fouten zijn opgetreden (in de vorm van een array). Indien het formulier na validatie foutenvrij is kun je het formulier dus met enig vertrouwen gaan verwerken. Het simpelweg retourneren van een string als de validatie mislukt -wat nu gebeurt- is misschien wat kort door de bocht, maar voor een relatief simpel formulier kan dat in principe volstaan. Maar denk er eens over na hoe je dit mogelijk gestructureerder kan aanpakken, want dit is vast niet de laatste keer dat je een formulier in elkaar zet :). Hier kun je veel tijdswinst pakken als je eenmalig nadenkt over een wat structurelere aanpak, waarmee vervolgens formulieren (en haar validatie + afhandeling) voor een groot deel gegenereerd kunnen worden.
De geboortedatum kan ik op een later tijdstip gebruiken om bijv. een boodschap te plaatsen op een ledenlijst.
Invullen gebeurt in formaat dd-mm-jjjj.
Niet iedereen vindt dat echter prettig. Dus is dat een keuze om in te vullen.
Beetje zoals facebook je die keuze geeft.
De verwerking van alle formulieren is al vrij gestructureerd omdat dit plaatsvindt in aparte processes.php.
En via includes hebben de formulieren weer toegang tot de processes.php.
Dus kunnen dan dezelfde validating en foutafhandeling gebruiken.
Is ook geen script van mezelf....
Maar gewoon hier en daar wat aanpassen en beter beveiligen.
Leer ik het snelste.