Achternaam netter maken
Ik heb één invoerveld waar een klant zijn/haar achternaam invult. Ik wil per sé niet gebruik maken van een apart invoerveld voor tussenvoegsels. Nu heb ik een array met bestaande tussenvoegsels en wil ik eigenlijk dat alle woorden ucfirst worden, behalve diegene die in de array voorkomen. Heel simpel eigenlijk, maar ik kom er niet uit!
Code (php)
1
2
3
4
2
3
4
$surnameprefixes = array("af","aan","bij","de","den","der","d'","het","'t","in","onder","op","over","'s","'t","te","ten","ter","tot","uit","uijt","van","vanden","ver","voor","En combinaties:","aan de","aan den","aan der","aan het","aan 't","bij de","bij den","bij het","bij 't","boven d'","de die","de die le","de l'","de la","de las","de le","de van der","","in de","in den","in der","in het","in 't","onder de","onder den","onder het","onder 't","over de","over den","over het","over 't","op de","op den","op der","op gen","op het","op 't","op ten","van de","van de l'","van den","van der","van gen","van het","van la","van 't","van ter","van van de","uit de","uit den","uit het","uit 't","uit te de ","uit ten","uijt de","uijt den","uijt het","uijt 't","uijt te de ","uijt ten","voor de","voor den","voor in 't");
$surname = 'van den berg'; //moet worden: van den Berg
$surname = 'van lenderen tot someren'; //moet worden: van Lenderen tot Someren
$surname = 'van den berg'; //moet worden: van den Berg
$surname = 'van lenderen tot someren'; //moet worden: van Lenderen tot Someren
Iemand een idee hoe dit te doen?
Maar ik zou $surname splitten bij elke spatie en dan op woorden controleren en vervolgens weer 1 string ervan maken (met ucfirst)
Waarom het je zelf moeilijk maken... Ik zou echt wel gaan voor een apart veld. Met een beetje CSS code, kan je er voor zorgen dat het lijkt dat je maar één veld gebruikt. Lijkt me efficiënter & makkelijker.
Write Down op 23/09/2012 12:38:49:
Waarom het je zelf moeilijk maken... Ik zou echt wel gaan voor een apart veld. Met een beetje CSS code, kan je er voor zorgen dat het lijkt dat je maar één veld gebruikt. Lijkt me efficiënter & makkelijker.
Het gaat hier om de registratie bij een webshop. De klant moet al redelijk veel gegevens invullen en met oog op usability wil ik het simpel houden door tussenvoegsel en achternaam in één veld te laten. Ik kies dus voor het gemak van de klant, en niet voor het gemak van mijzelf :)
Is het niet handiger om zoiets te doen als dit:
Bestaat de naam uit 2 woorden, dan allebei met een hoofdletter. Bestaat de naam uit meer dan 2 woorden dan alleen het eerste en laatste woord met hoofdletter.
Anyhow, je streven is nobel, maar ik denk dat je het in de praktijk nooit 100% waterdicht zal krijgen.
De beste manier is denk ik dan toch met 3 invoervelden werken.
"De klant moet al redelijk veel gegevens invullen en met oog op usability wil ik het simpel houden door tussenvoegsel en achternaam in één veld te laten."
Dan zal het voor die 2 extra velden toch ook niet meer uitmaken hè ;-)
Misschien eens kijken of je in die andere gegevens iets kunt weghalen? Beperk je tot het essentiële: naam, factuuradres, afleveradres, e-mailadres, tel.nr.
Gewijzigd op 23/09/2012 13:50:51 door Ozzie PHP
Rogier Burton op 23/09/2012 12:42:48:
Het gaat hier om de registratie bij een webshop. De klant moet al redelijk veel gegevens invullen en met oog op usability wil ik het simpel houden door tussenvoegsel en achternaam in één veld te laten. Ik kies dus voor het gemak van de klant, en niet voor het gemak van mijzelf :)
Write Down op 23/09/2012 12:38:49:
Waarom het je zelf moeilijk maken... Ik zou echt wel gaan voor een apart veld. Met een beetje CSS code, kan je er voor zorgen dat het lijkt dat je maar één veld gebruikt. Lijkt me efficiënter & makkelijker.
Het gaat hier om de registratie bij een webshop. De klant moet al redelijk veel gegevens invullen en met oog op usability wil ik het simpel houden door tussenvoegsel en achternaam in één veld te laten. Ik kies dus voor het gemak van de klant, en niet voor het gemak van mijzelf :)
Dat ene veldje zal het voor de klant ook niet rampzalig maken...
Jan van Slooten
J. van Slooten
graaf van Slooten
Meneer Van Slooten
Ds. Van Slooten
Alleen als het vooraf wordt gegaan door een naam of voorletter(s) moet het tussenvoegsel met een kleine letters, in elk ander geval met hoofdletters. En de d' of 't moeten altijd met kleine letters...
Kortom: Je kan het systeem hoe je die nu wilt nooit waterdicht maken.
Gewijzigd op 23/09/2012 14:33:36 door Wouter J
Als hij gaat trouwen met (bijvoorbeeld met Marietje Van den Berg), dan gaat die Marietje dus officieel Marietje Dockters-Van Leeuwen Van den Berg heten.
Knappe regex daarvoor. Want haar achternaam is dus Dockters-Van Leeuwen Van den Berg. Met 5 hoofdletters daarin!
Kortom: leuk idee, maar laat wat de mensen invoeren gewoon staan.
Tenzij het 1 woord is: dan mag je ucfirst() eroverheen gooien.