webForumDet fria alternativet

Ang sökordning i databas kolumn.

ASP

14 svar · 286 visningar · startad av jonas76

Medlem sedan mars 200278 inlägg
Frågan#1

Hej

jag har en sidan som jag postar "sökord" och en "url" til varsin kolumn idatabasen sedan har jag en sida där jag söker i " sökkolumnen" för att sedan få fram dom url som stämmer med sökorden ,det funkar bra men jag har märkt att det funkar bara att söka i den ordningen som sökorden ligger i databasen finns det tex : "cykel röd 2växlad herr" så kan jag inte söka på cykel och herr utan då måste jag ha med alla orden som även ligger emellan dom två , går det att göra nått åt detta?

Vore jätte tacksam för hjälp:)

Medlem sedan dec. 200012 464 inlägg
#2

Det som finns är like

query = "select * from links where sokord like '%cykel%herr%'"

Hittar alla poster där cykel följt av herr finns med. Dvs, ordningen mellan orden spelar roll.

Sen så kan du ju ha varianter på det

--
-- alla poster med antingen herr eller cykel
--
query = "select * from links where sokord like '%cykel%' or sokord like '%herr%'"

--
--alla poster med herr och cykel, oberoende av ordning
--
query = "select * from links where sokord like '%cykel%' and  sokord like '%herr%'"
Medlem sedan mars 200278 inlägg
#3

Hej Lars Tack för att du tar dig tid :)
detta är är koden jag använder nu , kan du skriva om den på det sättet du har tänkt.

SQL = "Select * from lank Where Kolumnen Like '%" & Request.Form("sokord") & "%' "
SET RS = Con.Execute(SQL)

"kolumnen" är namnet på den kolumn som sökorden finns i.
bara så inte namnet förvirrar menar jag ;)

Medlem sedan mars 200278 inlägg
#4

mer koa ifall att :)

<form action="sok.asp" method="post">
<font face="Verdana" size="1">
<input type="text" name="sokord" size="25">
sökord<br>
<input type="submit" value="sök" name="submit">
</font>
</form>
<p><font face="Verdana" size="1"><%
If Request.Form("sokord") <> "" Then
Response.Write "Din sökning på <b>" & Request.Form("sokord") & "</b> gav följande träffar.<br><br>" & vbCrLf

SQL = "Select \* from lank Where Kolumnen Like '%" & Request.Form("sokord") & "%' "
SET RS = Con.Execute(SQL)
Medlem sedan dec. 200012 464 inlägg
#5
dim words,query,i,rs
words = split(request.form("sokord")," ")

query = "select * from lank where 1 = 1 "
for i = 0 to ubound(words)
  query = query & "or kolumnen like '%" & replace(words(i),"'","''") & "%'"
next
SET RS = Con.Execute(query)
Medlem sedan mars 200278 inlägg
#6

Jag är jätte tacksam för att du hjälper mig :)

men hur blir nu då response.write satsen.

det som du skrev där var nytt för mig så jag tappa tråden lite ;)

Medlem sedan dec. 200012 464 inlägg
#7

Det blir ingen skillnad

Det är bara denna rad

SQL = "Select * from lank Where Kolumnen Like '%" & Request.Form("sokord") & "%' "

som du byter mot den kod jag skrev

Medlem sedan mars 200278 inlägg
#8

Ok , då är jag med , men jag fick ett felmedelande :

Name redefined

/ccr/tim/sok.asp, line 34

dim words,query,i,rs
------------------^

Medlem sedan mars 200278 inlägg
#9

hej

tar jag bort rs ifrån:
dim words,query,i,rs
------------------^
så funkar sidan men då får jag up alla "url" som ligger i databsen oavsett vad jag söker på.

Medlem sedan dec. 200012 464 inlägg
#10

Det är mitt fel som tänker för lite.

dim words,query,i
words = split(request.form("sokord")," ")

query = "select * from lank where "
for i = 0 to ubound(words)
  query = query & "kolumnen like '%" & replace(words(i),"'","''") & "%' or"
next
query = left(query,len(query-3))
SET RS = Con.Execute(query)

I och med att villkoret 1 = 1 var med så kommer man att alltid hitta alla poster.

Medlem sedan mars 200278 inlägg
#11

Microsoft VBScript runtime error '800a000d'

Type mismatch: '[string: "select * from lank w"]'

/ccr/tim/sok.asp, line 41

line 41 =query = left(query,len(query-3))

Medlem sedan dec. 200012 464 inlägg
#12
dim words,query,i
if  len(request.form("sokord")) > 0 then
words = split(request.form("sokord")," ")

query = "select * from lank where "
for i = 0 to ubound(words)
  query = query & "kolumnen like '%" & replace(words(i),"'","''") & "%' or"
next
query = left(query,len(query)-3)
else
query = "select * from lank"
end if
SET RS = Con.Execute(query)

Jag hade satt parenteserna fel. Jag lade till en kontroll så att det fungerar även om man inte anger något sökord.

Medlem sedan mars 200278 inlägg
#13

Om jag söker med bara ett ord funkar det men om jag lägger in två sökord så får jag följande fel :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntaxfel (operator saknas) i frågeuttrycket 'kolumnen like '%hp%' orkolumnen like '%rep%''.

/ccr/tim/sok.asp, line 46

line 46 =SET RS = Con.Execute(query)

Medlem sedan dec. 200012 464 inlägg
#14

Det var mycket fel i dag

for i = 0 to ubound(words)
  query = query & "kolumnen like '%" & replace(words(i),"'","''") & "%' or "
next

Det saknas ett blanksteg mellan or och kolumnnamnet.

Medlem sedan mars 200278 inlägg
#15

Jag bugar och tackar så mycket för din hjälp , nu funkar det perfekt :)

jag är jätte tacksam , tack så mycket igen :)

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)