06. oktober 2004 - 09:32Der er
12 kommentarer og 2 løsninger
Baggrundfarve på den tekst der er søgt på
Jeg bruger nedenstående script til at søge i en Access database. Jeg har et par stedet set at man kan gøre sådan at det ord der er søgt på har en baggrundsfarve, eller er en anden farve, så det er nemt at genkende, når resultatet på søgningen listes. Er det muligt at tilføje på dette script??
Script: <% ' Henter værdien fra soeg.htm strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("search_form_user.asp") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Opbygger en dynamisk SQL streng strSQL = "SELECT ID, module, tc, subject, description, initials, catagory FROM tricks WHERE" strSQL = strSQL & " (module LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (tc LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (subject LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (description LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (initials LIKE '%" & strKeyword & "%')"
' åbner DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "database"
' Skaber DSNLess forbindelse til DBen DBQ="&Server.MapPath("search.mdb")
' Skaber et recordset udfra SQL strengen Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then ' Hvis der er fundet poster på søgningen Response.Write "<p><b>Search Result</b></p>" Response.Write "<table border=1>" Response.Write "<tr><td><b>Module</b></td><td><b>Transaction Code</b></td><td><b>Subject</b></td><td><b>Description</b></td><td><b>Initials</b></td></tr>" Do While Not rs.EOF Response.Write "<tr><td>" & rs("module") & "</td>" Response.Write "<td>" & rs("tc") & "</td>" Response.Write "<td>" & rs("subject") & "</td>" Response.Write "<td>" & rs("description") & "</td>" Response.Write "<td>" & rs("initials") & "</td></tr>" rs.MoveNext Loop Response.Write "</table>" Else ' Hvis der ikke er fundet poster på søgningen Response.Write "<p>Der er ikke fundet noget på denne søgning</p>" End If
' Rydder op efter os myConn.Close Set myConn = Nothing %>
Du kan gøre det for hver linje. Hvis det er det samme du vil gøre flere gange kan du jo lave en lille funktion som indeholder koden så du kun skal rette teksten et sted:
function highlight(strtxt,ord) highlight=place(strtxt,ord,"<font color=""red""><i>" & ord & "</i></font>") end function
Begge løsninger virker fint, men jeg vælger nok at lave en function (kode nemmere at overskue), så pointfordelingen er lagt lidt "skævt". Håber det er ok Tak for hjælpen begge :) /Kim
Takker - Virker fint. Alt ændres dog til det man har indtastet. Dvs. Hvis man søger på INFORM, så fanges alt, men f.eks. inform ændres til INFORM. /Kim
det kommer an på hvor du har indsat din LCase gør det ikke? Hvis du nøjes med at sætte det ind der hvor jeg gjorde det burde den ikke erstatte 'ord' med det store men hvis du gør det inden du kalder funktionen så har du "balladen" - eller hur?
Lad være med at bruge lcase. Den ødelægger hele strengen.
den lave alle store bogstaver om til små. det er træls at se på. specielt når man læser noget tekst. hvis man for forkortelser er det ofte med stort som eof og bof!
Fortæl derimod replace den skal ignore case: highlight=replace(strtxt,ord,"<font color=""red""><i>" & ord & "</i></font>",1,-1,1)
men problmeet med replace er den søger efter en streng og udskrifter den med en anden streng. Hvis du har skrever InFoRm som søgeord vil det komme ind de steder hvor "inform" findes i teksten, vil du beholde teksten med den case den har i forvejen kan du bruge regular expression til det. Så funktion bliver i stil med:
Function highlight(strInput,findStr) Set objReg = New RegExp objReg.Global = true objReg.IgnoreCase = True objReg.Pattern = "("&findStr&")" highlight = objReg.Replace(strInput, "<font color=""red"">$1</font>") Set objReg = Nothing End Function
Alternativ skal man med streng fønktioner søge efter søgeordet klikke det ud insætte det ord man fandt med <font> tags omkring og klik det ind i strengen igen.
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.