webForumDet fria alternativet

Avancerad sökning

2 svar · 385 visningar · startad av leniz

lenizMedlem sedan aug. 2001676 inlägg
#1

Hej!

Jag sitter och jobbar på en sökfunktion. Det ska vara ett fritext fält där man ska kunna skriva in flera ord. För att det ska bli någon träff måste samtliga ord förekomma i ett eller flera fält.

Jag har kommit så långt att jag separerar orden där det är ett mellanslag. Sedan ser det nu ut så här vid sökning på de tre orden stuga skärgård stockholm:

and ((stugor.namn like '%stuga%' and stugor.namn like '%stockholm%' and stugor.namn like '%skärgård%') or (stugor.vagbeskrivning like '%stuga%' and stugor.vagbeskrivning like '%stockholm%' and stugor.vagbeskrivning like '%skärgård%'))

Det fungerar men inte som jag vill. Som ni ser i koden så får man bara träffar om samtliga tre sökord förekommer i ett och samma fält. Jag vill att det ska bli en träff om t.ex. stuga förekommer i fältet namn men inte i vagbeskrivning samtidigt som orden skärgård och stockholm förekommer i fältet vagbeskrivning men inte i fältet namn. Eller på samma sätt kombinerat på olika sätt, huvudsaken att de tre orden förekommer på något ställe.

Min fråga är nu hur detta kan lösas i min kod. Ska jag kontrollera flera gånger och spara värdena i någon variabel tills alla ord är uppfyllda eller vad?

Tacksam för råd!

Mvh Lena

tydalMedlem sedan juni 20034 013 inlägg
#2

Jag tror du menar så här:

För varje "sökord":

SQL = SQL & "
AND
(
(stugor.namn LIKE '%" & sökord & "%')
OR
(stugor.vagbeskrivning LIKE '%" & sökord & "%')
)"

(Radbrytningarna är bara gjorda för att förtydliga, har för mig att man inte får ha radbrytningar i VBScript.)

grillkillenMedlem sedan sep. 200350 inlägg
#3

Klart man får ha radbrytningar. Men inte utan ett understreck. _

126 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)