Ir para conteúdo

POWERED BY:

Arquivado

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

dedindol

Paginação em ASP com banco de dados MYSQL

Recommended Posts

E ae galera,

 

se alguem ja tentou fazer um arquivo que tenha paginação em ASP com banco de dados MYSQL e teve problemas por que não há suporte para a propriedade AbsolutePage, aí vai um código prontinho que funciona:

 

<!--#Include File="arquivo_de_conexao.asp"-->

<%

Call AbreConn()

'pega a pagina atual
pagina = request.ServerVariables("SCRIPT_NAME")

'numero de registros por pagina...
pageSize = 1

if(len(Request.QueryString("p")) = 0 )then
  paginaAtual = 1
else
  paginaAtual = CInt(Request.QueryString("p"))
end if

' conta o numero de registros...
sql = "SELECT COUNT(*) AS total FROM nome_da_tabela"
set rs = conn.execute(sql)

'total de registros
recordCount = Cint(rs("total"))

'calculamos o numero de paginas...

pageCount = Clng(recordCount / pageSize)

If pageCount < 1 then
pageCount = 1
end if

rs.Close()


Flag1 = INT(paginaAtual / pagesize)

PI = INT(Flag1 * pagesize)

IF PI = 0 THEN
PI = 1
END IF
PF = PI + pagesize - 1

' selecionamos os registros...
sql = "SELECT * FROM nome_da_tabela LIMIT " & (paginaAtual - 1) * pageSize & " , " & pageSize

set rs = conn.execute(sql)
	  
do while not rs.eof
' aqui entra o q você quer exibir
  Response.Write rs("nome_do_primeiro_campo") &" - "& rs("nome_do_segundo_campo") & "<br>"
  rs.MoveNext()
loop

rs.Close()
set rs = nothing
Call FechaConn()
set conn = nothing

Response.Write ("<B><strong> Página " & paginaAtual & " de " & pagecount & " </strong></B><br>")
' cria os links de pagians...
IF CInt(paginaAtual) > 1 THEN
Response.Write "<a href='"&pagina&"?p=1'>Primeira</a> "
Else
Response.Write "<font color=""#ADADAD"">Primeira</font> "
END IF

if CInt(paginaAtual) > 1 then
Response.Write "<a href='"&pagina&"?p=" & paginaAtual - 1 &"'>Anterior</a> "
Else
Response.Write "<font color='#666666'>Anterior</font>  "
END IF

for i=1 to pageCount
  Response.Write("<a href='"&pagina&"?p=" & i & "'>" & i & "</a> ")
next
  

IF (CInt(paginaAtual) < pagecount) THEN
	 IF CInt(PF) <> pagecount THEN
   Response.Write "<a href='"&pagina&"?p=" & paginaAtual+1 & "'>Próxima</a> "
  END IF
Else
  Response.Write "<font color=""#ADADAD"">Próxima</font> "
END IF


IF (CInt(paginaAtual) <> pagecount) THEN
	 IF CInt(PF) <> pagecount THEN
   Response.Write "<a href='"&pagina&"?p=" & pagecount & "'>Última</a> "
  END IF
Else
  Response.Write "<font color=""#ADADAD"">Última</font> "
  END IF
  
%>

Abaixo está o arquivo que faz a conexão com o banco "arquivo_de_conexao.asp"

 

<%
dim conn

Sub AbreConn()

Set conn = Server.CreateObject("ADODB.Connection") 

conn.Open = "Driver={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Nome_do_banco; UID=seu_usuario; PWD=sua_senha;" 

End Sub


Sub FechaConn()

conn.Close()
Set conn = Nothing

End Sub

%>

Espero que seja útil.

 

abraços a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza é util sim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte estou com o seguinte problema a primeira página está abrindo normal mas as outras páginas aparece um erro e fala que a página não pode ser encontrada!! alguém pode me ajudar aí?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte estou com o seguinte problema a primeira página está abrindo normal mas as outras páginas aparece um erro e fala que a página não pode ser encontrada!! alguém pode me ajudar aí?

Cria um tópico no Fórum principal e poste seu código para analisarmos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não está apresentando os dados da última página.

É só somar 1 nos links abaixo assinalados:

 

 

 

E ae galera,

 

se alguem ja tentou fazer um arquivo que tenha paginação em ASP com banco de dados MYSQL e teve problemas por que não há suporte para a propriedade AbsolutePage, aí vai um código prontinho que funciona:

 

<!--#Include File="arquivo_de_conexao.asp"-->

<%

Call AbreConn()

'pega a pagina atual
pagina = request.ServerVariables("SCRIPT_NAME")

