Ir para conteúdo

Arquivado

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

Ted k'

Paginação de outra forma usando MySQL

Recommended Posts

Paginação com ASP e MySQL:

 

Imagem Postada

 

Como paginação cada um monta do jeito que acha melhor, peguei o código montado pelo Ted K' e fiz algumas modificações:

<%
Dim Conexao
Set Conexao = Server.CreateObject("Adodb.Connection")
Conexao.ConnectionString = "driver=MySQL ODBC 5.1 Driver;server=localhost;uid=root;pwd=;database=seu_banco"
Conexao.Open
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Paginação com ASP e MySQL</title>
</head>

<style media="screen" type="text/css">
body{width:100%; height:100%;margin:0; padding:0; font:12px "Trebuchet MS";margin:0 auto; text-align:center;}
#quadro{background:#f7f7f7; width:540px; min-height:300px; margin:0 auto; padding:5px; text-align:left;}
#col-01{width:20px; float:left;background:#f1f1f1;margin:2px;text-align:center;padding:2px;}
#col-02{width:500px; float:left;background:#f1f1f1;margin:2px;padding:2px;}
#indice{text-align:center; padding: 20px 0 0 0}
#paginacao{text-align:center; padding: 20px 0 0 0}

.pag-atual{float:left; padding:4px; background:#c00; color:#fff; margin:3px;}
.pag-pontinhos{float:left; padding:4px; background:#E8E8E8; color:#999; margin:3px;}
.pag-navegacao-off{float:left; padding:4px; background:#E8E8E8; color:#999; margin:3px;}

.pag-link{float:left; padding:4px; background:#fff; margin:3px;}
.pag-link a{color:#c00;text-decoration:none;}
.pag-link a:hover{color:#000;text-decoration:underline;}

.pag-navegacao{float:left; padding:4px; background:#fff; margin:3px;}
.pag-navegacao a{color:#c00;text-decoration:none;}
.pag-navegacao a:hover{color:#000;text-decoration:underline;}
</style>

<body>

<div id="quadro">

<h2>Paginação com ASP e MySQL</h2>

<%
Dim rs, PagNav, TotalPag
Dim Anterior, Proximo, PagAtual, PaginaVisita
Set rs = Server.CreateObject("Adodb.RecordSet")
	
Conexao.CursorLocation = 3
rs.pagesize = 3
rs.Open "Select * From tbl_noticias Order By id_not Desc",Conexao
	
If rs.Eof Then
Response.Write("Não há registros")
Else
PagNav = CInt(Request.QueryString("pagina"))
If PagNav = 0 Then : PagNav = 1 : End If
	
rs.AbsolutePage = PagNav
TotalPag = rs.PageCount
%>

<div id="dados">

<% While Not rs.Eof And rs.AbsolutePage = PagNav %>

<div id="col-01"><% Response.Write(rs("id_not")) %></div>
<div id="col-02"><% Response.Write(rs("titulo_not")) %></div>

<%
rs.MoveNext : Wend

Anterior = PagNav - 1
Proximo = PagNav + 1

If Anterior <= 0 Then : Anterior = 1 : End If
If Proximo > TotalPag Then : Proximo = TotalPag : End If
%>

</div>

<div id="indice">
<%
If Request.QueryString("pagina") = "" Then
Response.Write("Página 1 de "&TotalPag&"")
Else
Response.Write("Página "&Request.QueryString("pagina")&" de "&TotalPag&"")
End If 
%>
</div>   
		
		
<div id="paginacao">
		
<%
PaginaVisita = CInt(Request.QueryString("pagina"))

MontaLink = Request.ServerVariables("SCRIPT_NAME")+"?variavel=teste&"

If PagNav = 1 Then
Response.Write("<div class='pag-navegacao-off'> « primeira </div>")
else
Response.Write("<div class='pag-navegacao'><a href="""&MontaLink&"pagina=1""> « primeira </a></div>")
end if

If PagNav > 1 Then
Response.Write("<div class='pag-navegacao'><a href="""&MontaLink&"pagina="&Anterior&"""> «anterior </a></div>")
else
Response.Write("<div class='pag-navegacao-off'> «anterior </div>")
End If

 
If PagNav > 5 Then
Response.Write("<div class='pag-pontinhos'> ... </div>")
End If


If PagNav <= 5 Then
If TotalPag >= 5 Then
For PagAtual = 1 To 5
If PagNav = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next
Else

For PagAtual = 1 To TotalPag
If PagNav = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next
End If
End If
		
	 
If PagNav > 5 Then
PagNav = PagNav + 4
Pg = PagNav
MaxB = Request.QueryString("pagina") - 1

			
If (MaxB + 1) = TotalPag Then
For PagAtual = MaxB To Pg - 4
If PaginaVisita = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next			


ElseIf (MaxB + 2) = TotalPag Then
For PagAtual = MaxB To Pg - 3
If PaginaVisita = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next
Else


For PagAtual = (MaxB - 1) To Pg - 2
If PaginaVisita = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next
End If
End If

		
If (TotalPag <> PaginaVisita) And (TotalPag > 5) Then
Response.Write("<div class='pag-pontinhos'> ... </div>")
End If


If PaginaVisita = TotalPag Then 
Response.Write("<div class='pag-navegacao-off'> próxima» </div>")
else 
Response.Write("<div class='pag-navegacao'><a href="""&MontaLink&"pagina="&Proximo&"""> próxima» </a></div>")End If

If PaginaVisita = TotalPag Then
Response.Write("<div class='pag-navegacao-off'> última » </div>")
else
Response.Write("<div class='pag-navegacao'><a href="""&MontaLink&"pagina="&TotalPag&"""> última » </a></div>")
end if

%>

</div>

<%
End If
Set rs = Nothing
%>

</div>

</body>
</html>

 

Abraços ao amigo Vinícius Siller!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu estava precisando disso tbm, só achamos isso em PHP, coloquei no meu blog e até na área principal do imasters para facilitar as buscas no google, tem uma galera que sofre com isso em ASP!

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma questão, se não me engano essa conexão é feita a base de dados do acess, como faço para o sql server?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ted k deu tudo certo mas eu agora tou a ter um problema.

 

eu tenho 2 tabelas juntas ordenadas por data para quando alguem for a home page aparecer as noticias mais recentes do site.

 

mas da me erro na segunda tabela

, dis que (Tipo de erro:

ADODB.Recordset (0x800A0CC1)

O item não foi encontrado na colecção correspondente ao nome ou ordinal pedido.

/estagio/home.asp, linha 60)

 

abaixo o codigo

 

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

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Paginação com ASP e MySQL</title>
</head>

<style media="screen" type="text/css">

body{background-color:#f1f1f1;}
#col-01{float:left; text-align:center;background:#f1f1f1;}
#col-02{float:right; text-align:right;background:#f1f1f1;}
#col-03{text-align:center;background:#f1f1f1;}
.pag-atual{float:left; padding:4px; background:#c00; color:#fff; margin:3px;}
.pag-pontinhos{float:left; padding:4px; background:#E8E8E8; color:#999; margin:3px;}
.pag-navegacao-off{float:left; padding:4px; background:#E8E8E8; color:#999; margin:3px;}
.pag-link{float:left; padding:4px; background:#fff; margin:3px;}
.pag-link a{color:#c00;text-decoration:none;}
.pag-link a:hover{color:#000;text-decoration:underline;}
.pag-navegacao{float:left; padding:4px; background:#fff; margin:3px;}
.pag-navegacao a{color:#c00;text-decoration:none;}
.pag-navegacao a:hover{color:#000;text-decoration:underline;}
</style>

<body >
<table>
<td align="left" width="370px"><h2>Titulo</h2> </td>
<td align="left" width="380px"><h2>Texto</h2></td>
<td align="right"><h2>Data</h2></td>
</table>

<%
Dim rs, PagNav, TotalPag
Dim Anterior, Proximo, PagAtual, PaginaVisita
Set rs = Server.CreateObject("Adodb.RecordSet")
	
Conexao.CursorLocation = 3
rs.pagesize = 5
rs.Open "SELECT datai,titulo FROM comunicado " &_
" UNION " &_
"SELECT data,adversario FROM calendario " &_
"order by datai desc",Conexao

If rs.Eof Then
Response.Write("Não há registros")
else
PagNav = CInt(Request.QueryString("pagina"))
If PagNav = 0 Then : PagNav = 1 : End If
	
rs.AbsolutePage = PagNav
TotalPag = rs.PageCount
%>

<div id="dados">

<% While Not rs.Eof And rs.AbsolutePage = PagNav %>

<div id="col-01"><% Response.Write(rs("titulo")) %></div>
<div id="col-02"><% Response.Write(rs("data")) %></div>
<div id="col-01"><% Response.Write(rs("adversario")) %></div>
<div id="col-03"><% Response.Write(rs("resultado")) %></div>
<div id="col-02"><% Response.Write(rs("datai")) %></div>
<br>
<div id="col-03"><% Response.Write(rs("texto")) %></div>

<%
rs.MoveNext : Wend

Anterior = PagNav - 1
Proximo = PagNav + 1

If Anterior <= 0 Then : Anterior = 1 : End If
If Proximo > TotalPag Then : Proximo = TotalPag : End If
%>

</div>

<div id="indice">
<%
If Request.QueryString("pagina") = "" Then
Response.Write("Página 1 de "&TotalPag&"")
Else
Response.Write("Página "&Request.QueryString("pagina")&" de "&TotalPag&"")
End If
%>
</div>  
		
		
<div id="paginacao">
		
<%
PaginaVisita = CInt(Request.QueryString("pagina"))

MontaLink = Request.ServerVariables("SCRIPT_NAME")+"?variavel=teste&"

If PagNav = 1 Then
Response.Write("<div class='pag-navegacao-off'> « primeira </div>")
else
Response.Write("<div class='pag-navegacao'><a href="""&MontaLink&"pagina=1""> « primeira </a></div>")
end if

If PagNav > 1 Then
Response.Write("<div class='pag-navegacao'><a href="""&MontaLink&"pagina="&Anterior&"""> «anterior </a></div>")
else
Response.Write("<div class='pag-navegacao-off'> «anterior </div>")
End If


If PagNav > 5 Then
Response.Write("<div class='pag-pontinhos'> ... </div>")
End If


If PagNav <= 5 Then
If TotalPag >= 5 Then
For PagAtual = 1 To 5
If PagNav = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next
Else

For PagAtual = 1 To TotalPag
If PagNav = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next
End If
End If
		
	
If PagNav > 5 Then
PagNav = PagNav + 4
Pg = PagNav
MaxB = Request.QueryString("pagina") - 1

			
If (MaxB + 1) = TotalPag Then
For PagAtual = MaxB To Pg - 4
If PaginaVisita = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next			


ElseIf (MaxB + 2) = TotalPag Then
For PagAtual = MaxB To Pg - 3
If PaginaVisita = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next
Else


For PagAtual = (MaxB - 1) To Pg - 2
If PaginaVisita = PagAtual Then
Response.Write("<div class='pag-atual'> "&PagAtual&" </div>")
Else
Response.Write("<div class='pag-link'><a href="""&MontaLink&"pagina="&PagAtual&"""> "&PagAtual&" </a></div>")
End If
Next
End If
End If

		
If (TotalPag <> PaginaVisita) And (TotalPag > 5) Then
Response.Write("<div class='pag-pontinhos'> ... </div>")
End If


If PaginaVisita = TotalPag Then
Response.Write("<div class='pag-navegacao-off'> próxima» </div>")
else
Response.Write("<div class='pag-navegacao'><a href="""&MontaLink&"pagina="&Proximo&"""> próxima» </a></div>")End If

If PaginaVisita = TotalPag Then
Response.Write("<div class='pag-navegacao-off'> última » </div>")
else
Response.Write("<div class='pag-navegacao'><a href="""&MontaLink&"pagina="&TotalPag&"""> última » </a></div>")
end if

%>

</div>

<%
End If
Set rs = Nothing
%>

</div>

</body>
</html>

da me erro nestas 3

<div id="col-02"><% Response.Write(rs("data")) %></div>

<div id="col-01"><% Response.Write(rs("adversario")) %></div>

<div id="col-03"><% Response.Write(rs("resultado")) %></div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

é "datai", com esse "i" no final?

 

se liga...

 

select tabela.coluna1, tabela2.coluna1 from tabela1, tabela2

entendeu o esquema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ted k já me da e sim é datai so que nao posso repetir os valores "SELECT data,adversario,hora FROM calendario " &_

"order by datai desc",Conexao

 

em

<div id="col-01"><% Response.Write(rs("titulo")) %></div>

<div id="col-02"><% Response.Write(rs("datai")) %></div>
<br>
<div id="col-03"><% Response.Write(rs("texto")) %></div>

ou seja nao posso por:

<div id="col-03"><% Response.Write(rs("data")) %></div>

 

de qualquer maneira agradeço muito a tua ajuda e pelo teu script

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para você acessar DATAI, você tem informar no SELECT também, não é só no ORDER BY.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro, parabéns pela melhoria no script, nota 10!

 

Pessoal, não sei se ja existe, mas estava pensando em fazer um tipo de paginação que não precisasse de todo esse código cada vez que tivesse que paginar algo, ou seja, economizar código. Creio que isso seria uma mão na roda para quem usa uma única pagina (default.asp) em seus sites dinâmicos. Dessa maneira sempre que precisasse paginar alguma tabela, bastaria executar algo parecido com o código do item 2 abaixo.

 

exemplo:

 

1. criava um arquivo chamado "paginacao.asp" onde ficariam funções utilizadas na paginação

function MontaSql(Sql)
 AbreConexao()
   Set rs = Server.CreateObject("Adodb.RecordSet")			
   oConn.CursorLocation = 3
   rs.pagesize = 3		
   rs.Open Sql,oConn
 FechaConexao()
 etc...
end function

function Paginar()
 .
 Todo aquele código que faz a paginação
 .
end function

2. recuperava os dados do arquivo "paginacao.asp" na pagina "default.asp" por meio de include e mandava paginar da seguinte maneira:

<!--#include file="paginacao.asp"-->
 ' as variaveis abaixo poderiam ser inicializadas apenas uma vez na pagina, logo abaixo da tag <body>
 Dim rs, PagNav, TotalPag
 Dim Anterior, Proximo, PagAtual, PaginaVisita

MontaSql("SELECT * FROM categorias") ' chamada da função	
	
If not rs.Eof then
   Response.Write("<div id='quadro'>")
   Response.Write("<div id='dados'>")				
      	' dados aqui...
	While Not rs.Eof And rs.AbsolutePage = PagNav
		Response.Write("<div id='col-01'>"&rs("id_categoria")&"</div>")
		Response.Write("<div id='col-02'>"&rs("categoria")&"</div>")
	rs.MoveNext : Wend
				
	Anterior = PagNav - 1
	Proximo = PagNav + 1

	If Anterior <= 0 Then : Anterior = 1 : End If
	If Proximo > TotalPag Then : Proximo = TotalPag : End If
        
        Paginar() ' chamada da função

   Response.Write("</div>")				
   Response.Write("</div>")
else
   Response.Write("Não há registros")
end if 

 

alguém poderia dar esse help?

abraços a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente Obrigado pelo Script.

 

Sabe me dizer esse erro:

 

 

Erro de tempo de execução do Microsoft VBScript erro '800a01a8'

 

Objeto necessário: ''

 

paginacao.asp, linha 51

 

Conexao.CursorLocation = 3

Tentei mudar para SQL Server:

 

<%
Dim conexao, strConexao	
Sub AbreBanco ()
	strConexao = "Provider=SQLOLEDB.1;Server=SERVER5\SQLEXPRESS;Database=xxxxxxx;UID=xxxxx;PWD=xxxxx"	
	Set conexao = Server.CreateObject ("ADODB.Connection")
	conexao.Open (strConexao)	
End Sub
Sub FechaBanco () 
	if conexao.State = 1 then 
		conexao.Close						
		Set conexao = Nothing 					
	End if 	
End Sub 
%>

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altera DIM para PUBLIC na linha abaixo

Dim conexao, strConexao

 

Se não funcionar, verifica se a conexão com o SQL Server está ok, criando a conexão fora do método AbreBanco.

 

Poste o resultado.

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.