Jump to content


Photo

Exibir Mesmo Produto Em Várias Categorias


  • Faça o login para participar
1 reply to this topic

#1 Marcio Leandro

Marcio Leandro

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Masculino
  • Localidade:Viana

Posted 06/02/2010, 13:12

Olá pessoal, tenho um pequeno grande problema aqui.
No meu banco de dados um único produto precisa ter 3 categorias diferente.
EX: A Super Cola 114 faz parte da categoria 2, 13 0, onde 2 é da linha automotiva, o 13 e da linha de construção civil e ZERO é sem categoria.

Preciso dar o loop exibindo apenas os produtos de uma determinada categoria.
EX: Quando eu clicar na categoria AUTOMOTIVA, exiba todos os produtos da categoria AUTOMOTIVA.
Segue abaixo os comandos que estava usando para uma única categoria.


AQUI EU SELECIONAVA A CATEGORIA DESEJADA
dim busca
busca = ("3")

Set objRS = Server.CreateObject("ADODB.Recordset") 'acrescentei por causa da paginação
SQL = "SELECT * FROM Produtos WHERE CodCategoria LIKE '"&busca&"'" ''%"&busca&"%'" Sem os % busca exata.

AQUI O LOOP EXIBINDO 3 REGISTROS POR COLUNA
<%
i = 1 
do While Not objRS.EOF AND x < objRS.PageSize
x = x + 1


  dim foto, foto2, nome
  nome =objRS("Nome")
  foto =objRS("Foto")
  foto2 = "<img src="+"fotos_Produtos/"+foto+" alt="+nome+" width="+"80"+" height="+"80"+">"

%>
  
<td>
  
   <table width="153" border="0" cellspacing="0" cellpadding="0" bordercolor="#E4FCDA">  	
    <tr>
      <td width="200" height="100%"><div align="center"><%response.Write(foto2)%></div></td>
    </tr>
    <tr>
      <td width="200" height="60"><div align="center"><a href="Detalhe_produto.asp?id=<%=objRS("Codproduto")%>"><%response.Write(nome)%></a></div></td>
    </tr>
  </table>
  

  <hr>           
  </td>	

  <%
'Define quantidade de colunas
If i = 3 Then 'O "3" Define a quantidade de COLUNAS a ser exibido na tabela 
i = 0 
Response.Write "</TR><TR>" 
End If 
%>
<%
i = i + 1 
objRS.MoveNext
Loop 
%>

AGORA PRECISO INCLUIR OS COMANDOS PARA SEPARAR AS CATEGORIAS, JÁ TENTEI ISSO ABAIXO.
SELECIONA TODOS OS PRODUTOS DA TBELA
Set objRS = Server.CreateObject("ADODB.Recordset") 'acrescentei por causa da pagina&ccedil;&atilde;o
SQL = "SELECT * FROM Produtos"

AGORA O LOOP...
<%
i = 1 
do While Not objRS.EOF AND x < objRS.PageSize
x = x + 1

  dim foto, foto2, nome
  nome =objRS("Nome")
  foto =objRS("Foto")
  foto2 = "<img src="+"fotos_Produtos/"+foto+" alt="+nome+" width="+"80"+" height="+"80"+">"

%>
  
<td>
  <% if objRS("CodCategoria") = 2 then %>
   <table width="153" border="0" cellspacing="0" cellpadding="0" bordercolor="#E4FCDA">  	
    <tr>
      <td width="200" height="100%"><div align="center"><%response.Write(foto2)%></div></td>
    </tr>
    <tr>
      <td width="200" height="60"><div align="center"><a href="Detalhe_produto.asp?id=<%=objRS("Codproduto")%>"><%response.Write(nome)%></a></div></td>
    </tr>
  </table>  
<% if objRS("CodCategoria2") = 2 then %>
   <table width="153" border="0" cellspacing="0" cellpadding="0" bordercolor="#E4FCDA">  	
    <tr>
      <td width="200" height="100%"><div align="center"><%response.Write(foto2)%></div></td>
    </tr>
    <tr>
      <td width="200" height="60"><div align="center"><a href="Detalhe_produto.asp?id=<%=objRS("Codproduto")%>"><%response.Write(nome)%></a></div></td>
    </tr>
  </table> 
  <% if objRS("CodCategoria3") = 2 then %>
   <table width="153" border="0" cellspacing="0" cellpadding="0" bordercolor="#E4FCDA">  	
    <tr>
      <td width="200" height="100%"><div align="center"><%response.Write(foto2)%></div></td>
    </tr>
    <tr>
      <td width="200" height="60"><div align="center"><a href="Detalhe_produto.asp?id=<%=objRS("Codproduto")%>"><%response.Write(nome)%></a></div></td>
    </tr>
  </table>

  <hr>           
  </td>
<%end if%>
<%end if%>
<%end if%>	

<%
'Define quantidade de colunas
If i = 3 Then 'O "3" Define a quantidade de COLUNAS a ser exibido na tabela 
i = 0 
Response.Write "</TR><TR>" 
End If 
%>
  
<%
i = i + 1 
objRS.MoveNext
Loop 
%>

Isso não funcionaou direito
Quem poder me ajudar eu agradeço.
Visite o site em questão: www.ecovendas.com
Obrigado

Olá, tudo resolvido
Mantive os comandos originais e alterei apenas a instrução SQL para:
SQL = "SELECT * FROM Produtos WHERE (((Produtos.CodCategoria)=2)) or (((Produtos.CodCategoria2)=2)) or (((Produtos.CodCategoria3)=2)) ORDER BY Produtos.Codproduto"

Até +
Site em questão: www.ecovendas.com

Edição feita por: Renan L. Queiroz, 05/02/2010, 13:37.
Inclusão da tag [ code ] para postagem de scripts


#2 JurisCode

JurisCode

    Mestre

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Paraná

Posted 06/02/2010, 14:43

eu vou usar essa mesma tecnologia no ditados, porque tem frases que são atravessadas em diversas categorias.
o que eu vou usar é bem simples, ja testei e deu certo.

tabela de produtos
id | nome | valor | Categorias
001| cola |R$ 0,50| categoria 1, categoria 2, categoria 3,|

tabela de categorias
categoria 1
categoria 2
categoria 3
categoria 4
categoria 5

a vírgula vai impedir que interprete produtos de categorias de nomes parecidos como da mesma categoria
SET RECORDSET = CONEXA.EXECUTE("SELECT * FROM tabela_produtos WHERE categoria like '%" & var_categoria & "%' ORDER BY field ASC")

daí se a categoria for a 1, 2 ou 3 vai retornar o valor.

if RECORDSET.EOF THEN
RESPONSE.WRITE "nenhum produto cadastrado nesta categoria"
else
do while not RECORDSET.EOF THEN
%>
id=<%=RECORDSET("ID")%>, produto=<%=RECORDSET("NOME")%>, vlaor=<%=RECORDSET("VALOR")%>
<%
RECORDSET.MOVENEXT
LOOP
END IF
RECORDSET.CLOSE
SET RECORDSET = NOTHING
CONEXAO.CLOSE
SET CONEXAO = NOTHING
%>
é mais uma ques tão de modelagem de dados do que de programação.

Edição feita por: JurisCode, 06/02/2010, 14:45.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq