[SQL] string doorzoeken in 2 velden
Ik wil in een site leden laten opzoeken uit de tabel mxp_piloten. Maar omdat Achternaam en Voornaam in 2 aparte velden opgeslaan zijn zou hij de string "voornaam naam" moeten kunnen verwerken?
hoe zou ik dit best doen, hier de query die ik gebruik om gwn op naam te zoeken:
$sql = "SELECT * FROM mxp_piloten WHERE achternaam LIKE '%$HTTP_POST_VARS[zoekterm]%' ORDER BY achternaam";
$sql = "SELECT * FROM mxp_piloten WHERE achternaam LIKE '%{$_POST['zoekterm']}%' AND voornaam LIKE '%{$_POST['zoekterm']}%' ORDER BY achternaam";
zoekterm = "Jan Peeters"
voornaam bevat "Jan" maar niet "Jan Peeters"
achternaam bevat "Peeters" maar niet "Jan Peeters"
Dus Jan Peeters zou moeten opgesplitst worden en dan doorzocht worden. Dus :
zoekterm1 = "Jan"
zoekterm2 = "Peeters"
voornaam = bevat "jan"
achternaam = bevat "Peeters"
Ik snap wel de werking, maar heb nog te weinig php-ervaring om dit om te zetten in code
Code (php)
1
2
3
4
2
3
4
<?php
$z = explode(' ', $_POST['zoekterm']);
$sql = "SELECT * FROM mxp_piloten WHERE achternaam LIKE '%{$z[1]}%' AND voornaam LIKE '%{$z[0]}%' ORDER BY achternaam";
?>
$z = explode(' ', $_POST['zoekterm']);
$sql = "SELECT * FROM mxp_piloten WHERE achternaam LIKE '%{$z[1]}%' AND voornaam LIKE '%{$z[0]}%' ORDER BY achternaam";
?>
Ik krijg wel nog een notice als er maar 1 woord ingegeven:
Notice: Undefined offset: 1 in /opt/www/deconincks/web/mxp.deconinck-racing.com/pages/zoek.php on line 35
Hoe kan je deze verbergen?
Alvast bedankt voor de query op te bouwen!
Edit:
opgelost dmv if
$z = explode(' ', $_POST['zoekterm']);
if (sizeof($z) > 1)
{
$sql = "SELECT * FROM mxp_piloten WHERE achternaam LIKE '%{$z[1]}%' AND voornaam LIKE '%{$z[0]}%' ORDER BY achternaam";
}
else
$sql = "SELECT * FROM mxp_piloten WHERE achternaam LIKE '%$HTTP_POST_VARS[zoekterm]%' or voornaam LIKE '%$HTTP_POST_VARS[zoekterm]%' ORDER BY achternaam";
opgelost dmv if
$z = explode(' ', $_POST['zoekterm']);
if (sizeof($z) > 1)
{
$sql = "SELECT * FROM mxp_piloten WHERE achternaam LIKE '%{$z[1]}%' AND voornaam LIKE '%{$z[0]}%' ORDER BY achternaam";
}
else
$sql = "SELECT * FROM mxp_piloten WHERE achternaam LIKE '%$HTTP_POST_VARS[zoekterm]%' or voornaam LIKE '%$HTTP_POST_VARS[zoekterm]%' ORDER BY achternaam";
Gewijzigd op 30/03/2006 21:49:00 door Shane Deconinck
Kijken met count of de array $z twee elementen bevat (tip: count($z) == 2).