Ir para conteúdo

Arquivado

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

mateushim

[Resolvido] Paginação em ASP sem Limit (SQL) e AbsolutePage (ASP)

Recommended Posts

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

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.