Avatar billede Slettet bruger
04. oktober 2002 - 14:36 Der er 3 kommentarer og
1 løsning

Markere søgeresultat

Hej...

Jeg er ved at lave en søgefunktion - den virker fint nok - men nu har jeg besluttet at det søgte skal markeres: hvis man eksempelvis søger på "Peter" så skal "Peter" stå med fed eller anden farve i "Peter Petersen".

Jeg er ude i noget med:

if InStr(lcase(navn),(lcase(Request.Form("searchfield")))) then ...

Men den del af 'navn' man søgte på skal altså stå med fed el.lign.

Nogen ideer...?
Avatar billede eagleeye Praktikant
04. oktober 2002 - 15:07 #1
Har du prøvet med replace i stil med dette:

str = "lang streng som skal søges i"
find_dette = "peter"

str = replace(str, find_dette, "<b>" & find_dette & "</b>")

Response.write str
Avatar billede coltau Juniormester
04. oktober 2002 - 15:08 #2
Du skal bruge funktionen Replace

find = Request.Form("searchfield")
s = RS("Felt til udskrivning")
s = Replace(s, find, "<b>" & find & "</b>") ' Ændre søgetekst til fed
Avatar billede Slettet bruger
05. oktober 2002 - 08:29 #3
Hej - det virker nu med nedenstående kode:

If Trim(Request.Form("searchfield")) <> "" Then
if navn <> "" then
find = (lcase(Request.Form("searchfield")))
s = (lcase(RS("Navn")))
s = Replace(s, find, "<font color='#CC0000'>" & find & "</font>")
response.write "Navn: <b> " & s & "</b><br>"
end if
else
if navn <> "" then
response.write "Navn: <b>" & navn & "</b><br>"
end if
end if

Problemet er (som I sikkert kan se, at den skriver "navn" med små bogstaver. Er der en nem måde at komme omkring det på? Jeg har gjort det på flg. lidt rodet måde:

If Trim(Request.Form("searchfield")) <> "" Then
if navn <> "" then

'Først gøres søgestrengen lowercase
find = (lcase(Request.Form("searchfield")))
           
'Derefter løbes hvert ord i søgestrengen igennem og første bogstav laves stort
sOpdel = split(find) : find=""       
for i=0 to UBound(sOpdel)
sChar = Ucase(left(sOpdel(i),1))
sOpdel(i) = replace(sOpdel(i),sChar,sChar,1,1,1)
find = find & sOpdel(i) & " "
next
           
find = Trim(find) : s = RS("Navn")           
s = Replace(s, find, "<font color='#CC0000'>" & find & "</font>",1,1,1)
response.write "Navn: <b> " & s & "</b><br>"
end if
else
if navn <> "" then
response.write "Navn: <b>" & navn & "</b><br>"
end if
end if

Det virker - også hvis man søger på "Peter Amager" og der i databasen står "Peter Amager Petersen" - så bliver både "Peter" og "Amager" markeret med rødt. Men hvis man søger på "Peter Petersen" finder den det ikke. Kan man klare den?

Tak for hjælpen
Avatar billede eagleeye Praktikant
31. oktober 2002 - 10:27 #4
Nej ikke umidelbart så skal du lave det som to ord man søger på og markere. Både Peter og Petersen.
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