Ir para conteúdo

POWERED BY:

Arquivado

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

Rodrigo Loures

[Resolvido] Problemas Paginação em ASP m!

Recommended Posts

Bom dia a todos! Gostaria de saber se alguém pode me ajudar? Criei um código de paginação em asp que retorne os dados de uma tabela criada no banco MySql. Mas o código que criei está retornando apenas a primeira página e quando clico em no link próxima ele diz que não existem mais produtos cadastrados, o que não é verdade. Alguém sabe como resolver esse problema? Abaixo segue o código:

 

<!--#include file = "conexaoMySql.asp"-->
<!-- #include file = "adovbs.inc" -->
<%
	'Declaração de variáveis'
	dim nome
	dim categoria
	dim fabricante
	dim modelo
	dim preco
	dim imagem
	dim descricao
	dim sqlPesqProduto
	dim conexao
	dim pesquisa
	dim intpagina
	dim intrec
	dim tam
	
	'Início da sub'	
	sub Pesquisar()
	
	'Aqui as variáveis da tabela produto estão recebendo o valor digitado pelo usuário em cada campo'
	categoria = Request.Form("categoria")
	fabricante = Request.Form("fabricante")
	descricao = Request.Form("descricao")
	
	'Criando o objeto recordset'
	set pesquisa = Server.CreateObject("adodb.recordset")
	
	
	'Aqui a variável está recebendo a query SQL de consulta na tabela produto'
	sqlPesqProduto = "SELECT  imagem, nome, fabricante, modelo, preco FROM produto "
	sqlPesqProduto = sqlPesqProduto & "WHERE categoria='"&categoria& "' AND fabricante='"&fabricante&"' AND descricao LIKE '%"&descricao&"%'"
	
	'Executando o comando SQL'
	set pesquisa = conexao.Execute(sqlPesqProduto)

	'Definindo quantos registros serão exibidos por página'
	pesquisa.Pagesize = 1

	if(pesquisa.EOF) then
		Response.Write("Não existem produtos")
		Response.End 'finalização da página'
	else
		'Definindo a página que o visitante está'
		if (Request.QueryString("pagina")="") then
			intpagina = 1
			
		else 
			if (CInt(Request.QueryString("pagina")) < 1) then
				intpagina = 1
			else
				if (CInt(Request.QueryString("pagina")) > pesquisa.PageCount) then
					intpagina = pesquisa.PageCount
				else
					intpagina = Request.QueryString("pagina")
				End if
			End if
		End if
	End if
	
	'Indicando em que página o sistema está'
	pesquisa.AbsolutePage = intpagina
	'Iniciando o contador que controla os registros mostrados'
	intrec=0
	'Este loop acontece enquanto o contador for menor que a quantidade de registros mostrados'
	while (intrec < pesquisa.Pagesize and not pesquisa.EOF)
		Response.Write (pesquisa("imagem") & "-" & pesquisa("nome") & "<BR/>")
		pesquisa.MoveNext
		intrec = intrec + 1
		if pesquisa.EOF then
			Response.Write (" ")
		End if
	Wend
	if (intpagina > 1) then
	%>
		<a href="pesquisaProduto.asp?pagina=<%=intpagina-1%>">Anterior</a>
	<%
	End if
	if strcomp(intpagina,pesquisa.pageCount) <> 0 then
	%>
		<a href="pesquisaProduto.asp?pagina=<%=intpagina+1%>">Próxima</a>
	<%
	End if
	End sub
	'chamada a sub inserção'
	call Pesquisar()
	
	'Caso haja algum erro será exibido'
	
	if (err.number <> 0) then
		
		Response.Write(err.description)
		
	end if
	%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum erro ??

da uma pesquisada no fórum que existe varios

exemplos, pode te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitua seus Request.Form por simplesmente Request, com isso independerá se vem via POST ou via QueryString.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só utilizar Request.QueryString ao invés de Request.Form.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troquei o request,form pelo request.queryString e fica pior aindaimeira página de resultados mostra direto que não existem produtos cadastrados. Quando coloco somente request o código faz a mesma coisa, exibe só a primeira página de resultados e quando clico em próxima mostra que não existem mais produtos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora, como estão os links para as páginas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Salgado..

Pela sua dica observei que os links estavam errados e fiz a seguinte modificação:

