Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com Paginação


victormartins

Pergunta

Mais uma dúvida aqui hehehe :D

Eu mandei dividir por páginas a cada 16 registros...

Mas... eu coloquei para ele exibir os registros em 4 colunas...

Mas, na primeira página ele exibe TODOS os dados, mas exibe o link para a próxima página, e na próxima página exibe os dados que deveriam aparecer...

Parte do código:

<%
 'Coloque aqui a quantidade de registros que você deseja por página
 Const NumPerPage = 16

 'Verifica qual a página solicitada
 Dim CurPage
 If Request.QueryString("CurPage") = "" then
 CurPage = 1 'Primeira página
 Else
 CurPage = Request.QueryString("CurPage")
 End If
 %>


 <html>

 <table width="100%" cellpadding="0" cellspacing="0">
 <%
 console2 = Request.QueryString("console")
 organizar = Request.QueryString("organizar")
 modo = Request.QueryString("modo")
 %>
 <%
 if Request.QueryString("organizar") = "" then
 organizar = "jogo"
 modo = "ASC"
 else
 organizar = Request.QueryString("organizar")
 modo = Request.QueryString("modo")
 end if
 %>
 <% tabela = Request.QueryString("console") 

 %>
 <%  Set rs = Server.CreateObject("ADODB.Recordset")
           sqlstmt = "SELECT * FROM "& tabela &""
           If organizar <> "" Then sqlstmt = sqlstmt & " Order By " &  organizar &" "& modo &""
           'Acerta a posição do cursor
           rs.CursorLocation = 3
           'Define o tamnho do Cache = para o número de registros
           rs.CacheSize = NumPerPage
           rs.Open sqlstmt, Dados, 3, 3
           'Coloca a quantidade de páginas rs.PageSize = NumPerPage
 'Pega o número total de páginas Dim TotalPages
 TotalPages = rs.PageCount
 'Configura a página atual
 rs.AbsolutePage = CurPage
 TotalRecs = rs.recordcount

 'Zera o contador
 Count = 0

 'Inicia a Função DO, utilizando a quantidade de páginas especificadas 'Ou seja ele irá executar a ação até que o valor Count seja menor que "20" como está no nosso exemplo
 Do While Not rs.EOF And Count < rs.PageSize


 x = 0
 For x = 1 to NumPerPage
 %>
 <% If rs.eof then
         Exit For
     Else
    %>
    
 <%
 n = 1
 c = 4
 'c, é aqui que você controla o numero de colunas Do while not RS.Eof
 %>
 <td align="center" width="25%" style="border-left:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid; border-right:#CCCCCC 1px solid"><div style="margin-left:5px; margin-top:5px; margin-bottom:5px; margin-right:5px;">
 <a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><%=rs("jogo") %> - <%=rs("regiao") %> - <%=rs("formato") %></a><br>
 <%=rs("idioma") %> - <%=rs("genero") %></div></td>
 <%
 n = n + 1
 rs.Movenext
 If n > c then
 response.write "</tr><tr>"
 n = 1
 End If
 Loop
 End if
 Next
 'Aumenta um número no Count para que a contagem de página funcione
 Count = Count + 1
 'Faz o Loop
 Loop
 %>
 </table>
 <tr><td>
 <%
 'Coloca o número da página atual / total de páginas utilizando o Response.Write
 pagina = Request.ServerVariables ("SCRIPT_NAME")

 Response.Write("<div style='margin-top:5px; margin-left:12px'><center><B><font color=""#003399"" size=""2"" face=""Arial""><strong> Página " & CurPage & " de " & TotalPages & " </strong></font></B></center></div>")
 Response.Write("<table width='390' align='center'><tr>")

 'Mostra os botôes: Anterior e Próximo, utilizando da opção de IF

 if CurPage > 1 then

 'Se for a primeira página, Mostra apenas o botão Próximo

 Response.Write("<td align='left'><B><font color=""#FF8040"">")
 Response.Write("<a href='"& pagina &"?console="& console2 &"&organizar="& organizar &"&modo="& modo &"&curpage=" & TotalPages - TotalPages + 1 & "'>")
 Response.Write("Primeira página</a></font> ")
 Response.Write(" &nbsp;&nbsp;|&nbsp;&nbsp; ")
 Response.Write("<a href='"& pagina &"?console="& console2 &"&organizar="& organizar &"&modo="& modo &"&curpage=" & curpage - 1 & "'>")
 Response.Write(" Anterior </a></font></td>")
 End If

 if CInt(CurPage) <> CInt(TotalPages) then

 'Se estiver na última página, mostra apenas o botão Anterior

 Response.Write("<td align='right'><B><font color=""#FF8040"">")
 Response.Write("<a href='"& pagina &"?console="& console2 &"&organizar="& organizar &"&modo="& modo &"&curpage=" & curpage + 1 & "'>")
 Response.Write(" Próxima </a></font>")
 Response.Write(" &nbsp;&nbsp;|&nbsp;&nbsp; ")
 Response.Write("<a href='"& pagina &"?console="& console2 &"&organizar="& organizar &"&modo="& modo &"&curpage=" & TotalPages & "'>")
 Response.Write(" Última página</a></font></td>")
 Response.Write("</tr></table>")


 End If %>
 </td></tr>
 </table>
 </td></tr>
 </table>


 </body>
 </html>

