[Resolvido] Paginação em ASP sem Limit (SQL) e AbsolutePage (ASP)
Irei explicar como que eu desenvovi paginação em ASP de um jeito diferente dos tradicionais
Sem o comando LIMIT do SQL e sem o comando AbsolutePage do ASP
o código é um pouco grande, é simples e funcional
Vamos ao que interessa
Banco de dados que estou utilizando é o Microsoft SQL SERVER 2008, onde listarei apenas uma tabela
Código para criação da tabela:
create table contatos (
codigo int not null,
nome int not null,
telefone varchar(11) null,
email varchar(100) null,
)
go
Agora inserir alguns dados manualmente
INSERT INTO agenda(codigo, nome, telefone, email) VALUES (1, 'Mateus', '4833552211','mateusgamba@gmail.com')
INSERT INTO agenda(codigo, nome, telefone, email) VALUES (2, 'Monique', '4888040521','monique@hotmail.com')
INSERT INTO agenda(codigo, nome, telefone, email) VALUES (3, 'Marcelo', '4833552123','marcelo@gmail.com')
INSERT INTO agenda(codigo, nome, telefone, email) VALUES (4, 'Gledson', '4833122378','gledson@yahoo.com')
Agora vamos ao código ASP
contatos.asp
<%
' Parametros de Conexão ao Banco
SERVIDOR_DO_BANCO = "localhost"
NOME_DO_BANCO = "agenda"
USUARIO_DO_BANCO = "mateus"
SENHA_DO_BANCO = "123456"
' Definisse a quantidade de registros por pagina
registrosPagina = 10
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Contatos</title>
</head>
<body>
<table>
<thead>
<tr>
<td align="center">Código</td>
<td>Nome</td>
<td>Telefone</td>
<td>E-mail</td>
</tr>
</thead>
<tbody>
<%
Dim conn
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open = "Provider=MSDASQL;Driver={SQL Server};Server="&SERVIDOR_DO_BANCO&";Database="&NOME_DO_BANCO&";UID="&USUARIO_DO_BANCO&";PWD="&SENHA_DO_BANCO&";" 'Efetua a Conexão
Set rs = Server.CreateObject("adodb.recordset") ' Setamos o objeto recordset
sql = "SELECT codigo, nome, telefone, email FROM contatos ORDER BY nome ASC" ' comando SQL
rs.Open sql,Conn,3,3 ' Executa o comando SQL
totalRegistros = rs.recordCount ' Pega o total de registros
totalRegistroPagina = totalRegistros/registrosPagina ' Calcula o total de registro por página
If (Int(totalRegistroPagina)-totalRegistroPagina < 0) then ' Verifica se o valor é menor que 0
totalRegistroPagina = int(totalRegistroPagina) + 1
End If
pagina = 1
If Request.QueryString("pagina")<>"" Then 'Pega a pagina para listar
pagina = CInt(Request.QueryString("pagina"))
End If
inicio = ( pagina - 1 ) * registrosPagina 'Defini o inicio da lista
final = registrosPagina + inicio 'Define o final da lista
contador = 0 'Seta variavel de Contador
Do While Not rs.Eof and contador<final 'Inicia Laço da lista
contador = contador + 1 'Contador
If contador>inicio Then 'Condiçao para mostrar somente os registros maiores
%>
<tr>
<td align="center"><%=rs("codigo") %></td>
<td><%=rs("nome") %></td>
<td><%=rs("telefone") %></td>
<td><%=rs("email") %></td>
</tr>
<%
End If 'Fim da condição
rs.movenext 'Passa pro próximo
Loop 'Fim do Laço
Set rs = Nothing
Set conexao = Nothing
%>
</tbody>
</table>
<%
If pagina>1 Then response.Write "<a href=""contatos.asp?pagina="&(pagina-1)&""">Anterior</a>"
For i=1 to totalRegistroPagina
If i=pagina Then
response.Write "<a href=""contatos.asp?pagina="&i&""">[ "&i&" ]</a> "
Else
response.Write "<a href=""contatos.asp?pagina="&i&"""> "&i&" </a> "
End if
Next
If totalRegistroPagina>pagina Then response.Write "<a href=""contatos.asp?pagina="&(pagina+1)&""">Próxima</a>"
%>
</body>
</html>
Pronto, essa é a paginação
O interessante é que pode ser utilizado e outras linguagens que não essas opções que descrevi a cima.
Uma opção para deixar mais rapido e util é incrementar o comando TOP do sql, mais ai deixo pra proxima
Para mais assuntos, acesse o meu blog
Discussão (0)
Carregando comentários...