Como recuperar como checked um campo armazenado como array – PHP

Só dicas simples ultimamente né. Vamos lá:

Imagine que você tenha um formulário HTML com alguns campos checkbox, ou seja, que permitem múltiplos valores.

<form action="#" method="post">
Marque o turno: <br />
<input type="checkbox" name="turno[]" value="1" />Matutino<br />
<input type="checkbox" name="turno[]" value="2" />Vespertino<br />
<input type="checkbox" name="turno[]" value="3" />Noturno<br />
<input type="submit" name="submit" value="enviar" />
</form>

No banco, você terá um campo que irá armazenar as opções selecionadas em formato de array separados por vírgula (1,2,3). A dúvida é, como que você irá recuperar os valores selecionados de forma que ao editar este formulário os respectivos campos checkbox’s venham marcados? Muito simples, basta utilizar as funções implode() e explode(), veja:

Para inserir em formato de array separados por vírgula basta dar um implode():

$turno = implode($_POST['turno'],",");

Ai basta utilizar esta variável ($turno) no seu INSERT.

Na query que irá recuperar os dados, utilizamos explode() para separar os elementos do array:

$turno = explode(",", $row["turno"]);

E na hora de marcar os campos do formulário com os registros recuperados vamos utilizar a função do PHP chamada in_array, com um operador ternário:

<input type="checkbox" name="turno[]" value="1" <?=(in_array('1',$turno))?('checked'):('');?/>/>Matutino<br />
<input type="checkbox" name="turno[]" value="2" <?=(in_array('2',$turno))?('checked'):('');?/>/>Vespertino<br />
<input type="checkbox" name="turno[]" value="3" <?=(in_array('3',$turno))?('checked'):('');?/>/>Noturno<br />

Pronto, dessa forma os valores que vierem da variável $turno que coincidirem com o value do checkbox será marcado como ativo.

Seguindo o mesmo princípio, você pode querer trazer em formato de relatório os valores selecionados, como no exemplo abaixo:

( X ) MATUTINO        (  ) VESPERTINO        ( X ) NOTURNO

É a mesma coisa, basta dar um echo na variável no espaço onde será preenchido o X:

( < ?php echo (in_array('1',$turno))?('X'):('');?> ) MATUTINO ( < ?php echo (in_array('2',$turno))?('X'):('');?> ) VESPERTINO ( < ?php echo (in_array('3',$turno))?('X'):('');?> ) NOTURNO

Fonte: Handling checkbox in a PHP form processor

Leave a Reply

Your email address will not be published. Required fields are marked *