[]'s

Editado por victormartins
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

o q são "os dados que deveriam aparecer"??

a pagina ta hospedada?? se tiver, passa o link pra gente ver.

se não, manda um printscreen e o codigo html da tabela depois que ela fica pronta.

mas eu tava reparando nessa parte aqui:

response.write "</tr><tr>"

antes disso você não abre nenhum tr.

como você pode mandar ele fechar o tr sem ter aberto nd??

e pior ainda, como você pode estar abrindo td sem antes abrir tr??

tenta por um tr antes de comecar o for, e veja se resolve.

Link para o comentário
Compartilhar em outros sites

  • 0

E aí pessoal!

victormartins, a paginação está certa, mas o contador deve ser incrementado dentro do laço mais interno... do jeito que está ele não verifica o número de registros por página e vai listando, quando sai desse laço e entra no externo, ele já listou..

Funciona na outra página porque deve ser a última e o recordset, como está paginado com o AbsolutePage, inicia na página correta. No trecho de código abaixo:

Do while not RS.Eof
%>
<td align="center" width="25%" style="border-left:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid; border-right:#CCCCCC 1px solid"><div style="margin-left:5px; margin-top:5px; margin-bottom:5px; margin-right:5px;">
<a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><%=rs("jogo") %> - <%=rs("regiao") %> - <%=rs("formato") %></a><br>
<%=rs("idioma") %> - <%=rs("genero") %></div></td>
<%
n = n + 1
rs.Movenext
If n > c then
response.write "</tr><tr>"
n = 1
End If
Loop
Adicione o incremento do contador Count e também verifique na condição do Do While ( a verificação que está no laço externo pode ficar, só por segurança né :rolleyes:
Do while not RS.Eof And Count < rs.PageSize
%>
<td align="center" width="25%" style="border-left:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid; border-right:#CCCCCC 1px solid"><div style="margin-left:5px; margin-top:5px; margin-bottom:5px; margin-right:5px;">
<a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><%=rs("jogo") %> - <%=rs("regiao") %> - <%=rs("formato") %></a><br>
<%=rs("idioma") %> - <%=rs("genero") %></div></td>
<%
n = n + 1
rs.Movenext
If n > c then
response.write "</tr><tr>"
n = 1
End If
'Aumenta um número no Count para que a contagem de página funcione
Count = Count + 1
Loop

Aqui funcionou certinho! Espero que isso ajude!

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0
o q são "os dados que deveriam aparecer"??

a pagina ta hospedada?? se tiver, passa o link pra gente ver.

se não, manda um printscreen e o codigo html da tabela depois que ela fica pronta.

mas eu tava reparando nessa parte aqui:

response.write "</tr><tr>"
antes disso você não abre nenhum tr. como você pode mandar ele fechar o tr sem ter aberto nd?? e pior ainda, como você pode estar abrindo td sem antes abrir tr?? tenta por um tr antes de comecar o for, e veja se resolve.
Por enquanto eu só estou rodando no localhost... vou ver se mais tarde eu coloco online ;) Eu vou viajar agora, e vou acessar a internet a noite, ai eu posto um print screen, vou colocar o código inteiro no final do post ;) Sobre o tr, ele abre em cima...
E aí pessoal! victormartins, a paginação está certa, mas o contador deve ser incrementado dentro do laço mais interno... do jeito que está ele não verifica o número de registros por página e vai listando, quando sai desse laço e entra no externo, ele já listou.. Funciona na outra página porque deve ser a última e o recordset, como está paginado com o AbsolutePage, inicia na página correta. No trecho de código abaixo:
Do while not RS.Eof
 %>
 <td align="center" width="25%" style="border-left:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid; border-right:#CCCCCC 1px solid"><div style="margin-left:5px; margin-top:5px; margin-bottom:5px; margin-right:5px;">
 <a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><%=rs("jogo") %> - <%=rs("regiao") %> - <%=rs("formato") %></a><br>
 <%=rs("idioma") %> - <%=rs("genero") %></div></td>
 <%
 n = n + 1
 rs.Movenext
 If n > c then
 response.write "</tr><tr>"
 n = 1
 End If
 Loop
