webForumDet fria alternativet

GetRows() med paging

2 svar · 236 visningar · startad av m_soderlund

m_soderlundMedlem sedan sep. 20026 425 inlägg
#1

Jag använder GetRows() för att optimera koden lite bättre. I koden här nedan använder jag GetRows() tillsammans med
paging och det fungerar till viss del. Jag ska ha 10 poster per sida, och låt oss säga att databasen innehåller
30 sidor. På första sidan visas alla poster, på andra sidan nästa 10 poster och på tredje nästa 10 poster, precis som det ska vara.
Men hur fixar jag så att bara 10 poster syns på första sidan och inte alla i databasen?

Efter For-loopen står ju också and sftRowcount < Psize. Om jag tar bort den raden fungerar allt ändå, med enda undantaget att
alla poster syns på den första sidan. Jag får inget felmeddelande.

Och slutligen, går det att optimera koden mer?

<% 'Detta kodstycket är en fortsättning på listningen av alla poster i en specifik tråd 
Dim sftCn, sftRs, sftstrSQL, viewPage, sftRowCount, sftPageCounter, Psize, arrRecs, ifo, f0, f1, f2, f3, f4, f5, f6, f7 
viewPage = Request.Querystring("viewPage") 
If viewPage="" Then viewPage=1 
sftRowcount=0 
    
Set sftCn = Server.CreateObject("ADODB.Connection") 
sftCn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("forum/db_forum.mdb") & ";pwd=" & Password & ";" 
sftstrSQL = "Select * From tbl_answers Where TopicId=" & Request.Querystring("id") 
Set sftRs = sftCn.Execute("Select * From tbl_answers Where TopicId=" & Request.Querystring("id")) 
sftRs.Close 
sftRs.Cursortype=3 
Psize=10 
sftRs.Open %> 

<% If sftRs.EOF And Forum_NoId="No" Then Response.Write "" 
If sftRs.EOF And Not Forum_NoId="No" Then Response.Write "Inga svar än.. Skriv svar nedan."  Else sftRs.Absolutepage=cInt(viewPage) %> 
<% If Not sftRs.EOF Then : arrRecs = sftRs.GetRows 
Dim sftAntal, sftPageCount : sftAntal = sftRs.Recordcount 
sftPageCount = sftRs.PageCount 
sftRs.Close : Set sftRs = Nothing 
sftCn.Close : Set sftCn = Nothing %> 

<% If IsArray(arrRecs) Then 
For ifo = 0 To UBound(arrRecs,2) and sftRowcount < Psize 
f0 = arrRecs(0,ifo) 
f1= arrRecs(1,ifo) 
f2= arrRecs(2,ifo) 
f3= arrRecs(3,ifo) 
f4= arrRecs(4,ifo) 
f5 = arrRecs(5,ifo) 
f6 = arrRecs(6,ifo) 
f7 = arrRecs(7,ifo) %> 

<a name="#<%=f0%>"></a><table><tr bgcolor="<%=Border%>"><td width="528"> 
<table cellpadding="6" cellspacing="0" border="0"><tr><td bgcolor="<%=stCell%>"><table cellpadding="0" cellspacing="0" border="0"><tr><td width="460"><span class="minirubrik"><%=f5%></span></td><td><a href="default.asp?cat=forum&action=edit&aid=<%=f0%>">Redigera</a></td></tr></td></tr></table> 
</td></tr><tr><td bgcolor="<%=stCell2%>"><%=fixmylinks(Replace(f6,vbCrLf,"<br>"))%> 
<p><% If Len(f3)>0 Then %><a href="mailto:<%=f3%>" title="<%=f3%>"><% End If %><%=f2%><% If Len(f3)>0 Then %></a><% End If %> 
| <%=Left(f7,16)%> | <span class="minirubrik">Id:</span> <%=f0%></td></tr></table></td></tr></table><p> 
<% sftRowcount = sftRowcount + 1 
Next 
End If 
End If %> 
<% If sftAntal > 10 Then %> 
<% For sftPagecounter = 1 to sftPageCount %> 
<a href="default.asp?cat=forum&action=show&id=<%=Request.Querystring("id")%>&viewpage=<%=sftPagecounter%>"><%=sftPagecounter%></a> 
<% Next %><% If Len(Request.Querystring("viewpage"))>0 Then %> | Du är på sida <span class="minitext"><%=Request.Querystring("viewpage")%></span><% End If %> 
<% End If %>
MacceMedlem sedan apr. 2001425 inlägg
#2

Kolla in Paces klass...

clsPacePager - Förenklar paging via matris (array) och For...Next loopar.

m_soderlundMedlem sedan sep. 20026 425 inlägg
#3

Tack.. Kollar upp den lite.

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)