07. september 2003 - 21:05Der 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.
<% 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) %>
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.
<% 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) %>
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
Synes godt om
Ny brugerNybegynder
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.