webForumDet fria alternativet

Paging

3 svar · 246 visningar · startad av Asa

AsaMedlem sedan dec. 20011 860 inlägg
#1

Hur gör man så att sidorna står så här:

[1-10] [11-20] [21-30]

Min kod ser ut så här:

<%Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/galleri.mdb")

Set RecSet = Server.CreateObject("ADODB.Recordset")

perSida = 3                                    'Bilder per sida

Sidan = Request.QueryString("sida")
If Sidan = "" then 
   sida = 1 
Else 
   sida = Sidan 
End If 

With RecSet
  .CursorLocation = 3
  .CacheSize = perSida
End With

SQL = "Select * From bilder"
RecSet.Open SQL, Conn

If RecSet.EOF Then%>

Tomt

<%Else

With RecSet
  .MoveFirst 
  .PageSize = perSida 
  .AbsolutePage = sida
End With

Sidor =  RecSet.PageCount
X = 0 
If Request.QueryString("Z") <> "" then
   Z=Request.QueryString("Z")
Else
   Z=1
End If
Do While Not RecSet.EOF And X < RecSet.PageSize%> 

Plats: <%=z%> - <%=RecSet("namn")%><br>

<%Z = Z + 1
X = X + 1
Recset.MoveNext
Loop

Recset.Close
Set Recset = Nothing

If Request.QueryString("Z") <> "" then
   Z=Request.QueryString("Z")
Else
   Z=1
End If

If Request.QueryString("sida") <> "" then 
   sida = Request.QueryString("sida")
Else 
   sida = 1 
End If%>
<br>
<%If Sidor <> 1 Then
        If (Int(sida)) <> 1 Then%>
             <a href="visa2.asp?sida=<%=(Int(sida)-1)%>&z=<%=Z-perSida%>"><b>«</b></a>
        <%Else
        Response.Write ""
        End If

        For Sid = 1 To Sidor 
             If (Int(Sid)) = (Int(sida)) Then%><%=Sid%> <%Else%> <a href="visa2.asp?sida=<%=Sid%>&z=<%=persida*Sid-perSida+1%>"><%=Sid%></a> <%End If
        Next

        If (Int(sida)) <> (Int(Sidor)) AND X > 0 Then%>
             <a href="visa2.asp?sida=<%=(Int(sida)+1)%>&z=<%=Z+perSida%>"><b>»</b></a>
        <%Else
        End If
    End If 
End If

Conn.Close
Set Conn = Nothing%>
PatrikBMedlem sedan mars 20002 836 inlägg
#2

ok, lite matematik då ;)

startPost =((sida * perSida) + 1) - perSida
endPost = sida + perSida

Response.Write "[" & startPost & " - " & endPost & "]"

detta är själva matematiken, bara att loopa igenom beroende på hur många sidor du har ;)

cya,
PatrikB

AsaMedlem sedan dec. 20011 860 inlägg
#3

Så här gjorde jag för den loopar ut vilken sida man är på:

        For Sid = 1 To Sidor 
           startPost =((sid * perSida) + 1) - perSida
           endPost = startPost + perSida-1
           If (Int(Sid)) = (Int(sida)) Then%>
                [<%=startPost%>-<%=endPost%>] 
           <%Else%> 
                <a href="visa2.asp?sida=<%=Sid%>&z=<%=persida*Sid-perSida+1%>">[<%=startPost%>-<%=endPost%>]</a> 
           <%End If
        Next
PatrikBMedlem sedan mars 20002 836 inlägg
#4

du fick det att funka.

ser nu att det vart fel i mitt exempel .... smög sin in ett + istället för * i:

endPost = sida + perSida

skulle ju vara:

endPost = sida * perSida

cya,
PatrikB

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