Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rohde

[Resolvido] checkbox dinamico

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.