Paging og mellemrum i søgestreng
Nedenstående kode for fritekst-søgningen fungerer udmærket ved søgning på enkelte ord, ex. "hvide". Fungerer også ved søgning på flere ord, ex "hvide høns".Problemet opstår, når der for "hvide høns" er flere hit og der bladres til ex. hit nr. 2. Så fjernes "høns" i søgestrengen og der udføres en søgning på "hvide", hvilket jo ofte giver betydelig flere hits end en søgning på "hvide høns". Hvor der for "hvide høns" oprindelig kun var fire hits opstår der ved bladring til hits nr. 2 nu eksempelvis ti hits (heriblandt de fire hits for "hvide høns").
<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
soeg = Request.QueryString("soegtekst")
soegestreng="'%"& soeg &"%'"
Set rs = Server.CreateObject("ADODB.Recordset")
strSQL = " SELECT * FROM database WHERE emne LIKE "& soegestreng &" ORDER BY moededato ASC"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../db/emner.mdb")
rs.Open strSQL, strDSN, 1
%>
</head><body>
<%
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 1
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount
Response.Write "<p><b>Søgeresultat nr. " & intPage & " af " & intPageCount & "</b></p>"
Response.Write "Søgetekst: ""& soeg &""<BR><BR>"
Do While Not rs.EOF And intRecCount > 0
Response.Write "<B>Mødedag</B><BR>"& rs("moededato") &"<br>"
Response.Write "<B>Dagsorden</B><BR>Punkt "& rs("emnenr") &"<br>"
Response.Write "<B>Emne</B><br>"
Response.Write rs("emne") & "<br>"
Response.Write "<B>Referat</B><br>"
Response.Write rs("referat") & "<br>"
intRecCount = intRecCount - 1
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
Response.Write "<BR><BR><BR><BR><BR>"
%>
<div id="watermarklogo" style="position:absolute;
width: 550px;
height: 100px;
border-top-style: solid;
border-top-width: 2px;
border-top-color: #000000;
margin-left: 5px;
padding-left: 10px;
background-color: #E2E8EC;"></div>
<script>
var Hoffset=0
var Voffset=110
var ie=document.all&&navigator.userAgent.indexOf("Opera")==-1
var menu_obj=ie? document.all.watermarklogo : document.getElementById? document.getElementById("watermarklogo") : document.watermarklogo
function insertmenu() {
if (ie||document.getElementById)
menu_obj.innerHTML='<%
If intPageCount <> 0 Then
Response.Write "<p>Se søgeresultat nr. "
For intNum = 1 To intPageCount
Response.Write "<A HREF=erfa_resultat_lokal.asp?soegtekst="&soeg&"&page=" & intNum & ">" & intNum & "</a> "
Next
Response.Write "<CENTER>"
If Clng(intPage) > 1 Then
Response.Write "<a href=erfa_resultat_lokal.asp?soegtekst="& soeg &"&page=" & intPage - 1 & "><<</a>"
Else
Response.Write "<<"
End If
Response.Write " "
If Clng(intPage) < Clng(intPageCount) Then
Response.Write "<a href=erfa_resultat_lokal.asp?soegtekst="& soeg &"&page=" & intPage + 1 & ">>></a> "
Else
Response.Write ">>"
End If
Response.Write "</CENTER>"
Response.Write "<CENTER><BR><B><A HREF=http://127.0.0.1/index.htm>Retur</B></CENTER>"
Else If intPageCount = 0 Then
Response.Write "<CENTER><B>Intet resultat for søgning på ""& soeg &"".</B><BR></CENTER>"
Response.Write "<CENTER><B><A HREF=http://127.0.0.1/index.htm>Retur</B><BR><BR><BR><BR></CENTER>"
End If
End If
%>'
}
function positionmenu() {
var dsocleft=ie? document.body.scrollLeft : pageXOffset
var dsoctop=ie? document.body.scrollTop : pageYOffset
var window_height=ie? document.body.clientHeight : window.innerHeight
if (ie||document.getElementById){
menu_obj.style.left=parseInt(dsocleft)+5+Hoffset
menu_obj.style.top=parseInt(dsoctop)+parseInt(window_height)-Voffset
}
}
function Vismenu () {
watermarkinterval=setInterval("positionmenu()",30)
insertmenu()
}
if (ie||document.getElementById)
window.onload=Vismenu
window.resizeTo(600,700)
window.moveTo(w,h)
</script>