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.