Jag använder också hans kod och ser inget fel.
Vad händer om du skriver fasta värden i for-loopen?
For I = 1 To 5
4 svar · 272 visningar · startad av icaaq
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
Jag använder också hans kod och ser inget fel.
Vad händer om du skriver fasta värden i for-loopen?
For I = 1 To 5
DEt konstiga är att koden funkar hemma(lokalt) men så fort jag lägger upp den på hotellet så hänger den sig.......
Hur ser man vilken MDAC man använder?
lägg till under denna:
Set m_objRS = m_objConn.Execute(m_strSQL)
response.Write m_objConn.Version
/red raden behöver inte ligga där, du kan lägga den direkt under öppningen av connectionobjektet.
Jag vet inte vad som var fel men jag reparerade databasen och sen funkade allt som det skulle igen......
tack ändå, icaaq