Ir para conteúdo

POWERED BY:

Arquivado

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

F-gos

produtos relacionados

Recommended Posts

Pessoal boa tarde!!!Seguinte estou criando um sistema de catalogo de produtos e ja esta funcionando corretamente com os produtos cadastrados e tals... mas agora surgiu a necessidade de fazer produtos relacionados tipo quando clica em ver detalhes de um produto, na pagina de detalhes aparecem outros 3 produtos que será relacionado a aquele produtos no detalhe. deu para entender?Como posso fazer para implantar esse processo ja que tenho tudo pronto e funcionando.. os cadastros de produtos.. o banco mysql etals???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma idéia:

TABLE produto_relacionado

id_produto INT, id_produto_relacionado INT

 

:lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

william bom dia! cara eu até pensei em fazer dessa forma mas não tenho muita experiencia com o php.você poderia me orientar como fazer..tipo.. crio a tabela... como relacionar no cadastro pra salvar na tabela e prncipalmente como ler a tabela e pegar os resultados.. só me passe +- os caminhos a seguir que me viro por aqui.. se tiver um topico ja ajuda.OK! fico no aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho melhor você fazer:

 

- Uma tabela com as categorias dos produtos (camiseta, sapato, bermuda, televisão, microondas...)

- Um campo extra na tabela de produtos que indique a categoria à qual o item pertence.

 

Então, quando buscar as informações para listar os detalhes de um produto, resgate também esse campo da categoria e faça uma busca limitada (LIMIT) e aleatória (RAND) na tabela de produtos quando combinarem (WHERE) esses ID's.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho melhor você fazer:

 

- Uma tabela com as categorias dos produtos (camiseta, sapato, bermuda, televisão, microondas...)

- Um campo extra na tabela de produtos que indique a categoria à qual o item pertence.

 

Então, quando buscar as informações para listar os detalhes de um produto, resgate também esse campo da categoria e faça uma busca limitada (LIMIT) e aleatória (RAND) na tabela de produtos quando combinarem (WHERE) esses ID's.

 

 

Bruno o problema é que não poderá ser randomico o negócio.. os produtos são jóias folheadas então cada peça terá seus itens relacionados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Uma tabela com as categorias dos produtos (camiseta, sapato, bermuda, televisão, microondas...)

 

Tags ;)

 

Bruno o problema é que não poderá ser randomico o negócio.. os produtos são jóias folheadas então cada peça terá seus itens relacionados.

 

A aleatoriedade é para o caso de poder listar um máximo de 5 produtos mas existirem 50 relacionados.

 

Quem deve trabalhar os filtros são as tags. Quanto mais baterem, mais relacionados os produtos estão, ex:

 

- Jóias

- Semi-jóias

- banhadas

- folheadas

- prata

- ouro

- 24K

- 18K

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

- Uma tabela com as categorias dos produtos (camiseta, sapato, bermuda, televisão, microondas...)

 

Tags ;)

 

Bruno o problema é que não poderá ser randomico o negócio.. os produtos são jóias folheadas então cada peça terá seus itens relacionados.

 

A aleatoriedade é para o caso de poder listar um máximo de 5 produtos mas existirem 50 relacionados.

 

Quem deve trabalhar os filtros são as tags. Quanto mais baterem, mais relacionados os produtos estão, ex:

 

- Jóias

- Semi-jóias

- banhadas

- folheadas

- prata

- ouro

- 24K

- 18K

Pois é, assim fica melhor, porém, creio que seja um pouco mais complicado para ele fazer, já que disse que não possui experiência em PHP.

Mas realmente é o jeito mais elegante.

 

Da maneira citada pelo William, abaixo, é como a maioria faria.

É como eu faria se tempo fosse o problema relacionado à dificuldade.

 

Uma idéia:

TABLE produto_relacionado

id_produto INT, id_produto_relacionado INT

 

:lol:

 

Agora depende de você, F-gos, decidir por qual caminho irá seguir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal como ja tenho o sistema meio q pronto.... o melhor a fazer é seguir a formula do william Uma idéia:TABLE produto_relacionadoid_produto INT, id_produto_relacionado INTsó preciso saber como proceder no cadastro pra gravar no banco e como ler as infos da tabela para exibir os itens relacionados.se alguem tiver um tutorial... ou algum exemplo pareciso .. eu sigo aqui.. OK! Obrigado pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

