Avatar billede ng-km Nybegynder
07. september 2003 - 21:05 Der er 3 kommentarer og
1 løsning

Søgning på flere ord

Følgende kode virker fint ved søgning på 1 ord.

<%
searchtext = request.form("searchtext")
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Database\vare.mdb")
SQLStmt = "SELECT * FROM Varetabel WHERE Navn LIKE '%" & searchtext & "%' OR Varebeskrivelse LIKE '%" & searchtext & "%' ORDER BY Varegruppe"
Set RS = Connection.Execute(SQLStmt)
%>

Jeg kunne imidlertid godt tænke mig en lidt bedre søgning, så jeg kan søge på flere ord i min database. Dvs. at jeg måske vil opgive et navn (Shimano) og en type (Baggear), og så bliver der kun vist de resultater der indeholder begge ord. Som det er nu kan jeg kun opgive et ord hvis det skal give mening.

Kan det lade sig gøre, og i så fald hvordan?
Avatar billede socle Nybegynder
07. september 2003 - 21:34 #1
<%
searchtext = request.form("searchtext")
searchtype = request.form("searchtype") 'nyt form element her
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Database\vare.mdb")
SQLStmt = "SELECT * FROM Varetabel WHERE Navn LIKE '%" & searchtext & "%' AND Varebeskrivelse LIKE '%" & searchtype & "%' ORDER BY Varegruppe"
Set RS = Connection.Execute(SQLStmt)
%>
Avatar billede ng-km Nybegynder
07. september 2003 - 23:26 #2
Tak for svaret, men det det var ikke lige den måde jeg havde tænkt mig at lave det. Det var mere i retning af en google/yahoo-lignende søgning, hvor du kan indtaste flere ord i SAMME textfelt, for hvad nu hvis jeg vil søge på tre ord i min database.
Avatar billede socle Nybegynder
07. september 2003 - 23:50 #3
så den her da?

<%
searchtext = split(request.form("searchtext"), " ")
for each item in searchtext
  if trim(item) <> "" then
    sqlstr = sqlstr & "(Navn LIKE '%" & item & "%' OR Varebeskrivelse LIKE '%" & item & "%') OR "
  end if
next
sqlstr = left(sqlstr, len(sqlstr)-len(" OR "))
sqlstr = "SELECT * FROM Varetabel WHERE " & sqlstr & " ORDER BY Varegruppe"

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Database\vare.mdb")
SQLStmt = sqlstr
Set RS = Connection.Execute(SQLStmt)
%>
Avatar billede ng-km Nybegynder
08. september 2003 - 06:18 #4
BINGO - Tak for hjælpen, det er helt perfekt med blot en lille ændring:

sqlstr = sqlstr & "(Navn LIKE '%" & item & "%' OR Varebeskrivelse LIKE '%" & item & "%') AND "
  end if
next
sqlstr = left(sqlstr, len(sqlstr)-len(" AND "))

ng-km
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester