Tratamento de checkboxes dinâmicas
por João Seabra

Explico nesse artigo um método de lidar com checkboxes, quando eles vem totalmente dinâmicos de um formulário. Esse método pode ser util para outras pessoas, já que demorei bastante tentando pesquisar por uma solução pela Internet.



Um certo dia me vi perdido quando TIVE que usar as checkboxes em um determinado formulário meu. Sempre tinha as evitado, pois não sabia como tratar as variáveis postadas por elas. Tinha um outro problema... Elas TINHAM que ser geradas dinamicamente, pois referia-se à alteração de um usuário. Após pesquisar em muitos sites, perguntar para amigos mais experientes, não consegui nenhuma solução aplicável àquela situação. Apenas "pesquei" algumas informações, mas que sozinhas não faziam coisa alguma. Sentei e comecei a rachar a cabeça, e consegui chegar a uma solução própria, utilizando poucas linhas de código. Vou mostrar pra vocês:

O formulário vou colocar o html gerado pelo servidor, pois o mesmo é extenso pra caramba e um pouco complexo:


<form action="command.php" method="POST">
<input type="checkbox" name="checkbox_1">João Seabra
<input type="checkbox" name="checkbox_2">Daniel
<input type="submit" name="ok">
</form>


Como vocês podem observar, eu não coloquei nenhum VALUE para o checkbox, e na id eu gerei dinamicamente o valor colocado após a string "checkbox_".



Como não coloquei nenhum value na checkbox, ele me enviará o valor padrão "on". Então, com a função array_keys, fiz um array com as chaves de todos os valores do array $_POST, que tem como valor "on". Assim:


<?php
$array 
= (array_keys($_POST"on"));
?>


Agora é mole, basta dar um loop FOR, explodir os valores do array e pegar a ID e usar. Assim:


<?php
for ($x 0$x < (count($array)); $x++) {
    
$user explode ("_"$array[$x]);
    
$id $user[1];
   
    
$usuario usuario::setId($id);
    
$permissao usuario::setPermissao($permissao);
    
usuario::save($usuario);
}
?>


Espero poder ter ajudado vocês neste artigo.

Dúvidas? Entre em contato. Abraços