"Carsten Christensen" <carsten-fjern_dette-@e-ingenior.dk> skrev i en
meddelelse news:43cd91d8$0$15783$14726298@news.sunsite.dk...
> Hej, jeg har søgt i indlæggene efter emnet, men fandt ikke helt
> det jeg søgte.
>
> Jeg skal have lavet en søgefunktion på min hjemmeside, men i
> stedet for at lave søgeord, vil jeg gerne søge i selve teksten på
> siderne. Hvordan gør jeg lige det nemmest?
Se også
http://www.shortlink.dk/85841ac8
<%Dim strSoegeOrd, arrSoegeOrd, strSQL, iCount, strTempSQL
strSoegeOrd = Request.form("strFormSeek")
'<!-- henter dine søgeord i en fra et formfelt -->
strSoegeOrd = Replace(strSoegeOrd, "+", " ")
'<!-- erstatter + med mellemrum hvis der er
'søgt på flere ord adskilt af +
'indsæt selv flere efter behov -->
arrSoegeOrd = Split(strSoegeOrd," ")
' <!-- splitter ordene op ved mellemrum,
' så der søges på hvert enkelt -->
strTempSQL = "Select * FROM tblArticle WHERE ((ArticleData LIKE '%" &
arrSoegeOrd(0) &"%' OR ArticleHeader LIKE '%" & arrSoegeOrd(0) &"%' OR
ArticleSeekword LIKE '%" & arrSoegeOrd(0) &"%')"
'<!-- søger i tre felter i databasen, udbyg efter behov
'skal stå på een linie -->
For iCount = 1 To UBound(arrSoegeOrd)
strTempSQL = strTempSQL & " OR (ArticleData LIKE '%" & arrSoegeOrd(iCount)
&"%' OR ArticleHeader LIKE '%" & arrSoegeOrd(iCount) &"%' OR ArticleSeekword
LIKE '%" & arrSoegeOrd(0) &"%')"
Next
strTempSQL = strTempSQL & ") ORDER BY ArticleHeader"
'<!-- Looper igennem alle søgeord
SQLString = strTempSQL
%>
Hvis du vil have farvemarkeret søgeordene i teksten der fremkommer kan et
gøres således,
| indsættes mellem ordene til farve markerings funktionen
<%
Dim strSoegeOrd, arrSoegeOrd, strSQL, iCount, strTempSQL
strSoegeOrd = Request.form("strFormSeek")
strSoegeOrd = Replace(strSoegeOrd, "+", " ")
strSoegeOrd = Replace(strSoegeOrd, """", "")
arrSoegeOrd = Split(strSoegeOrd," ")
strSQLSeekWord = SQLString()
SET oRsSeekWord = OpenRecordset(strSQLSeekWord)
'åben recordset på din egen måde
Dim varSeekwords, intLength
For iCount = 0 To UBound(arrSoegeOrd)
varSeekwords = varSeekwords &"|"& arrSoegeOrd(iCount)
Next
IF Right(varSeekwords, 1) = "|" then
intLength = cint(Len(varSeekwords)-1)
varSeekwords = Left(varSeekwords, intLength)
end if
'fjerner | hvis den står som nummer 1
%>
<table width="100%">
<% IF oRsSeekWord.EOF or oRsSeekWord.bof then response.write
"<tr><td></td><td> <strong>No</strong> articles
with: <strong>" & strSeekWord &" </strong>was found</td></tr>"
'<--! viser hvis der ikke blev fundet noget
'ellers startes loop, og søgeord sendes med til
'en side der viser søgeordene -->
DO WHILE NOT oRsSeekWord.EOF%>
<tr><td width="10"></td><td><a
href="showseekword.asp?articleid=<%=oRsSeekWord("ArticleID")%>&seekword=<%=varSeekwords%>"><%=oRsSeekWord("ArticleHeader")%></a></td></tr>
<% oRsSeekWord.movenext
loop
set oRsSeekWord = Nothing%>
</table>
<!-- SIDE DER VISER SØGEORDENE (showseekword.asp) -->
<%
'<--! Start med at hente den side der skal vises-->
Dim S, aWords, strSeek, strSeekWord
strSeekWord= request.querystring("seekword")
strSeek = Replace(strSeekWord, """", "|")
strSeek = Replace(strSeek, "+", "|")
strSeek = Replace(strSeek, "|+", "|")
strSeek = Replace(strSeek, "+|", "|")
if Left(strSeek, 1) = "|" then
strSeek = Mid(strSeek, 2)
end if
S = strSeek
aWords = oRs("ArticleData")
Function markWord(S, aWords)
' Extract HTML Tags
Dim re, vstrippedHTML, i, MatchArr, vTemp
Set re = New RegExp
re.Pattern = "<[^<>]*>"
re.IgnoreCase = True
re.Global = True
' Replace HTML tags
Set MatchArr = re.Execute(S)
vStrippedHTML = re.replace(S,"$!$")
' alert(vStrippedHTML);
' Replace search words
Dim re2
set re2 = New RegExp
re2.Pattern = "(" + aWords + ")"
re2.IgnoreCase = True
re2.Global = True
vTemp = re2.replace(vStrippedHTML,"<strong>$1</strong>")
'<!-- her er det bestemt at ordene bliver markeret med fed-->
' Reinsert HTML
For i = 0 To MatchArr.Count -1
vTemp = Replace(vtemp, "$!$", MatchArr(i),1,1)
Next
markWord = vTemp
End function
Dim ArticleReplace
ArticleReplace = markWord(oRsShowPic("ArticleData"), strSeek)
'<!-- Kalder funktionen der farvekoder dinesøgeord i den valgte tekst -->
%>
<%=ArticleReplace%>
<!--udskriver teksten med søgeordene markeret-->
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.