'numero de registros por pagina...
pageSize = 1

if(len(Request.QueryString("p")) = 0 )then
  paginaAtual = 1
else
  paginaAtual = CInt(Request.QueryString("p"))
end if

' conta o numero de registros...
sql = "SELECT COUNT(*) AS total FROM nome_da_tabela"
set rs = conn.execute(sql)

'total de registros
recordCount = Cint(rs("total"))

'calculamos o numero de paginas...

pageCount = Clng(recordCount / pageSize)

If pageCount < 1 then
pageCount = 1
end if

rs.Close()


Flag1 = INT(paginaAtual / pagesize)

PI = INT(Flag1 * pagesize)

IF PI = 0 THEN
PI = 1
END IF
PF = PI + pagesize - 1

' selecionamos os registros...
sql = "SELECT * FROM nome_da_tabela LIMIT " & (paginaAtual - 1) * pageSize & " , " & pageSize

set rs = conn.execute(sql)
	  
do while not rs.eof
' aqui entra o q você quer exibir
  Response.Write rs("nome_do_primeiro_campo") &" - "& rs("nome_do_segundo_campo") & "<br>"
  rs.MoveNext()
loop

rs.Close()
set rs = nothing
Call FechaConn()
set conn = nothing

Response.Write ("<B><strong> Página " & paginaAtual & " de " & pagecount & " </strong></B><br>")
' cria os links de pagians...
IF CInt(paginaAtual) > 1 THEN
Response.Write "<a href='"&pagina&"?p=1'>Primeira</a> "
Else
Response.Write "<font color=""#ADADAD"">Primeira</font> "
END IF

if CInt(paginaAtual) > 1 then
Response.Write "<a href='"&pagina&"?p=" & paginaAtual - 1 &"'>Anterior</a> "
Else
Response.Write "<font color='#666666'>Anterior</font>  "
END IF

for i=1 to pageCount [color="#FF0000"][/color] + 1
  Response.Write("<a href='"&pagina&"?p=" & i & "'>" & i & "</a> ")
next
  

IF (CInt(paginaAtual) < pagecount +1) THEN
	 IF CInt(PF) <> pagecount +1 THEN
   Response.Write "<a href='"&pagina&"?p=" & paginaAtual+1 & "'>Próxima</a> "
  END IF
Else
  Response.Write "<font color=""#ADADAD"">Próxima</font> "
END IF

'[color="#FF0000"][/color] alterei as duas linhas abaixo para pagecount + 1
IF (CInt(paginaAtual) <> pagecount +1) THEN
	 IF CInt(PF) <> pagecount +1 THEN
   Response.Write "<a href='"&pagina&"?p=" & pagecount +1 & "'>Última</a> "
  END IF
Else
  Response.Write "<font color=""#ADADAD"">Última</font> "
  END IF
  
%>

Abaixo está o arquivo que faz a conexão com o banco "arquivo_de_conexao.asp"

 

<%
dim conn

Sub AbreConn()

Set conn = Server.CreateObject("ADODB.Connection") 

conn.Open = "Driver={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Nome_do_banco; UID=seu_usuario; PWD=sua_senha;" 

End Sub


Sub FechaConn()

conn.Close()
Set conn = Nothing

End Sub

%>

Espero que seja útil.

 

abraços a todos

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, sei que este tópico é antigo, mas vou interagir assim mesmo, com uma solução simples, mas que resolveu este problema da última página, sem o risco de somar mais um e, na verdade, esta última não existir. Na verdade este problema acontece porque o sistema divide o número de registros por página pela quantidade de registros, e o resultado pode dar um número quebrado, com alguns decimais que o sistema está arredondando. Exemplo: se o resultado for 10,44 o sistema arredonda para 10. Se for 10,65 ele arredonda para 11. Isto é complicado, porque se o sistema arredondar para mais e eu ainda somar mais 1 página no último registro, esta página na verdade não existirá. Desta forma, fiz uma pequena modificação, e não mexi nos links ao final do código. Ficou desta forma:

 

recordCount = Cint(rs("total"))

pageCount = formatNumber(recordCount/pageSize,2)

if cint(right(pageCount,2))>0 then pageCount=formatNumber(pageCount+1,0) else pageCount=formatNumber(pageCount,0) end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega, o pageCount está sendo usado. Veja novamente.

pq não usa rs.pageCount???

 

é justamente ai que roda a paginação

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta certo disso?

 

encontre a linha e de quote em .pageCount - pois eu não achei

 

pageCount = 1+1 não é rs.pageCount

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.