webForumDet fria alternativet

söka flera ord...

ASP

4 svar · 270 visningar · startad av i-or

Medlem sedan nov. 2001294 inlägg
Frågan#1

Jag har en enkel sökfunktion i mitt forum och använder detta i SQL:

WHERE Name LIKE '%" & Request.Form("searchwords") & "%'

Problemet är om man har skrivit in flera ord i formuläret, får man inget resultat även om alla orden finns korrekt, direkt efter varandra.

Hur gör jag för att kunna söka även med fler än ett ord?

Tack på förhand

Medlem sedan mars 2001243 inlägg
#2

Om jag inte minns fel så var det precis detta som diskuterades här:

http://cgi.webforum.nu/wf/Forum11/HTML/002574.html

------------------
"Ni tre går och bildar en kvadrat" (Rolf Zetterlund under ett träningspass)

Medlem sedan nov. 2001294 inlägg
#3

Du mindes nog fel eller var jag otydlig. Inget napp på den tråden alltså.

Jag vill alltså att man ska kunna söka på "Per Andersson", men som det är nu får man bara resultat om man söker på antingen "Per" eller "Andersson", även om det finns en "Per Andersson" i databasen.

Medlem sedan juni 20019 519 inlägg
#4
<%
bla = request.form("SOK_ORD")

set conn = server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.MapPath("databasen.mdb")

sql = "select * from Tabell where Rubrik like '%" & bla & "%'"

set recset = conn.Execute(sql)
%>
Sök Resultat av "<%=request.form("bla")%>":<br>
<%
if recset.eof then
response.write "Det fanns inget som uppfyllde sökvillkoret"

else

Do Until recset.eof
response.write "<a href=spel.asp?ID=" & recset("id") & ">" & recset("Rubrik") & "</a><br>"

recset.MoveNext
loop
end if
%>

med denna kod jag använder kan man tex söka på:
Per And
Per
Per Andresson
Andersson

Men inte Perandersson

------------------
//voigtan
:: voigtan.org

"de går inte att lära en gammal norrläning byta namn på irc" - gammalt kinesiskt uttryck

[Redigerat av voigtann1 den 25 nov 2001]

Medlem sedan dec. 200012 464 inlägg
#5

sql = "select * from t where 1 = 1 "
searchWords = split(request.form("searchWords")," ")

for i = 0 to ubound(searchWords)
sql = sql & " or name like '%" & searchWords(i) & "%'" 
next

Nu får du alla poster där något av sökorden finns med. Om du byter mot and så får du dom poster där alla orden finns med.

------------------
essentitia preter non sans multiplicandum

272 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)