Bekijk Volledige Versie : [php] zoeken in database
hoi,
Ik wil bezoekers dmv een formulier gegevens laten zoeken in een
database.
nu heb ik iet als
$query = "SELECT * FROM tabel WHERE col1 LIKE '%$s%' OR col2 LIKE
'%$s%' OR col3 LIKE '%$s%' ";
($s is de zoekstring)
Is er een betere manier om in meerdere kolommen tegelijk te zoeken?
(als je bv in 10 kolommen tegelijk wil zoeken)
Zoals ik het nu heb kan de gebruiker maar 1 zoekterm opgeven, hoe kan
ik de meerdere zoektermen verwerken in dergelijk script?
(database is mysql)
iemand een idee?
gs
Rene Pijlman
24/10/04, 16:35
GeertS:
>nu heb ik iet als
>$query = "SELECT * FROM tabel WHERE col1 LIKE '%$s%' OR col2 LIKE
>'%$s%' OR col3 LIKE '%$s%' ";
>
>($s is de zoekstring)
>
>Is er een betere manier om in meerdere kolommen tegelijk te zoeken?
Ja, gebruik geen LIKE '%$s%', want dat is bere-inefficiënt.
>Zoals ik het nu heb kan de gebruiker maar 1 zoekterm opgeven, hoe kan
>ik de meerdere zoektermen verwerken in dergelijk script?
Gewoon, die andere zoektermen in de querystring zetten. Wat is het
probleem?
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
On Sun, 24 Oct 2004 16:29:03 +0200, Rene Pijlman
<reply.in.the.newsgroup@my.address.is.invalid> wrote:
>GeertS:
>>nu heb ik iet als
>>$query = "SELECT * FROM tabel WHERE col1 LIKE '%$s%' OR col2 LIKE
>>'%$s%' OR col3 LIKE '%$s%' ";
>>
>>($s is de zoekstring)
>>
>>Is er een betere manier om in meerdere kolommen tegelijk te zoeken?
>
>Ja, gebruik geen LIKE '%$s%', want dat is bere-inefficiënt.
zonder de %-tekens of iets totaal anders gebruiken dan?
>
>>Zoals ik het nu heb kan de gebruiker maar 1 zoekterm opgeven, hoe kan
>>ik de meerdere zoektermen verwerken in dergelijk script?
>
>Gewoon, die andere zoektermen in de querystring zetten. Wat is het
>probleem?
als iemand bv "php mysql" ingeeft zou er nu gezocht worden op de
string "php mysql" terwijl het de bedoeling is dat naar naar "php" en
"mysql" gezocht wordt als afzonderlijke strings, en niet als een
geheel.
Rene Pijlman
24/10/04, 18:45
GeertS:
>Rene Pijlman
>>Ja, gebruik geen LIKE '%$s%', want dat is bere-inefficiënt.
>zonder de %-tekens of iets totaal anders gebruiken dan?
Relationele databases werken met indexen die te vergelijken zijn met de
structuur van het telefoonboek. Pak maar eens een telefoonboek en zoek
alle mensen met een achternaam like '%se%'.
Like 'GeertS%' doen de meeste databases efficiënt, maar een % vroeg in de
string - zoals in LIKE '%eerts' niet.
Wat je misschien wilt is full text search, met een speciale index die elk
woord van de kolom indexeert. Geen idee of MySQL dat aan boord heeft.
>>>Zoals ik het nu heb kan de gebruiker maar 1 zoekterm opgeven, hoe kan
>>>ik de meerdere zoektermen verwerken in dergelijk script?
>>
>>Gewoon, die andere zoektermen in de querystring zetten. Wat is het
>>probleem?
>als iemand bv "php mysql" ingeeft zou er nu gezocht worden op de
>string "php mysql" terwijl het de bedoeling is dat naar naar "php" en
>"mysql" gezocht wordt als afzonderlijke strings, en niet als een
>geheel.
Als wie wat waarin geeft? En waarom zet je niet gewoon verschillende
zoektermen in die querystring, in plaats van drie keer dezelfde?
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
John Bokma
24/10/04, 22:25
Rene Pijlman wrote:
> Wat je misschien wilt is full text search, met een speciale index die elk
> woord van de kolom indexeert. Geen idee of MySQL dat aan boord heeft.
Recent in een soortgelijke discussie kwam dit naar voren, ja dus.
<http://www.google.com/search?q=full+text+search+site%3Amysql.com>
--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
On 24 Oct 2004 20:18:28 GMT, John Bokma <postmaster@castleamber.com>
wrote:
>Rene Pijlman wrote:
>
>> Wat je misschien wilt is full text search, met een speciale index die elk
>> woord van de kolom indexeert. Geen idee of MySQL dat aan boord heeft.
>
>Recent in een soortgelijke discussie kwam dit naar voren, ja dus.
><http://www.google.com/search?q=full+text+search+site%3Amysql.com>
Die full text lijkt me wel iets handig, heb al zitten proberen maar
lukt niet,
krijg volgende fouten :
Can't find FULLTEXT index matching the column list
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL
result resource in D:\www\[knip]\file.php on line 44
of fulltext het probleem van meerdere zoekworden gaat kunnen oplossen
weet ik niet.