if (intpagina > 1) then
	%>
		<a href="pesquisaProduto.asp?pagina=<%=intpagina-1%>&categoria=<%=categoria%>&descricao=<%=descricao%>&fabricante=<%=fabricante%>">Anterior</a>
	<%
	End if
	if strcomp(intpagina,pesquisa.pageCount) <> 0 then
	%>
		<a href="pesquisaProduto.asp?pagina=<%=intpagina+1%>&categoria=<%=categoria%>&descricao=<%=descricao%>&fabricante=<%=fabricante%>">Próxima</a>
	<%
	End if

agora está funcionando perfeitamente.

 

Agradeço a todos que me ajudaram a solucionar esse problema.. Valeu galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta este código

 

<%
'Abrimos a Conexão com o Banco
Dim caminho
Dim conexao 
caminho = Server.MapPath("produtos.mdb")
Set conexao = Server.CreateObject("ADODB.Connection")
conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&caminho&";"

		'Selecionamos todos os Produtos da Tabela
Set rsBuscaProdutos = Server.CreateObject("ADODB.Recordset")
strBuscaProdutos = "SELECT * FROM TProdutos ORDER BY Produto_ID"
		rsBuscaProdutos.open strBuscaProdutos, conexao, 3, 3

'Definimos o Numero de Paginas com a propriedade "PageSize" do objeto Recordset
rsBuscaProdutos.PageSize = 10

'Criamos as Validações
if rsBuscaProdutos.eof then
   Mensagem = "Nenhum Registro Encontrado"
   Response.End 
else
   'Definimos em qual pagina o visitante está
   if Request.QueryString("pagina")="" then 
	  intpagina = 1
   else
	  if cint(Request.QueryString("pagina"))<1 then
intpagina = 1
	  else
if cint(Request.QueryString("pagina"))>rsBuscaProdutos.PageCount then  
	intpagina = rsBuscaProdutos.PageCount
		 else
	intpagina = Request.QueryString("pagina")
end if
	  end if	
   end if   
		end if
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Tutorial de Paginação</title>
<style>
/*
Criei estas CSSs somente para melhorar o 
layout da Tabela de Paginação. Vocês podem modificar
ao seus gostos... usem e abusem...:)
*/
.TProdutos{
border: 1px solid #666666;
margin: 2px 0px 2px 0px;
background: #FFFFFF;
border-collapse:collapse;
width: 800px;
}

.TProdutos td {
border: 0px solid #666666;
border-collapse:collapse;
}

.TProdutos td#Titulo {
border: 0px solid #666666;
font: 7pt Verdana, Arial, Helvetica;
height: 17px;
background: #063d97;
color:#FFFFFF;
}

.TProdutos td#Dados {
border: 1px solid #CCCCCC;
font: 7pt Verdana, Arial, Helvetica;
height: 18px;
background: #EAEFFF;
color: #666666;
}
</style>
</head>
<body>
<table border="0" class="TProdutos">
  <tr>
	<td width="181" id="Titulo">Produto ID</td>
	<td width="208" id="Titulo">Nome</td>
	<td width="201" id="Titulo">Tipo</td>
	<td width="190" id="Titulo">Categoria</td>
  </tr>
  <%
   'Iniciamos o Loop
	rsBuscaProdutos.AbsolutePage = intpagina 
	intrec = 0
	While intrec<rsBuscaProdutos.PageSize and not rsBuscaProdutos.eof  
  %>
  <tr>
	<td id="Dados"><%=rsBuscaProdutos("Produto_ID")%></td>
	<td id="Dados"><%=rsBuscaProdutos("Produro_Nome")%></td>
	<td id="Dados"><%=rsBuscaProdutos("Protudo_Tipo")%></td>
	<td id="Dados"><%=rsBuscaProdutos("Produto_Categoria")%></td>
  </tr>
  <%
	rsBuscaProdutos.MoveNext
	intrec = intrec + 1
	if rsBuscaProdutos.eof then 
	   response.write " " 
	end if   
	Wend  
  %>
  <tr>
	<td colspan="3"  id="Dados"></td>
	<td id="Dados">
	<% 
	'Criamos as Validações para a navegação "Anterior" e "Próximo"  
	if intpagina>1 then 
	%> 
	<a href="paginacao.asp?pagina=<%=intpagina-1%>">Anterior</a> 
	<% 
	end if
	if StrComp(intpagina,rsBuscaProdutos.PageCount)<>0 then   
	%>
	<a href="paginacao.asp?pagina=<%=intpagina + 1%>">Próximo</a>  
	<%
	end if
	rsBuscaProdutos.close
	Set rsBuscaProdutos = Nothing
	%>
	</td>
  </tr>  
</table>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom que pudemos ajudar.

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.