rohde 3 Denunciar post Postado Agosto 31, 2012 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"; } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Setembro 1, 2012 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: $sql = "SELECT plataforma FROM produto WHERE id=1"; $query = mysql_query($sql); if(!$query) { echo "erro mysql: ", mysql_error(); } $str_plataforma = mysql_result($sql,0,0); $arr_plataforma = explode(', ', $str_plataforma); 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 $sql = "SELECT idPlataforma, descPlataforma FROM plataforma WHERE idPlataforma IN ({$plataforma})"; Quanto ao checkboxes, suponho que haja, por exemplo, 5 plataformas, e que determinado produto tenha 4 plataformas, todas exceto a plataforma '2'. No formulário de atualização/update, você deve exibir todas em checkboxes, mas apenas quatro delas deve estar marcadas. 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: <input type="checkbox" name="plataforma" value="1"<?php if (in_array(1, $plataforma)) { ?> checked="checked" <?php } ?>/> Compartilhar este post Link para o post Compartilhar em outros sites
rohde 3 Denunciar post Postado Setembro 3, 2012 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"; } Compartilhar este post Link para o post Compartilhar em outros sites