Avatar billede micplus Nybegynder
23. maj 2007 - 08:05 Der er 3 kommentarer og
2 løsninger

Søges : Søgescript

Hej,

Jeg bruger følgende kode til at søge min database. Problemer er bare, at man ikke kan søge på flere ord - f.eks "is*bil" (så man f.eks fik resultatet "ismandsbil" med)

Kan det nemt redigeres - eller kan i lede mig mod et andet script?

<%
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    Response.Clear
    Response.Redirect("search.htm")
Else
   
    strKeyword = Replace(strKeyword,"'","''")
End If

strSQL = "SELECT ID, code1, Supplier, VendorsCode, Description FROM list1 WHERE"
strSQL = strSQL & " (code1 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Supplier LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Vendorscode LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Description LIKE '%" & strKeyword & "%')"


strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../database/codecs.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then%>
   
    Resultater her
   
    <% Do While Not rs.EOF%>
       
        <%
        rs.MoveNext
    Loop
   
Else
   
    Response.Write "<p>Der er ikke fundet noget på denne søgning</p>"
End If


myConn.Close
Set myConn = Nothing
%>
Avatar billede melieha Nybegynder
23. maj 2007 - 08:31 #1
Uden at være helt sikker, men hvis du søger efter is%bil, så skulle du gerne kunne få resultatet ismandsbil, så er det jo bare om at lave en replace på eksempelvis et mellemrum eller * :)

Eksempelvis:
    strKeyword = Replace(strKeyword,"'","''")
    strKeyword = Replace(strKeyword,"*","%")
Avatar billede 0xffff Nybegynder
23. maj 2007 - 08:46 #2
Jeg ville bruge en anden tilgang til problemet. Som det lyder på mig, så vil du gerne have en liste af keywords du kan søge på. F.eks is bil mand

der vil du kun have resultater tilbage som indeholder alle 3 inddelinger.

Derfor ville jeg gøre det ved at splitte ordene op i en array og søge på hvert enkelt ord. Du skal være opmærksom på dine and / or relationer dog. Dem skriver jeg lige forkortet her.

(CODE1 LIKE %ord1% AND CODE1 LIKE %ord2% AND CODE3 LIKE %ord3%)
OR (SUPPLIER LIKE %ord1% AND SUPPLIER LIKE %ord2% ....)
osv

strSQL = "SELECT ID, code1, Supplier, VendorsCode, Description FROM list1 WHERE"
strSQL = strSQL & " (code1 LIKE '%" & strKeyword1 & "%')"
strSQL = strSQL & " AND (Supplier LIKE '%" & strKeyword2 & "%')"
strSQL = strSQL & " AND (Supplier LIKE '%" & strKeyword3 & "%')"
osv
Avatar billede micplus Nybegynder
23. maj 2007 - 09:19 #3
ja, det var jo 2 måder at angribe det på. pt bruger jeg Melieha's løsning (den var jo lige ud af landevejen), men vil på sigt se om det ikke er bedre med den sidste løsning...

Smider i begge er svar, så kan i jo dele..

..og takker!
Avatar billede 0xffff Nybegynder
23. maj 2007 - 09:21 #4
velbekomme da
Avatar billede melieha Nybegynder
23. maj 2007 - 09:32 #5
Og der kom et svar :)
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