checkbox cara...

 

no formulário de produto, você lista os outros produtos através de checkboxs..

ai o cara marca os produtos que ele quiser relacionar aqueles.

 

trabalhando com arrays

<input type="checkbox" name="produto_relacionado[]" value="15" />
<input type="checkbox" name="produto_relacionado[]" value="7" />

onde o value, é o ID dos outros produtos

 

com isso, basta um foreach(), pelo array $_POST['produto_relacionado'], inserindo linha por linha na tabela: `produto_relacionado`

cada produto, terá várias linhas para ele.

 

Ou seja, se o produto de id=1, tiver os produtos, 3, 15 e 7 relacionados, você terá na tua tabela algo assim:

TABLE produto_relacionado

id_produto INT, id_produto_relacionado INT

1 , 3

1, 15

1, 7

 

entendeu ?

com isso, você ganha uma flexibilidade (talvez desnecessária), te atrelar o 1 ao 3, mas não o 3 ao 1. (exemplo)

Compartilhar este post


Link para o post
Compartilhar em outros sites

william bruno.. beleza eu ja tenho os dados gravados no banco e talsss igaul você mostrou no exemplo... agora preciso exibir os itens relacionados na pagina de detalhes do produto e tbm criar uma pagina para excluir os relacionados tipo excluir apenas 1 por vez.

 

como ler a tabela de relacioandos e exibir os itens??

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora você faz um JOIN entre a de produtos, e a de relacionamento.

 

e faz um WHERE id_produto = produto_que_está_sendo_exibido

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara você pode me explicar como fazer i join... eu to lendo uns artigos sobre isso aqui mas até agora não entendi como fazer o join??

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT * FROM produto 
INNER JOIN produto_relacionado 
ON produto.id = produto_relacionado.id_produto 
WHERE produto.id = 2

vai mostrar todos os produtos relacionados com o produto de id=2

 

entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

william beleza então meu select fica assim:

 

SELECT * FROM produtos INNER JOIN produto_relacionado ON produtos.ID_Produto = produto_relacionado.id_relacionado

WHERE produtos.ID_Produto = $_GET['$ID_Produto'];";

 

correto..

 

 

dessa mesma forma eu posso usar o comando para excluir 1 item dos relacionados???

Compartilhar este post


Link para o post
Compartilhar em outros sites

qndo você for excluir, deve excluir da tabela produto_relacionado

 

DELETE FROM produto_relacionado WHERE id_produto_relacionado = 15 AND id_produto = 2
vai excluir a relação que o produto 15 tinha com o produto 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

correto..... cara to tentando montar aqui a exibição dos dados utilizando o select que você me passou mas não to conseguindo fazer... se pode dar uma força... ja aproveitando a sua boa vontade...

 

Tenho que exibir o cogido e a foto do produto relacionado..

 

minha tabela de produtos ta assim:

 

ID_Produto

Codigo

Descricao

Descricao_en

Descricao_es

Valor1

Valor2

Foto_P

Foto_G

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca o codigo php da tua tentativa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente toda essa complicação para que??

Criar outra tabela?

usar um select soh?

 

cara, falo por experiencia própria, o melhor é criar uma tabela CATEGORIAS e fazer o relacionamento com a tabela PRODUTOS;

 

 

supondo que você passe o codigo do produto a ser exibido via url

 

1) pegar os dados do produto a ser exibido:

 

$id = $_GET["id"];


sql = "SELECT * FROM produtos WHERE id_produto = " . $id;

$produto = mysql_fetch_array( mysql_query($sql) );

 

2) uma vez com os dados do produto nas mãos, você pode fazer outro select e pegar outros produtos da mesma categoria:


$limite = 3;

$sql2 = "SELECT * FROM produtos WHERE categoria = " . $produto["categoria"] . " ORDER BY RAND()  LIMIT  " . $limite;

$res = mysql_query($sql2);

 

 

pronto, agora a variável $res contem os produtos relacionados ao produto que está sendo exibido.

 

 

abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

william bom dia... estou postando meu codigo para analise.... dessa forma não consegui listar os produtos relacioandos:

 


<?php 
$SQL="SELECT * FROM produtos INNER JOIN produto_relacionado ON produtos.ID_Produto = produto_relacionado.id_relacionado 
WHERE produtos.ID_Produto=".$_GET["$ID_Produto"];

mysql_query($SQL);

$resultado = mysql_query($SQL); 
$linhas = mysql_num_rows($resultado);

 

?>
  <table width="500" border="1">
	<?php
  for($x=0; $x<$linhas;$x++){
  $id=mysql_result($resultado,$x,"ID_Produto"); 
  $relacionado=mysql_result($resultado,$x,"id_relacionado");
  ?>
	<tr>
  	<td><?php echo $relacionado; ?></td>
  	<td width="18%"><div align="center"><a href="listagem_relacionado.php?id_relacionado=<?php echo $relacionado; // ?>" target="_parent">excluir</a></div></td>
	</tr>
	<?php
  }
  
  
  ?>

mas ainda depois de listar os relacioandos eu precisaria ir na tabela de produtos e buscar o nome e codigo dos relacioandos para exibir tbm....

 

ou tentar o exemplo que o amigo carlos sugeriu..

 

 

 

 

william / carlos...

 

<?php 

$SQL = "SELECT * FROM produtos WHERE ID_Produto = " . $ID_Produto; 
 
$produto = mysql_fetch_array( mysql_query($SQL) );


//
$limite = 10; 
 
$sql2 = "SELECT * FROM produto_relacionado WHERE ID_Produto = " . $produto["ID_Produto"] . " ORDER BY RAND()  LIMIT  " . $limite; 
 
$resultado = mysql_query($sql2);
$linhas = mysql_num_rows($resultado);


?>
  <table width="500" border="1">
	<?php
  for($x=0; $x<$linhas;$x++){
  $id=mysql_result($resultado,$x,"ID_Produto"); 
  $relacionado=mysql_result($resultado,$x,"id_relacionado");
  ?>
	<tr>
  	<td><?php echo $relacionado; ?></td>
  	<td width="18%"><div align="center"><a href="pro_relacionar.php?id_relacionado=<?php echo $relacionado; // ?>" target="_parent">excluir</a></div></td>
	</tr>
	<?php
  }
  
  
  ?>


OK! consegui exibir os dados com o codigo que o carlos passou.. mas esta exibindo apenas os IDs dos relacioandos... eu preciso exibir o codigo e se possivel a imagem do produto..

ai eu terei que fazer uma outra consulta na tabela de produtos com os resultados de relacioandos??????

Compartilhar este post


Link para o post
Compartilhar em outros sites

não.. vamos com calma..

 

categoria não é a mesma coisa que 'relacionados'.

 

digamos que eu tenha o pó de café, cafeteira.

o café tá na categoria grãos, e outro na categoria eletrodomésticos.

 

são categorias completamente diferentes, porém são produtos relacionados.

por isso que a metodologia do RAND(), e pesquisando por 'categoria', não se aplica corretamente na solução desse tipo de problema.

 

@F-gos, execute assim:

<?php

	//cadê a conexão com o banco de dados ?
	echo '<pre>';
	var_dump( $_GET );
	echo '</pre>';
	
	
	$id_produto = (int)$_GET['id_produto'];
	$sql="SELECT * FROM produtos 
		INNER JOIN produto_relacionado 
		ON produtos.ID_Produto = produto_relacionado.id_relacionado 
		WHERE produtos.ID_Produto={$id_produto}";

	echo $sql, '<br />';
	
	$query = mysql_query( $sql ) or die( mysql_error() );
	
	echo '<table width="500" border="1">';
	while( $dados = mysql_fetch_assoc( $query ) )
	{
		echo '<tr>
				<td>'.$dados['id_relacionado'].'</td>
				<td width="18%"><div align="center"><a href="listagem_relacionado.php?id_relacionado='.$dados['id_relacionado'].'" target="_parent">excluir</a></div></td>
			</tr>';
	}
	echo '</table>';

  

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.