Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Korso

Paginação Inversa

Recommended Posts

Olá pessoal!

 

Bem, nunca tive problemas com paginação, mas atualmente não estou conseguindo adaptar de forma rápida, uma paginação que fique com os números das páginas de forma decrescente.

 

Preciso que em cada página tenham 10 registros, e no caso, se tiverem 100 registros, os 10 últimos registros gravados devem aparecer na página 10.

 

Ou seja, é uma paginação inversa. As últimas páginas devem aparecer primeiro, e nas últimas páginas é que devem estar os últimos registros lançados.

 

Exemplo:

 

<< Mais Atual - 10 . 9 . 8 . 7 . 6 . 5 . 4 . 3 . 2 . 1 - Mais Antiga >>

 

 

Se eu estiver na página 5 e clicar em "Mais Atual" deverá ir para a página 6 com os registros mais recentes.

Se eu estiver na página 5 e clicar em "Mais Antiga" deverá ir para a página 4 com os registros mais antigos.

 

 

Alguém já criou algum modelo assim de paginação ??

 

Obrigado desde já pela ajuda!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é mais fácil você criar um campo do tipo "Codigo", com uma Auto Numeração, e ai depois fazer o select ordenado por ele em ordem Decrescente ???

 

Tipo.. você ja tem uns 100 registros no banco.... se inserir + 10, seria do 101 ao 110.... ai no SELECT você use o ORDER BY e manda ordenar pelo campo do codigo em ordem decrescente....

 

Ai a sua páginação trará os ultimos registros primeiro...

 

Acho melhor fazer assim.,...

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, não resolve pq o problema não é somente este...

 

Eu tenho que exibir "visualmente" a paginação deste jeito, como mencionei no início:

 

<< Mais Atual - 10 . 9 . 8 . 7 . 6 . 5 . 4 . 3 . 2 . 1 - Mais Antiga >>

 

 

 

Do contrário, usaria como você mesmo disse, numa paginação convencional.

 

Entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você está montando os links? Se for com um laço FOR é só inverter colocando o valor maior primeiro. Se isso não funcionar é só colocar ao final do inicio do for STEP -1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha paginação está assim:

 

 

- PÁGINA DE EXIBIÇÃO:

<%

If Request.QueryString("PN") = "" THEN

PaginaCorrente = 1

Else

PaginaCorrente = Request.QueryString("PN")

End If

 

If Request.QueryString("FctIntervalo")= "" THEN

VarIntervalo = "10"

Else

VarIntervalo = Request.QueryString("FctIntervalo")

End If

 

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

rs.CursorLocation = 3

rs.CursorType = 0

rs.LockType = 1

'rs.CacheSize = VarIntervalo

rs.Open zsql, cnn

rs.PageSize = CInt(VarIntervalo)

VarTotalPaginas= rs.PageCount

Var_TotalRegistros = rs.recordcount

on error resume next

rs.AbsolutePage = CInt(PaginaCorrente)

Contador = 0

 

Do Until rs.AbsolutePage <> CInt(PaginaCorrente) OR rs.EOF

response.write rs("campo") & "<BR>"

rs.movenext

loop

 

rs.close

set rs=nothing

%>

 

Páginas: <% Call paginacao(VarStrAdicional,VarTotalPaginas,VarIntervalo)%>

<!--#include file="paginacao.asp"-->

 

- PÁGINA COM A FUNCION (PAGINACAO.ASP)

<%

Function paginacao(FctStrAdicional,FctTotalPaginas,FctIntervalo)

 

If right(FctStrAdicional,1) <> "&" Then

FctStrAdicional = "&"& FctStrAdicional

End If

 

var_url = Request.serverVariables("SCRIPT_NAME")

arrayx = split(var_url,"/")

 

do while I < ubound(arrayx)

I = I + 1

If len(trim(VarURLPaginacao)) = 0 then

VarURLPaginacao = arrayx(i)

End If

 

If arrayx(I) > VarURLPaginacao then

VarURLPaginacao = arrayx(I)

lngIndexMaiorValor = I

exit do

End If

loop

 

If RIGHT(VarURLPaginacao,4) <> ".asp" Then

VarURLPaginacao = ""

End If

 

Flag = INT(FctTotalPaginas / FctIntervalo)

Flag1 = INT(PaginaCorrente / FctIntervalo)

PI = Flag1 * FctIntervalo

If request("PN") = "" Then

Response.Write "<a class=""nw"" href='java script:window.history.go(-1);'><B>Anterior</B></a> ."

End If

If PI = 0 THEN

PI = 1

End If

 

PF = PI + FctIntervalo - 1

If CInt(Flag1) >= CInt(1) THEN

Response.Write "<a class=""nw"" href="&VarURLPaginacao&"?PN=" & PI - 1 & "&FctIntervalo=" & FctIntervalo & FctStrAdicional & "letra=" & request.querystring("letra") & "><B>10 Anteriores</B></a> - "

End If

 

If (Request("PN") - 1) >= "1" Then

Response.Write "<a class=""nw"" href="&VarURLPaginacao&"?PN=" & Request("PN") - 1 & "&FctIntervalo=" & FctIntervalo & FctStrAdicional & "letra=" & request.querystring("letra") & "><B>Anterior</B></a> "

End If

 

 

FOR I = PI TO PF

If CInt(I) <= CInt(FctTotalPaginas) THEN

If CInt(PaginaCorrente) = CInt(I) THEN

response.write "<span style='color:#666666; font-size:11px'><b>" & I & "</b></span> . "

Else

response.write "<a class=""nw"" href="&VarURLPaginacao&"?PN=" & I & "&FctIntervalo=" & FctIntervalo & FctStrAdicional & "letra=" & request.querystring("letra") & "><b>" & I & "</b></a> . "

oi = Cint(PaginaCorrente)

End If

End If

NEXT

 

If CDbl(request("PN")) < CDbl(FctTotalPaginas) Then

Response.Write "<a class=""nw"" href="&VarURLPaginacao&"?PN=" & oi + 1 & "&FctIntervalo=" & FctIntervalo & FctStrAdicional & "letra=" & request.querystring("letra") & "><B>Próxima</B></a>"

End If

 

If (CInt(Flag1) < CInt(Flag)) THEN

If CInt(PF) <> CInt(FctTotalPaginas) THEN

Response.Write " - <a class=""nw"" href="&VarURLPaginacao&"?PN=" & PF + 1 & "&FctIntervalo=" & FctIntervalo & FctStrAdicional & "letra=" & request.querystring("letra") & "><B>Próximas 10</B></a>"

End If

End If

 

End Function

%>

 

Não estou conseguindo adaptar a este modelo.

 

Agradeço pela ajuda até agora.

 

Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na linha que contém FOR I = PI TO PF coloque FOR I = PF TO PI

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.