Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
tenho uma tabela de produto assim
id
produto
descricao
plataforma
e outra tabela de plataforma assim
id
descricao
o produto por ter varias plataformas.. ou seja ficaria um array
qdo faco uma consulta no produto tenho plataforma igual a: 1, 3, 4, 5
como faco pra pegar esse array e fazer uma consulta na tabela plataforma e fazer os checks e tals.. ??
desde ja, obrigado
edit:
cheguei a +- isso.. nao sei onde estou errando:
<?php
$n = count($dados['plataforma']);
$sqlPlat = mysql_query("SELECT idPlataforma, descPlataforma from plataforma order by descPlataforma");
for($i=0; $i < $n; $i++) {
while ($obj = mysql_fetch_object($sqlPlat)) {
echo $dados['plataforma'][$i];
if ($obj->idPlataforma = $dados['plataforma'][$i]) {
echo "<input type='checkbox' name='plataforma[]' value='".$obj->idPlataforma."' checked='checked'/>".$obj->descPlataforma."<br />\n";
} else {
echo "<input type='checkbox' name='plataforma[]' value='".$obj->idPlataforma."'/>".$obj->descPlataforma."<br />\n";
}
}
}
?>não esta dando certo não
form de cadastro:
<input type='checkbox' name='plataforma[]' value='3'/>Android<br /> <input type='checkbox' name='plataforma[]' value='2'/>iOS<br /> <input type='checkbox' name='plataforma[]' value='4'/>Linux<br /> <input type='checkbox' name='plataforma[]' value='1'/>Windows<br />
o $_POST['plataforma'] ta salvando a palavra Array, ai fiz o seguinte:
$i = 0;
$adiciona = ", ";
foreach($_POST['plataforma'] AS $valor) { // separo cada e armazeno em $valor
$i++;
if($i < count($_POST['plataforma'])) {
$plataforma.=$valor.$adiciona;
} else {
$plataforma.=$valor;
}
}
dai salvou da seguinte forma
3, 2
daqui pra frente ja nao sei mais o q fazer :S
bom,
resolvi da seguinte forma, não sei se foii a melhor solução...
salvando os valores do check
$i = 0;
$adiciona = ", ";
foreach($_POST['plataforma'] AS $valor) { // separo cada e armazeno em $valor
$i++;
if($i < count($_POST['plataforma'])) {
$plataforma.=$valor.$adiciona;
} else {
$plataforma.=$valor;
}
}
carregando e checando os checks
$plataformaProd = explode(", ", $dados['plataforma']);
$sqlPlat = mysql_query("SELECT idPlataforma, descPlataforma from plataforma order by descPlataforma");
while ($obj = mysql_fetch_object($sqlPlat)){
$a = '';
if (in_array($obj->idPlataforma, $plataformaProd)) { $a = " checked='checked' ";}
print "<input type='checkbox' name='plataforma[]' value='$obj->idPlataforma'".$a."/>$obj->descPlataforma<br />\n";
}
O campo plataforma armazena uma string com valores separados por uma vírgula e um espaço em branco, ex.: "1, 3, 4, 5". Correto?
Então, para transformar esta string em um array, use explode:
Depois junte novamente 'plataforma' em uma string, mas dessa vez no formato: '1','3','4','5':
$plataforma = "'" . implode("','", $arr_plataforma) . "'";
// execute a consulta abaixo para pegar todas as plataformas do produto
O elemento input do tipo 'checkbox' tem um atributo chamado 'checked' que define se ele já deve vir marcado na página HTML.
Então é só fazer mais ou menos assim: