Ir para conteúdo
Fórum Script Brasil
  • 0

Comparacao de produtos


Loko da Web

Pergunta

Bom o cenario e o seguinte, o q estou tentando fazer é uma comparacao entre produtos, dentre suas caracteristicas.

Tenho 3 tabelas:

Nessa tabela e incluido o nome do produto

produtos

id nome

01 TV plasma 70

02 TV lcd 42

03 TV lcd 50

04 TV lcd 32

Nessa tabela e incluido todas as caracteristicas, aonde faco o cadastro das info.

info

id info

01 Compacto

02 Leve

03 HD

04 FULL HD

05 1366x768

06 1920x1080

07 Entrada HDMI

08 DTV

Nessa tabela são cadastrados as info junto ao produto

info_produto

id info id_produto

01 Compacto 04

02 HD 04

03 1366x768 04

04 1920x1080 01

05 FULL HD 01

06 DTV 01

07 1920x1080 03

08 FULL HD 03

Na tabela acima, cm podem ver os produtos que recebem as info:

04 TV lcd 32: Compacto, HD, 1366x768

01 TV plasma 70: 1920x1080, FULL HD, DTV

03 TV lcd 50: 1920x1080, FULL HD 03

Agora a consulta:

<table>
<tr>
<td>
Caracteristicas
</td>
<?      
//Aqui faco o select dos produtos, usando o IN para pegar varios registros
$sql = mysql_query("SELECT * FROM produtos WHERE id IN ($id)") or die (mysql_error());  
while ($rs = mysql_fetch_array($sql)) {
?>
<td>
<table>
<?
//Aqui faco o select da info
$sql_info = mysql_query("SELECT * FROM info ORDER BY info ASC") or die (mysql_error());
while ($rs_info = mysql_fetch_array($sql_info)) {

//Aqui faco o select das info dos produtos usando o IN
$sql_info_prod = mysql_query("SELECT * FROM info_produto WHERE id_produto IN ($id)")or die (mysql_error());                                                                                                                                     
while ($rs_info_prod = mysql_fetch_array($sql_info_prod)) {

//aqui faco a verificacao se o ID do produto e igual ao da info e as info são iguais, mostra o ON
if($rs['id'] == ($rs_info_prod['id_produto']) AND $rs_info['info'] == ($rs_info_prod['info'])) {
echo '<tr><td>';
echo '<img src="on.jpg" alt="" /> '.$rs_info_prod['info'].'';
echo '</td></tr>';
//aqui faco a verificacao caso o ID seja diferente e as info iguais, mostrara o OFF
}elseif ($rs['id'] != ($rs_info_prod['id_produto']) AND $rs_info['info'] == ($rs_info_prod['info'])) {
echo '<tr><td>';
echo '<img src="off.jpg" /> '.$rs_info_prod['info'].'';
echo '</td></tr>';
}
}
}?>     
</table>
</td>
<?}?>
</tr>
</table>

01 ) Um exemplo pegamos o ID: '01','03', sera imprimido dessa maneira:

Caracterisiticas:

01 | 03

ON 1920x1080 | OFF 1920x1080

OFF 1920x1080 | ON 1920x1080

ON FULL HD | OFF FULL HD

OFF FULL HD | ON FULL HD

ON DTV | OFF DTV

02) Agora ID: '03','02'

02 | 03

OFF 1920X1080 | ON 1920X1080

OFF FULL HD | ON FULL HD

03) Agora ID: '04','03','02'

02 | 03 | 04

OFF Compacto | OFF Compacto | ON Compacto

OFF HD | OFF HD | ON HD

OFF FULL HD | On FULL HD | OFF FULL HD

OFF 1366X768 | OFF 1366X768 | ON 1366X768

OFF 1920X1080 | ON 1920X1080 | OFF 1920X1080

Cm podem ver a comparacao numero 02 e 03 ficaram corretas, exceto o numero 01 que repetiu tanto OFF quanto ON.

A ideia e quando um produto tem as mesmas caracteristicas no caso o numero 01, permanecem apenas o ON e não apareca o OFF também.

então peco ajuda d todos pra fazer a condicao IF corretamente.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Acho q não interpretei corretamente a minha situação... Para facilitar o entendimento do meu caso, disponibilizarei imagens.

O caso abaixo e a comparacao entre o ID 3 (TV lcd 50) e 2 (TV lcd 42)

compare32.gif

Como podem ver a comparacao esta correta, pois não repetiu nenhuma info.

O caso abaixo e a comparacao entre o ID 3 (TV lcd 50) e 1 (TV Plasma 70)

compare31.gif

Como podem ver 1920x1080 e o FULL HD repetiu tanto como existe como não existe

A ideia é q fique apenas o existe, e não repita os q não existe....

Mais um caso entre 4, 3 e 1

compare431.gif

Como podem ver 1920x1080 e o FULL HD repetiu tanto como existe como não existe

A ideia e essa:

compare431correto.gif

então, acho o q falta e acertar na CONDICAO DO IF,...

Segue o cod abaixo:

<table border="1">
<tr>
<td>
Caracteristicas
</td>
<?  
$id = "'4','3','1'";
  
//Aqui faco o select dos produtos, usando o IN para pegar varios registros
$sql = mysql_query("SELECT * FROM produto WHERE id IN ($id)") or die (mysql_error());  
while ($rs = mysql_fetch_array($sql)) {
?>
<td>
<table border="1">
<?
//Aqui faco o select da info
$sql_info = mysql_query("SELECT * FROM info ORDER BY info ASC") or die (mysql_error());
while ($rs_info = mysql_fetch_array($sql_info)) {

//Aqui faco o select das info dos produtos usando o IN
$sql_info_prod = mysql_query("SELECT * FROM info_produto WHERE id_produto IN ($id)")or die (mysql_error());                                                                                                                                    
while ($rs_info_prod = mysql_fetch_array($sql_info_prod)) {

//aqui faco a verificacao se o ID do produto e igual ao da info e as info são iguais, mostra o ON
if($rs['id'] == ($rs_info_prod['id_produto']) AND $rs_info['info'] == ($rs_info_prod['info'])) {
echo '<tr><td>';
echo '<b>'.$rs_info_prod['info'].'</b>';
echo '</td></tr>';
//aqui faco a verificacao caso o ID seja diferente e as info iguais, mostrara o OFF
}elseif ($rs['id'] != ($rs_info_prod['id_produto']) AND $rs_info['info'] == ($rs_info_prod['info'])) {
echo '<tr><td>';
echo '<s>'.$rs_info_prod['info'].'</s>';
echo '</td></tr>';
}
}
}?>    
</table>
</td>
<?}?>
</tr>
</table>

Agradeço a ajuda de todos !

Editado por Loko da Web
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...