Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Paginação com ASP e MySQL:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img522.imageshack.us/img522/3203/paginacaoaspmysqlle7.jpg&key=3c72bea024fe2605d3675772c47b99401e72b2e1f8a920d3a68716088dc03c71" alt="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">.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!!
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!
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?
foi feita para SQL SERVER, mais é só mudar a string de comando!!
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>é "datai", com esse "i" no final?
se liga...
select tabela.coluna1, tabela2.coluna1 from tabela1, tabela2
entendeu o esquema?
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
Para você acessar DATAI, você tem informar no SELECT também, não é só no ORDER BY.
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>")alguém poderia dar esse help?
abraços a todos!
EU estava pensando em criar uma classe para isso, creio que o xan já vez isso!
>
EU estava pensando em criar uma classe para isso, creio que o xan já vez isso!
Procurei nos tópicos dele mas não conseguí encontrar... mandei e-mail pra ele solicitando apoio.
abraços!
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
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.
Nossa Ted! maravilhoso este script véi! acabou de me quebrar um galho enorme aqui! valew cara!
Nota 10!
[]'s