Jag har haft en gästbok på en site i snart ett år och påden använder jag PatrikB´s paging script och i söndags gick den in i en oändlig loop, jag vet inte om det var någon annan som var inne i koden eller vad som hände men jag behöver hjälp att lösa detta snabbt ....här kommer den aktuella koden
[red]
<%
'## -- hämta alla poster --
Function getRecords
Dim m_objConn
Dim m_strConnString
Dim m_strSQL
Dim m_objRS
Dim m_arrRecords
m_strConnString = "provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\inetpub\data\gbok.mdb"
'## -- skapa connection object och öppna upp databasen --
Set m_objConn = Server.CreateObject("ADODB.Connection")
m_objConn.Open m_strConnString
'## -- sql-fråga för att hämta alla poster --
'## -- denna ska du ändra så att den stämmer
'## med det som du vill hämta --
m_strSQL = "SELECT f_namn, f_datum, f_mess " & _
"FROM t_gbok " & _
"ORDER BY f_datum DESC"
'## -- recordset för att hämta alla poster --
Set m_objRS = m_objConn.Execute(m_strSQL)
If Not m_objRS.EOF Then
m_arrRecords = m_objRS.GetRows
getRecords = m_arrRecords
End If
'## -- clean up --
m_objRS.Close
Set m_objRS = Nothing
m_objConn.Close
Set m_objConn = Nothing
End Function
'## -- skriver ut sidnavigeringen --
'## -- skriv ut föregående sida --
Sub PrevPage(ByVal WichPage)
Dim strScriptName
strScriptName = Request.ServerVariables("SCRIPT_NAME")
'## -- skriv ut en länk till föregående sida --
If CInt(WichPage) > 1 Then
Response.Write "<A href='" & strScriptName & "?" & _
"page=" & WichPage - 1 & "'>« Föregående</A> "
Else
Response.Write "« Föregående "
End If
End Sub
'## -- skriv ut nästa sida --
Sub NextPage(ByVal HowManyPages, ByVal WichPage)
Dim strScriptName
strScriptName = Request.ServerVariables("SCRIPT_NAME")
'## -- skriv ut en länk till nästa sida --
If CInt(WichPage) < CInt(HowManyPages) Then
Response.Write "<A href='" & strScriptName & "?" & _
"page=" & WichPage + 1 & "'>Nästa »</A>"
Else
Response.Write " Nästa »"
End If
End Sub
'## -- skriv ut sidnummer navigeringen --
Sub PageNumbers(ByVal HowManyPages, WichPage)
Dim strScriptName
Dim I
'## -- kolla om det finns några sidor --
If HowManyPages = 0 Then
Response.Write "0"
Exit Sub
End If
strScriptName = Request.ServerVariables("SCRIPT_NAME")
'## -- skriv ut länkar till sid nummer n.
'## Den sida som visas ska ej vara länkad --
For I = 1 To HowManyPages
If CInt(I) <> CInt(WichPage) Then
Response.Write "<A href='" & strScriptName & "?" & _
"page=" & I & "'>" & I & "</A> "
Else
Response.Write "<B>" & I & "</B> "
End If
Next
End Sub
'## -- vilken post ska pagingen börja på --
Function getStartID(ByVal PageSize, ByVal ViewPage) ' As Integer
Dim m_intStart
m_intStart = ((PageSize * ViewPage) - PageSize)
getStartID = m_intStart
End Function
'## -------------------------------------------------------------
'## -- räkna ut hur många sidor som ska visas --
'## -- updated: July 14, 2001
'## -- update by: Patrik Berggren, [email]mrwize@mrwize.nu[/email]
'## -------------------------------------------------------------
'##
'## -- vid vissa tillfällen returnerades fel sidantal.
'## Felet/Buggen berodde på avrundningen med CInt()
'## och CLng().
'## -- Avrundningen som jag gjorde:
'##
'## m_intTotalPages = CInt((HowManyRecords / PageSize) + 0.5)
'##
'## vart i vissa fall fel och sid antalet vart fler än
'## vad det egentligen skulle vara.
'## Lösningen, hoppas jag, är att kolla hur stor resten
'## blir vid avrundning.
'## Om resten är större än 0 eller mindre än 0.5 så ska en sida
'## läggas till.
'## I annat fall så gäller avrundningen.
'## Har testat flera olika kombinationer med olika records antal
'## och sidstorlekar och ej hittat några buggar.
'## Så nu hoppas jag att denna paging är buggfri *ler*
'## -------------------------------------------------------------
Function countPages(ByVal HowManyRecords, ByVal PageSize)
Dim m_intTotalPages, m_intRest
m_intTotalPages = HowManyRecords / PageSize
If m_intTotalPages < 1 Then
m_intTotalPages = 1
Else
m_intRest = m_intTotalPages - CLng(m_intTotalPages)
If m_intRest > 0 AND m_intRest < 0.5 Then
m_intTotalPages = CLng(m_intTotalPages) + 1
Else
m_intTotalPages = CLng(m_intTotalPages)
End If
End If
'## -- return how many pages --
countPages = m_intTotalPages
End Function
Dim arrRecords
Dim intPageSize
Dim intPage
Dim intStartID
Dim I
Dim intId
Dim strNamn
Dim dteDatum
Dim strMess
Dim intTotalPages
Dim intTotalRecords
'## -- vilken sida ska visas --
intPage = Request.QueryString("page")
If intPage = "" Then intPage = 1
'## -- hur många poster ska visas per sida --
intPageSize = 10
'## -- hämta alla records, hämtas med metoden getrows och returneras
'## som en array. --
arrRecords = getRecords
'## -- vilken post är den första --
intStartID = getStartID(intPageSize, intPage)
'*****************************************************
If IsArray(arrRecords) Then
intTotalRecords = UBound(arrRecords,2) + 1
'## -- hur många sidor finns det i recordsetet --
intTotalPages = countPages(intTotalRecords, intPageSize)
With Response
.Write" <tr> " &vbCrLf
.Write" <td colspan=""2""> <font size=""1"" face=""Verdana, Arial, Helvetica, sans-serif"">Totalt: <b>"&intTotalPages&"</b> sidor med <b>"&intTotalRecords &"</b> inlägg." &vbCrLf
.Write" </font><hr noshade size=""1""></td>" &vbCrLf
.Write" </tr>" &vbCrLf
End With
'Response.Write "<P>Visar nu sida <B>" & intPage & "</B> av " & intTotalPages & "</P>"
For I = intStartID To ((intStartID + intPageSize) -1)
strNamn = arrRecords(0,I)
dteDatum = Mid(FormatDateTime(arrRecords(1,I),1),5)&" Kl:"&FormatDateTime(arrRecords(1,I),4)
strMess = arrRecords(2,I)
With Response
.Write" <tr> "& vbCrLf
.Write" <td bgcolor=""#EBD8D8""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1""><b>"&strNamn&"</b></font></td>"& vbCrLf
.Write" <td width=""50%"" bgcolor=""#EBD8D8""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">"&dteDatum&"</font></td>"& vbCrLf
.Write" </tr>"& vbCrLf
.Write" <tr valign=""top""> "& vbCrLf
.Write" <td colspan=""2"" height=""50"" bgcolor=""#F7EEEE""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">"&wfParser.Parse(strMess)&"</font></td>"& vbCrLf
.Write" </tr>"& vbCrLf
End With
If I = UBound(arrRecords,2) Then Exit For
Next
Else
'## -- inga poster fanns i db --
intPage = 0
intTotalRecords = 0
intTotalPages = 0
'## -- skriv ut att inga poster hittades --
With Response
.Write"<tr> "& vbCrLf
.Write"<td colspan=""2"" bgcolor=""#EBD8D8""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">Det finns inga inlägg...........</font></td>"& vbCrLf
.Write"</tr>"& vbCrLf
End With
End If
With Response
.Write"<tr> "& vbCrLf
.Write"<td colspan=""2""> "& vbCrLf
.Write"<hr noshade size=""1""> "& vbCrLf
.Write"</td> "& vbCrLf
.Write"</tr> "& vbCrLf
.Write"<tr> "& vbCrLf
.Write"<td colspan=""2""> "& vbCrLf
.Write"<font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">"
End With
Call PrevPage(intPage)
Response.Write " | "
Call NextPage(intTotalPages,intPage)
Response.Write " Totalt: "&intTotalPages
Response.Write " sidor med "&intTotalRecords &" inlägg." &vbCrLf
'***********************************************************************************
[/red]
kan ni se nått fel....
mvh icaaq