26. marts 2008 - 13:38Der er
18 kommentarer og 1 løsning
baggrundsfarve på fundet søgeord
jeg bruger denne sætning til at søge med:
' Henter værdien fra soeg.asp strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("soeg.asp") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If 'response.write strkeyword 'response.end ' Opbygger en dynamisk SQL streng sqlstr = "SELECT * FROM T_Dok WHERE" sqlstr = Sqlstr & " (melding LIKE '%" & strkeyword & "%') order by datof asc"
jeg har tidligere fået/fundet dette, men kan ikke lige hitte ud af at få det kørt sammen:
response.write replace(rs("resultat"), searchString, "<span style='background-color=#FFFF00'>"& searchString &"</span>") eller denne function:
Function Highlight(vFind, vSearch) Dim RegEx Set RegEx = New RegExp RegEx.Pattern = vFind RegEx.IgnoreCase = True Highlight = RegEx.Replace(vSearch, "<span class=""Highlight"">" & vFind & "</span>") Set RegEx = Nothing End Function
jeg ved ikke hvad highlight gør, men der sker ihverfald ikke noget. Her henter jeg resultatet og din replace kan jeg ikke lige få til at virker ind i denne sætning:
strkeyword er det søgeord der kommer fra siden soeg.asp det kan være alt muligt.f.eks et gadenavn. Tekst er et felt(varchar) i en sqldatabase der indeholder noget tekst, som kunne indeholde f.eks et gadenavn
Har du et link til siden? For jeg kan ikke forstå hvorfor det ikke virker. Eneste jeg har lagt mærke til ar at du søger på "melding" kolonnen men udskriver "resultat" og "tekst" kolonnerne. Går ud fra det bare er fordi det er noget test kode eller fra forskellige dele af dit system.
Melding kan altså indeholde en masse tekst og det er så når jeg hiver en søgning ind i databasen på alle meldefelterne jeg vil fange søgeordet med en baggrundsfarve i visningen af søgeresultatet :-)
Kan du give et eksempel på hvad du søger efter og hvad melding så indeholder? F.eks: søgeord: Experten Melding: Det bedste sted i verden at få hjælp er experten.
Ok, har fundet et par fejl i koden. f.eks = i stedet for : og manglende global. Dette virker:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Untitled</title> <style type="text/css"> .Highlight{background-color:#FFFF00;} </style> </head>
<body>
<% Function Highlight(vFind, vSearch) Dim RegEx Set RegEx = New RegExp RegEx.Pattern = vFind RegEx.IgnoreCase = True RegEx.Global = True Highlight = RegEx.Replace(vSearch, "<span class=""Highlight"">" & vFind &"</span>") Set RegEx = Nothing End Function
strkeyword = "experte" Melding = "Det bedste sted i verden at få hjælp er experten. Alle kommer her. Selv experterne."
Hej Fennec - du får lige det meste af min kode - det virker ikke endnu sådan som jeg har tolket din kode og sat den ind - men her er min kode - stylen til highlight er sat højere på koden, men er ikke med her:
<%
Function Highlight(vFind, vSearch) Dim RegEx Set RegEx = New RegExp RegEx.Pattern = vFind RegEx.IgnoreCase = True RegEx.Global = True Highlight = RegEx.Replace(vSearch, "<span class=""Highlight"">" & vFind &"</span>") Set RegEx = Nothing End Function
' Henter værdien fra soeg.asp strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("soeg.asp") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If 'response.write strkeyword 'response.end ' Opbygger en dynamisk SQL streng sqlstr = "SELECT * FROM T_Dok WHERE" 'sqlstr = sqlstr & " (datof LIKE '%" & strKeyword & "%')" 'StrSql = StrSql & " OR (besaetning LIKE '%" & strKeyword & "%')" 'Sqlstr = Sqlstr & " OR (meldingFra LIKE '%" & strKeyword & "%')" 'StrSql = StrSql & " OR (implicerede LIKE '%" & strKeyword & "%')" 'StrSql = StrSql & " OR (overskrift LIKE '%" & strKeyword & "%')" 'StrSql = StrSql & " OR (melding LIKE '%" & strKeyword & "%')" sqlstr = Sqlstr & " (melding LIKE '%" & strkeyword & "%') order by datof asc"
' Skaber et recordset udfra SQL strengen 'Set DBSet = DBSet.execute(StrSql) If Not (DBSet.BOF Or DBSet.EOF) Then ' Hvis der er fundet poster på søgningen 'Response.Write "<p><b>Søgeresultat</b></p>"
Response.Write "<table border=1 width=650 cellspacing=0 cellpadding=0 class=resultat>" Response.Write "<tr><td><font color='#0000FF'>Dato</font></td><td><font color='#0000FF'>Tidspunkt</font></td><td><font color='#0000FF'>Melding Fra</font></td></tr>" count = 0 Do While Not DBSet.EOF
DBSet.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
ahh, der er også et problem da du replacer ' med 2. Det skal kun gøres i SQL'en ikke i variablen. Slet denne linje: strKeyword = Replace(strKeyword,"'","''")
smid replacen på denne: sqlstr = Sqlstr & " (melding LIKE '%" & replace(strkeyword,"'","''") & "%') order by datof asc"
læg et svar - jeg vil forhøje med 100 hvis du kan klare et spm her. jeg har lagt sikkerhed på filen soeg.asp, så det kun er en Nt gruppe på vores intranet der kan tilgå filen, altså hvis man ikke er medlem af en speciel gruppe under AD får man ikke adgang, men får en "denne side kan ikke vises" - altså standard svaret - kan man ikke lave noget så man bliver smidt over på en pænere side man selv har lavet?
Det kan du sætte op i IIS'en. Der kan man bestemme hvilke sider den skal vise i tilfælde af fejl. Kan ikke huske hvilket fejlnummer "access denied" er (102 måske??), men den ændre du bare til en du selv har lavet.
.o) <-- One Eyed Jack
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.