Jump to content


Photo

Repeticao Na Info


  • Faça o login para participar
2 replies to this topic

#1 Loko da Web

Loko da Web

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 24/08/2010, 22:08

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 sao 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 sao 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 qto ON.

A ideia e quando um produto tem as mesmas caracteristicas no caso o numero 01, permanecem apenas o ON e nao apareca o OFF tbem.

Entao peco ajuda d todos pra fazer a condicao IF corretamente.

#2 Marcel Abreu

Marcel Abreu

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Masculino
  • Localidade:Sertãozinho | SP

Posted 25/08/2010, 10:52

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 sao 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 sao 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 qto ON.

A ideia e quando um produto tem as mesmas caracteristicas no caso o numero 01, permanecem apenas o ON e nao apareca o OFF tbem.

Entao peco ajuda d todos pra fazer a condicao IF corretamente.


Olá Loko da Web,

Na condição "if", para unir duas condições voce tem que usar:

&& // PARA AND

ou

|| // PARA OR

Veja abaixo como ficaria:

<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 sao iguais, mostra o ON
if($rs['id'] == ($rs_info_prod['id_produto']) && $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']) && $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>

Espero ter ajudado.

Um abraço, ;)

#3 Loko da Web

Loko da Web

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 02/09/2010, 22:18

Acho q nao 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)

Posted Image

Como podem ver a comparacao esta correta, pois nao repetiu nenhuma info.

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

Posted Image

Como podem ver 1920x1080 e o FULL HD repetiu tanto como existe como não existe
A ideia é q fique apenas o existe, e nao repita os q nao existe....

Mais um caso entre 4, 3 e 1

Posted Image

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

A ideia e essa:

Posted Image

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

<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 sao iguais, mostra o ON
if($rs['id'] == ($rs_info_prod['id_produto']) && $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']) && $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 !




1 user(s) are reading this topic

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

IPB Skin By Virteq