23. maj 2007 - 08:05Der 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 & "%')"
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 * :)
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
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...
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.