[PHP/MySQL] Zoeken op naam

Pagina: 1
Acties:
  • 374 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een database met de velden Voornaam, Tussenvoegsel, Achternaam en nog een paar velden die niet van belang zijn

Ik wil nu op naam zoeken, dus mijn sql query ziet er zo uit:

$sql = "SELECT * FROM Personeel WHERE Voornaam LIKE '%$Naam%'

OR Achternaam LIKE '%$Naam%' OR Tussenvoegsel LIKE '%$Naam%'";

als $Naam bijv. Piet van de Berg is dan vind hij niks,

als $Naam Piet, van de of Berg is dan vind ie gewoon Piet van de Berg.

Kan iemand mij vertellen waarom hij niks vind als je Piet van de Berg intypt?

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:52
Omdat je in het veld voornaam waarschijnlijk 'Piet' zult staan hebben, en in het veld Achternaam 'Berg' of 'Van den Berg'.
Als je intyped 'Piet vanden Berg', dan bevat die variable $naam dus die volledige string, en gaat alle records gaan teruggeven die in het veld 'Piet vanden berg' staan hebben (met eventueel nog karakters ervoor of erna). Aangezien het record van Piet vanden Berg enkel Piet heeft staan in het veld voornaam, voldoet dat record niet.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Omdat Piet van de Berg _niet_ de naam, _niet_ het tussenvoegsel, _noch_ de achternaam is. Dat jij een combinatie zoekt kan MySQL niet weten. Een (pruts)oplossing is
SQL:
1
2
3
4
"SELECT
  CONCAT ( voornaam, tussenvoegsel, achternaam ) as volledig
WHERE
  volledig LIKE '%" . $naam . "%'"


edit:

foutjes in de SQL |:(

[ Voor 11% gewijzigd door Verwijderd op 13-01-2003 10:31 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja idd dat heb ik over het hoofd gezien..

dit kan ik het makkelijkst oplossen om $Naam te exploden ?

of is er een makkelijkere manier

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oke nu werkt ie perfect

Ik gebruik nu deze query:

$sql = "SELECT * FROM Personeel

WHERE CONCAT(Voornaam,' ', Tussenvoegsel, ' ', Achternaam)

LIKE '%$Naam%'";

Bedankt !

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:52
En wat als ik dan ipv 'Piet vanden Berg' 'Vanden Berg piet' ingeef?

;)

Je kunt er ook voor zorgen dat de gebruikers je zoekstring niet in één veld moeten ingeven, maar dat je een zoekveld 'naam' en een zoekveld 'voornaam' hebt.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dat zou ook kunnen..

maar ik ga ervan uit dat de gebruikers "voornaam tussenvoegsel achternaam" of "tussenvoegsel achternaam" gebruiken,

en dan werkt dit perfect

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:52
Tip: vertrouw nooit wat gebruikers ingeven . ;)

https://fgheysels.github.io/

Pagina: 1