Pra aparecer todos os opcionais separados por categorias eu fiz assim:
<legend>Opcionais </legend>
<?php
$opc = "SELECT * FROM `veiculos_opcionais` WHERE `veiculo_id`='".intval($_GET['cod'])."'";
$opc = mysql_query($opc, $conexao);
while ( $ropc = mysql_fetch_assoc($opc) ){
$op = "SELECT * FROM `opcionais` WHERE `id`='".$ropc['opcional_id']."'";
$op = mysql_query($op, $conexao);
while ( $rs = mysql_fetch_assoc($op) ){
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' checked='checked' disabled='disabled' />".$rs['descricao']."</label>";
}
}
?>
<p> </p>
<p> </p>
<table width="100%" border="0">
<tr>
<td><?php
$sql = mysql_query("SELECT * FROM opcionais WHERE categoria=\"Segurança\"");
echo "<b>Segurança</b><br />";
while ($rs = mysql_fetch_array($sql)) {
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' />".$rs['descricao']."</label><br/>";
}
?></td>
<td>
<?php
$sql = mysql_query("SELECT * FROM opcionais WHERE categoria=\"Bancos\"");
echo "<b>Bancos</b><br />";
while ($rs = mysql_fetch_array($sql)) {
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' />".$rs['descricao']."</label><br/>";
}
?>
</td>
<td>
<?php
$sql = mysql_query("SELECT * FROM opcionais WHERE categoria=\"Conforto\"");
echo "<b>Conforto</b><br />";
while ($rs = mysql_fetch_array($sql)) {
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' />".$rs['descricao']."</label><br/>";
}
?>
</td>
</tr>
<tr>
<td valign="top"> </td>
<td valign="top"> </td>
<td valign="top"> </td>
</tr>
<tr>
<td valign="top"><?php
$sql = mysql_query("SELECT * FROM opcionais WHERE categoria=\"Janelas\"");
echo "<b>Janelas</b><br />";
while ($rs = mysql_fetch_array($sql)) {
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' />".$rs['descricao']."</label><br/>";
}
?></td>
<td valign="top">
<?php
$sql = mysql_query("SELECT * FROM opcionais WHERE categoria=\"Sistema de Som\"");
echo "<b>Sistema de Som</b><br />";
while ($rs = mysql_fetch_array($sql)) {
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' />".$rs['descricao']."</label><br/>";
}
?>
</td>
<td valign="top">
<?php
$sql = mysql_query("SELECT * FROM opcionais WHERE categoria=\"Outros\"");
echo "<b>Outros</b><br />";
while ($rs = mysql_fetch_array($sql)) {
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' />".$rs['descricao']."</label><br/>";
}
?>
</td>
</tr>
<tr>
<td valign="top"> </td>
<td valign="top"> </td>
<td valign="top"> </td>
</tr>
</table>
<p> </p>
</fieldset>
Pra poder exibir o Opcionais do carro tah assim:
<?php
$opc = "SELECT * FROM `veiculos_opcionais` WHERE `veiculo_id`='".intval($_GET['id'])."'";
$opc = mysql_query($opc, $conexao);
while ( $ropc = mysql_fetch_assoc($opc) ){
$op = "SELECT * FROM `opcionais` WHERE `id`='".$ropc['opcional_id']."'";
$op = mysql_query($op, $conexao);
while ( $rs = mysql_fetch_assoc($op) ){
echo $rs['descricao']." <b>º</b> ";
}
}
?>
//Pra poder aparecer em CheckBox eh soh substituir essa linha
echo $rs['descricao']." <b>º</b> ";
//Por essa
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' disabled='disabled' checked='checked' />".$rs['descricao']."</label>";
Mas eu kero q qnd o user for editar ele apareça a lista completa com os opcionais q foram maarcados no mesmo lugar, soh q checked='checked'. (img 2)
O problema eh q eu não sei como fazer isso.
eu teria q fazer um teste dentro do while pra poder ver se o Item q vai ser exibido está na tabela de relacionamento `veiculos_opcionais`.
Sei lah...
_--------------------------------
Comecei a tentar fazer a rotina....
<?php
$sql = mysql_query("SELECT * FROM opcionais WHERE categoria=\"Segurança\"");
echo "<b>Segurança</b><br />";
while ($rs = mysql_fetch_array($sql)) {
//Faço uma consulta para ver se esse opcional tem q ficar .:: checked ::.
$ifop = "SELECT * FROM `veiculos_opcionais` WHERE `opcional_id`='".$rs['id']."' LIMIT 1";
$ifop = mysql_query($ifop, $conexao);
$rifop = mysql_fetch_assoc($ifop);
//Aqui eu faço a verificação
if ( $rifop['veiculo_id'] == intval($_GET['cod']) ){
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' checked='checked' />".$rs['descricao']."</label><br/>";
}else{
echo "<label><input type='checkbox' name='opcionais[]' value='" . $rs['id'] . "' />".$rs['descricao']."</label><br/>";
}
}
?>
O resultado?
Os checks todos DESMARCADOS
Sei q o erro eh de LÓGICA, mas não sei onde.
Não tem nenhum erro de sintaxe sendo exibido.
Eae? Kem sabe onde estou errando?
-------------------------------------------------------
Consegui Fazer aparecer certo!
Do jeito q eu keria.
Mas agora tem outro problema...
na hora de dar o UPDATE num tah salvando.
Meu update tah assim:
$veiculo_id = intval($_GET['cod']);
foreach ($_POST['opcionais'] as $opcional) {
mysql_query("UPDATE veiculos_opcionais SET `veiculo_id`='{$veiculo_id}', `opcional_id`='{$opcional}' WHERE `veiculo_id`='{$veiculo_id}' LIMIT 1");
}
Eu num manjo muito da função FOREACH, to usando ela pq a GLR aki no tópico passou (Ctrl+C Ctrl+V)
o q tah errado agora?