Adicione o incremento do contador Count e também verifique na condição do Do While ( a verificação que está no laço externo pode ficar, só por segurança né :rolleyes:
Do while not RS.Eof And Count < rs.PageSize
 %>
 <td align="center" width="25%" style="border-left:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid; border-right:#CCCCCC 1px solid"><div style="margin-left:5px; margin-top:5px; margin-bottom:5px; margin-right:5px;">
 <a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><%=rs("jogo") %> - <%=rs("regiao") %> - <%=rs("formato") %></a><br>
 <%=rs("idioma") %> - <%=rs("genero") %></div></td>
 <%
 n = n + 1
 rs.Movenext
 If n > c then
 response.write "</tr><tr>"
 n = 1
 End If
 'Aumenta um número no Count para que a contagem de página funcione
 Count = Count + 1
 Loop
Aqui funcionou certinho! Espero que isso ajude! []'s
Tentei isso também, não havia funcionado =/ Vou colocar o código inteiro logo hehehe
<%
'Coloque aqui a quantidade de registros que você deseja por página

Const NumPerPage = 16

'Verifica qual a página solicitada
Dim CurPage
If Request.QueryString("CurPage") = "" then
CurPage = 1 'Primeira página
Else
CurPage = Request.QueryString("CurPage")
End If
%>
<!--#include file="conexao.asp"-->
<!--#include file="hora.asp"-->
<!--#include file="consoles_nomes.asp"-->
<html>
<!--#include file="corpo.asp"-->
<table border="0" align="center" cellpadding="0" cellspacing="0"><tr><td align="center">
<!--#include file="topo.asp"-->
<table width="100%" align="center" cellpadding="0" cellspacing="0">
<tr><td align="center"><br></td></tr>
<tr><td>
<!--#include file="menu.asp"-->
</td></tr>
<table width="100%" cellpadding="0" cellspacing="0">
<%
console2 = Request.QueryString("console")
organizar = Request.QueryString("organizar")
modo = Request.QueryString("modo")
 if request.QueryString("modo") = "" or request.QueryString("modo") = "ASC" then 
links_organizar = "<a href='?console="& console2 &"&organizar=id&modo=DESC&curpage="& curpage &"' class='organizar'>ID</a>, <a href='?console="& console2 &"&organizar=jogo&modo=DESC&curpage="& curpage &"' class='organizar'>Nome</a>, <a href='?console="& console2 &"&organizar=idioma&modo=DESC&curpage="& curpage &"' class='organizar'>Idioma</a>, <a href='?console="& console2 &"&organizar=genero&modo=DESC&curpage="& curpage &"' class='organizar'>Gênero</a>, <a href='?console="& console2 &"&organizar=regiao&modo=DESC&curpage="& curpage &"' class='organizar'>Região</a>"
else
links_organizar = "<a href='?console="& console2 &"&organizar=id&modo=ASC&curpage="& curpage &"' class='organizar'>ID</a>, <a href='?console="& console2 &"&organizar=jogo&modo=ASC&curpage="& curpage &"' class='organizar'>Nome</a>, <a href='?console="& console2 &"&organizar=idioma&modo=ASC&curpage="& curpage &"' class='organizar'>Idioma</a>, <a href='?console="& console2 &"&organizar=genero&modo=ASC&curpage="& curpage &"' class='organizar'>Gênero</a>, <a href='?console="& console2 &"&organizar=regiao&modo=ASC&curpage="& curpage &"' class='organizar'>Região</a>"
end if
%>
<%
if Request.QueryString("organizar") = "" then
organizar = "jogo"
modo = "ASC"
else
organizar = Request.QueryString("organizar")
modo = Request.QueryString("modo")
end if
%>
<% tabela = Request.QueryString("console") 

%>
<%          
          Set rs = Server.CreateObject("ADODB.Recordset")
          sqlstmt = "SELECT * FROM "& tabela &""
          If organizar <> "" Then sqlstmt = sqlstmt & " Order By " &  organizar &" "& modo &""
          'Acerta a posição do cursor
          rs.CursorLocation = 3
          'Define o tamnho do Cache = para o número de registros
          rs.CacheSize = NumPerPage
          rs.Open sqlstmt, Dados, 3, 3
          'Coloca a quantidade de páginas
rs.PageSize = NumPerPage
'Pega o número total de páginas
Dim TotalPages
TotalPages = rs.PageCount
'Configura a página atual
rs.AbsolutePage = CurPage
TotalRecs = rs.recordcount
Response.Write("<tr><td><div style='margin-top:5px;'><b>Ordernar por:</b> "& links_organizar &"</div></td></tr><tr><td style='border-bottom:#CCCCCC 1px solid;'><font style='font-size:12px;'>Total de Jogos: <b>"& rs.recordcount &"</b><br><br></font></td><td style='border-bottom:#CCCCCC 1px solid;'><font style='font-size:12px;'><b>Página:  " & CurPage & " de " & TotalPages & " </b><br><br></font></td></tr></table>")


'Zera o contador
Count = 0

'Inicia a Função DO, utilizando a quantidade de páginas especificadas
'Ou seja ele irá executar a ação até que o valor Count seja menor que "20" como está no nosso exemplo
Do While Not rs.EOF And Count < rs.PageSize


x = 0
For x = 1 to NumPerPage
%>
<table width='1003' cellpadding='0' cellspacing='0'><tr>
<% 
If rs.eof then
        Exit For
    Else
   %>
   
<%
n = 1
c = 4
'c, é aqui que você controla o numero de colunas
Do While Not rs.EOF And Count < rs.PageSize
%>
<td align="center" width="25%" style="border-left:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid; border-right:#CCCCCC 1px solid"><div style="margin-left:5px; margin-top:5px; margin-bottom:5px; margin-right:5px;">
<% if console2 = "PSP" or console2 = "psp" then %>
<% if IsNull(rs("capa")) or rs("capa") = "" then %>

<a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><img src="capas/<% Response.Write(Request.QueryString("console"))%>/semcapa.png" width="70" height="120" border="0"></a><br>

<% else %>

<a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><img src="capas/<% Response.Write(Request.QueryString("console"))%>/<%=rs("capa")%>" width="70" height="120" border="0"></a><br>

<% end if %>
<% else %>
<% if IsNull(rs("capa")) or rs("capa") = "" then %>

<a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><img src="capas/<% Response.Write(Request.QueryString("console"))%>/semcapa.png" width="150" height="100" border="0"></a><br>

<% else %>

<a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><img src="capas/<% Response.Write(Request.QueryString("console"))%>/<%=rs("capa")%>" width="150" height="100" border="0"></a><br>

<% end if %>
<% end if %>
<a href="ver_jogo.asp?console=<% Response.Write(Request.QueryString("console"))%>&id=<%=rs("id") %>" class="indice"><%=rs("jogo") %> - <%=rs("regiao") %> - <%=rs("formato") %></a><br>
<%=rs("idioma") %> - <%=rs("genero") %></div></td>
<%
n = n + 1
rs.Movenext
If n > c then
response.write "</tr><tr>"
n = 1
End If
Loop
End if
Next
'Aumenta um número no Count para que a contagem de página funcione
Count = Count + 1
'Faz o Loop
Loop
%>
</table>
<tr><td>
<%
'Coloca o número da página atual / total de páginas utilizando o Response.Write
pagina = Request.ServerVariables ("SCRIPT_NAME")

Response.Write("<div style='margin-top:5px; margin-left:12px'><center><B><font color=""#003399"" size=""2"" face=""Arial""><strong> Página " & CurPage & " de " & TotalPages & " </strong></font></B></center></div>")
Response.Write("<table width='390' align='center'><tr>")

'Mostra os botôes: Anterior e Próximo, utilizando da opção de IF

if CurPage > 1 then

'Se for a primeira página, Mostra apenas o botão Próximo

Response.Write("<td align='left'><B><font color=""#FF8040"">")
Response.Write("<a href='"& pagina &"?console="& console2 &"&organizar="& organizar &"&modo="& modo &"&curpage=" & TotalPages - TotalPages + 1 & "'>")
Response.Write("Primeira página</a></font> ")
Response.Write(" &nbsp;&nbsp;|&nbsp;&nbsp; ")
Response.Write("<a href='"& pagina &"?console="& console2 &"&organizar="& organizar &"&modo="& modo &"&curpage=" & curpage - 1 & "'>")
Response.Write(" Anterior </a></font></td>")
End If

if CInt(CurPage) <> CInt(TotalPages) then

'Se estiver na última página, mostra apenas o botão Anterior

Response.Write("<td align='right'><B><font color=""#FF8040"">")
Response.Write("<a href='"& pagina &"?console="& console2 &"&organizar="& organizar &"&modo="& modo &"&curpage=" & curpage + 1 & "'>")
Response.Write(" Próxima </a></font>")
Response.Write(" &nbsp;&nbsp;|&nbsp;&nbsp; ")
Response.Write("<a href='"& pagina &"?console="& console2 &"&organizar="& organizar &"&modo="& modo &"&curpage=" & TotalPages & "'>")
Response.Write(" Última página</a></font></td>")
Response.Write("</tr></table>")


End If %>
</td></tr>
</table>
</td></tr>
</table>
<% end if %>
</body>
</html>

Agradeço a ajuda :D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...