Ik heb een vraagje over de functie explode
Ik heb een tabel met namen erin.
Nu wil ik alleen de achternamen laten zien.
Dit kan ik doen met explode, maar het probleem is, ik heb de voor en achternaam in 1 tabel gezet dus ook de mensen die 2 voornamen hebben ingevoerd.
Nu wil ik het volgende:
Ik wil met explode de naam in delen splitsen en dan de achternaam laten zien.
Maar zoals ik al zei heb je dan het probleem dat sommigen 2 voornamen hebben.
Dus dan is het derde deel van de opsplitsing dus de achternaam.
En anders de 2de.

Weet iemand hoe je dit probleem kan oplossen?
Door een goede tabel te maken. Zo eentje:

id: voornaam: tussenvoegsel: achternaam:
1| jan jaap | van | nogwat
2| kees jan | de | derde
Je zou de functie [php]end[/php] kunnen gebruiken, om de laatste array key te krijgen. Maar wanneer mensen 2 achternamen invoeren gaat dat natuurlijk ook niet meer werken.

Beste oplossing is dus om gebruik te maken van een scheidingsteken tussen voor- en achternaam.


[edit]*Type*[/edit]
explode() en dan array_pop()

(PHP 4, PHP 5)

array_pop — Haal een element van het einde van een array af
Dit is nooit te doen. Je kunt namelijk meerdere voornamen, maar ook meerdere achternamen hebben.

De manier die het dichtstbij zit: die van thijs en SanThe.
Nu heb ik het volgende:
$naam = explode(" ", $list2->naam);

echo $naam[1];

if(isset($naam[2])){
echo " ".$naam[2];
}
Eerst haal je dus de naam uit elkaar met explode,
dan laat je de achternaam zien,
en dan kijk je of ze nog een 2de achternaam hebben
als dat zo is dan laten we die ook zien.
Hiermee voorkom je dus niet dat ze 2 voornamen hebben,
maar dat kun je wel voorkomen door het na te kijken als ze de voornaam invoeren.
Je kunt veel beter je datamodel aanpassen zoals Jeroen van Gijzel al zei. Een volledige naam kan uit maximaal drie delen bestaan: voornaam, tussenvoegsel, achternaam. Voornaam en achternaam bestaan altijd uit 1 of meer woorden, tussenvoegsel bestaat altijd uit 0 of meer woorden. Nu kun je alles uit je DB laten rollen wat je wilt. Als je wilt weten of iemand een dubbele voornaam heeft, explode je het veld 'voornaam' op de spatie of op het koppelteken. Net zo met de andere velden.

Reageren