Ir para conteúdo

POWERED BY:

Arquivado

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

Legionario-rs

[Resolvido] Problema com Paginação

Recommended Posts

Como dividir uma linha de 6 produtos em 2 de 3 produtos e paginar por departamento mostrando os 6 últimos produtos cadastrados no departamento?

Obrigado a todos que puderem ajudar!!!

 

<%
'Abrimos a Conexão com o Banco
Dim caminho
Dim conexao
caminho = Server.MapPath("/banco/loja.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 produtos ORDER BY imagem"
rsBuscaProdutos.open strBuscaProdutos, conexao, 3, 3

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

'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>Paginacao</title>
</head>
<body>
<%
'Iniciamos o Loop
rsBuscaProdutos.AbsolutePage = intpagina
intrec = 0
While intrec<rsBuscaProdutos.PageSize and not rsBuscaProdutos.eof
%>
<center>
<td><table width="100%" border="0" cellpadding="0" cellspacing="3" bgcolor="white">
<tr>
<td bgcolor="white"><table width="100%" border="5" cellspacing="0" cellpadding="0">
<tr>
<td id="imagem"><center><img src=./images/<%=rsBuscaProdutos("imagem")%> width="150" height="150" border=0>
<br>
<font face="verdana" size="2" color="black">
<b>
<%=rsBuscaProdutos("nome")%>
<br>
<font face="verdana" size="2" color="Red">
<%="R$: "%>
<%=rsBuscaProdutos("preço")%>,00
</td>
</tr>
</td>
</table>

<%
rsBuscaProdutos.MoveNext
intrec = intrec + 1
if rsBuscaProdutos.eof then
response.write " "
end if
Wend
%>
<tr>
<td colspan="0" 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%>">Proximo</a>
<%
end if
rsBuscaProdutos.close
Set rsBuscaProdutos = Nothing
%>
</td>
</tr>
</table>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê uma pesquisada por "registros em colunas" no tópico pendurado "Duvidas Freqüentes".

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza Salgado,

Tá virando costume... hehehehehe

Cara não consegui adaptar o código a minha necessidade ou melhor não consegui fazer funcionar...

Espero que possa me ajudar mais uma vez...

Abraço.

 

Bom dia pessoal!!!

Será que alguém por caridade poderia me ajudar na solução deste problema???

Agradeço a todos que puderem!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite,

 

E então agora só falta listar os 6 últimos produtos registrados pois está mostrando sempre o mesmo produto...

Aguardo a quem puder ajudar

Valeu Ted-K

Abraço.

 

<%
'Abrimos a Conexão com o Banco
Dim caminho
Dim conexao
caminho = Server.MapPath("/banco/loja.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 produtos ORDER BY id"
		rsBuscaProdutos.open strBuscaProdutos, conexao, 3, 3

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

'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></title>
</head>
<body>
  <br>
  <font face="verdana" size="2" color="black">
  <b>Confira alguns destaques de nossa loja...
  </font>
<table width="780" border="0" cellspacing="0" cellpadding="0">
  <tr>
<%
for i = 1 to 6
q = q + 1
%>
	<td width="567"><center><img src=./images/<%=rsBuscaProdutos("imagem")%> width="150" height="150" border=0 style="border:0;position:relative; left:12; top:19;"></a><br>
	  <font face="verdana" size="2" color="black"><b>
	  <br><br>
	<%=rsBuscaProdutos("nome")%>
  <font face="verdana" size="2" color="Red">
	<br>
	<%="R$: "%>
	<%=rsBuscaProdutos("preco")%>,00
	<br><br><br><br>
</td>
  <% if q = 3 then %>
  </tr>
<%
q = 0
End If
next
%>
</table>
  <%
   'Iniciamos o Loop
	rsBuscaProdutos.AbsolutePage = intpagina
	intrec = 0
	While intrec<rsBuscaProdutos.PageSize and not rsBuscaProdutos.eof  
  %>

  <%
	rsBuscaProdutos.MoveNext
	intrec = intrec + 1
	if rsBuscaProdutos.eof then
	   response.write " "
	end if   
	Wend  
  %>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo Legionario-rs, você está fazendo muito "up" nos seus tópicos, sempre quando leva tempo de alguem responder você faz isso, desculpa mais nas próximas vezes serei obrigado a fechar seu tópico, vamos aliviar ai, sempre irá aparecer alguem para responder suas dúvidas!

 

vamos agora para essa dúvida

 

no sql coloque, "select top 6.....e por ai vai"...

 

lembre-se, esse for que coloquei foi só de exemplo!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ted-K desculpe pelos up's mas é que meu cliente está me apertando pra terminar o projeto dele então estou meio com pressa, mas mesmo assim vcs não tem nada a ver com isso claro. Mais uma vez peço desculpas.

 

Não entendi o que quis dizer, pode ser mais direto eu sou leigo com sql...

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse seu sql aqui

 

strBuscaProdutos = "SELECT * FROM produtos ORDER BY id"

ai é que você coloca o TOP como te passei acima

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza entendi e já apliquei mas ficou a mesma coisa...

Fiz assim...

 

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

Se estiver errado me avise por favor...

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mesma coisa que você fala é o que? Está listando quantos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo usando TOP 2 ao invés de TOP 6?

 

Se for o caso, cria um contador e faz o seguinte:

While Not rsBuscaProdutos.Eof and (contador <= 2)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continua repetindo os memos 6 produtos todos iguais ele não puxa 6 produtos diferentes e o que você pediu que eu fizesse deu erro de compilação 'wend' esperado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai você vai ter que usar um randomize, use o RAND para isso no final do sql, assim ele traz aleatoriamente, sem repetição

 

----------------------

 

olha os floods amigo, se não entendeu, fala a parte que não entendeu, olha aqui o randomize com o ACCESS:

 

SELECT TOP 6 * FROM produtos ORDER BY Rnd(Int(Now()*[id])-Now()*[id]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Ted k,

 

Não estou entendendo o porque você me chamar a atenção eu somente estou monitorando as respostas e quando elas estão disponíveis eu replico mas não estou pedindo nada somente estou verificando e respondendo se eu estiver errado me corrija e olha que eu estou me contendo pq a minha situação aqui tá complicada pressão em cima de pressão, mas mesmo assim me desculpe novamente.

 

Com relação ao RAND continua aparecendo a mesma coisa os mesmos 6 produtos se repetindo.

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o seu código novamente (da parte que pede para abrir a tabela até o final do loop). Pois se ao menos você tivesse feito um INNER JOIN ou algo parecido, justificaria essa repetição. Mas você busca de apenas uma tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite hargon,

 

Vou postar todo o código então.

 

<%
'Abrimos a Conexão com o Banco
Dim caminho
Dim conexao
caminho = Server.MapPath("/banco/loja.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 TOP 6 * FROM produtos ORDER BY Rnd(Int(Now()*[cat_id])-Now()*[cat_id])"
		rsBuscaProdutos.open strBuscaProdutos, conexao, 3, 3

'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></title>
</head>
<body>
  <br>
  <font face="verdana" size="2" color="black">
  <b>Confira alguns destaques de nossa loja...
  </font>
<table width="780" border="0" cellspacing="0" cellpadding="0">
  <tr>
<%
for i = 1 to 6
q = q + 1
%>
	<td width="567"><center><img src=./images/<%=rsBuscaProdutos("imagem")%> width="150" height="150" border=0 style="border:0;position:relative; left:12; top:19;"></a><br>
	  <font face="verdana" size="2" color="black"><b>
	  <br><br>
	<%=rsBuscaProdutos("nome")%>
	<br>
	<%=rsBuscaProdutos("descricaop")%>
  <font face="verdana" size="2" color="Red">
	<br>
	<%="R$: "%>
	<%=rsBuscaProdutos("preco")%>,00
	<br><br><br><br>
</td>
  <% if q = 3 then %>
  </tr>
<%
q = 0
End If
next
%>
</table>
  <%
   'Iniciamos o Loop
	rsBuscaProdutos.AbsolutePage = intpagina
	intrec = 0
	While intrec<rsBuscaProdutos.PageSize and not rsBuscaProdutos.eof  
  %>

  <%
	rsBuscaProdutos.MoveNext
	intrec = intrec + 1
	if rsBuscaProdutos.eof then
	   response.write " "
	end if  
	Wend  
  %>
</body>
</html>

obrigado pela atenção despendida por todos.

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas aí você complicou... Você fez uma requisição ao banco e parou no primeiro registro?

 

Você deveria ao menos ter utilizado um moveNext dentro do FOR. Mas o ideal é você usar While Not rsBuscaProdutos.Eof no lugar do FOR.

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.