Avatar billede hundevennen Nybegynder
26. marts 2008 - 13:38 Der 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
Avatar billede fennec Nybegynder
26. marts 2008 - 13:42 #1
Du skal bare udskifte searchString med strkeyword:

response.write replace(rs("resultat"), strkeyword, "<span style='background-color=#FFFF00'>"& strkeyword &"</span>")

Eller bruge funktionen:
resonse.write Highlight(strkeyword, rs("resultat"))
Avatar billede hundevennen Nybegynder
26. marts 2008 - 13:59 #2
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:

response.write "<td>" & DBSet("tekst") &  "</td>  "
Avatar billede fennec Nybegynder
26. marts 2008 - 14:31 #3
Highlight sætter en CSS class på teksten. Så du skal have det i dit CSS:
.Highlight{background-color=#FFFF00;}
Avatar billede hundevennen Nybegynder
26. marts 2008 - 14:46 #4
jeg har lavet class en
med denne sætning sker der ikke noget??

response.write "<td>" & highlight(strkeyword, DBSet("tekst")) &  "</td>  "
Avatar billede fennec Nybegynder
26. marts 2008 - 15:48 #5
Hvad står der i strkeyword og DBSet("tekst")?
Avatar billede hundevennen Nybegynder
26. marts 2008 - 21:47 #6
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
Avatar billede fennec Nybegynder
27. marts 2008 - 08:30 #7
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.
Avatar billede hundevennen Nybegynder
27. marts 2008 - 15:04 #8
desværre er det fra et intranet - feltet i sqldatabasen jeg vil spørge ind i hedder melding
Avatar billede hundevennen Nybegynder
27. marts 2008 - 15:06 #9
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 :-)
Avatar billede hundevennen Nybegynder
27. marts 2008 - 15:07 #10
Hmm meldefelter - der er jo kun et felt i databasen der hedder melding
Avatar billede fennec Nybegynder
27. marts 2008 - 15:16 #11
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.
Avatar billede hundevennen Nybegynder
27. marts 2008 - 15:32 #12
lige præcis og så skal experten ha en baggrundsfarve da det er søgeordet
Avatar billede fennec Nybegynder
27. marts 2008 - 15:53 #13
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."

Response.write Highlight(strkeyword, Melding) &"<br><br>"
response.write replace(Melding, strkeyword, "<span style='background-color:#FFFF00'>"& strkeyword &"</span>") &"<br><br>"

%>

</body>
</html>
Avatar billede hundevennen Nybegynder
28. marts 2008 - 09:37 #14
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"

OpenConn
getData SqlStr
'response.write Sqlstr
'response.end

' 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
   
    Response.Write "<tr>"
    response.write "<tr><td width=90 valign='top'><strong>" & DBSet("datof") &"&nbsp;&nbsp;&nbsp;</strong></td><td width=90 ><strong>&nbsp;" & DBSet("tid") &"</strong></td><td ><strong>&nbsp;" & DBSet("meldingFra") &"</strong></td></tr>"
    'response.write "<td width=90>" & DBSet("datof") & "</td>"
    'Response.Write "<td>" & DBSet("datof") & "</td>"
    'Response.Write "<td>" & DBSet("besaetning") & "</td>"
    'Response.Write "<td>" & DBSet("meldingFra") & "</td>"
    'Response.Write "<td>" & DBSet("sted") & "</td>"
    'Response.Write "<td>" & DBSet("implicerede") & "</td>"
    Response.Write "<td colspan=3><strong>" & DBSet("overskrift") & "</strong></td>"
    response.write "<tr><td colspan=3 >" & highlight(strkeyword, melding) & "</td></tr><tr><td colspan=3  bgcolor='#808080' height=7></td></tr>"
    count = count + 1
   
    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


' Rydder op efter os
CloseConn

    Response.Write "<table border=0 cellspacing=0 cellpadding=0 width=200 class=count>"
    response.write "<tr><td>"
    response.write "Der blev fundet <b> " & count & "</b> resultater"
    response.write "</td></tr>"
    response.write "</table>"
%>

<table width="150" border="0" cellspacing="1" class=retur>
  <tr>
    <td><a href="soeg.asp">Retur til søg</a></td>
  </tr>
</table>

</body></html>
Avatar billede fennec Nybegynder
28. marts 2008 - 09:45 #15
response.write "<tr><td colspan=3 >" & highlight(strkeyword, DBSet("melding")) & "</td></tr><tr><td colspan=3  bgcolor='#808080' height=7></td></tr>"
Avatar billede fennec Nybegynder
28. marts 2008 - 09:47 #16
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"
Avatar billede hundevennen Nybegynder
28. marts 2008 - 14:56 #17
Fennec - så kører det - mange tak igen igen
Avatar billede hundevennen Nybegynder
28. marts 2008 - 18:13 #18
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?
Avatar billede fennec Nybegynder
31. marts 2008 - 10:38 #19
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
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