Nunca mais tenha problema com checkbox...
Você já teve problemas com campos de formulário do tipo checkbox? Principalmente quando precisou utilizar, talvez em algum condicional, uma confirmação gerada por um checkbox que não foi assinalado?
Você já deixou de usar checkbox porque não aguentava fazer parte do seu código praticamente dobrar de tamanho só para confirmar se o checkbox desejado foi enviado ou não?
Pior, você já optou por usar dropdown de múltipla seleção só porque os checkboxes não te obedeciam?
Isso é um problema comum que inclusive já afetou a mim no passado e, hoje, desenvolvendo um formulário com checkboxes lembrei e resolvi ajudar quem mais precisa.
O fato é que elementos do tipo checkbox que não são assinalados antes do envio, não são, de fato, enviados ao programa PHP receptor.
Muitas vezes isso gera confusão ou obriga o pogramador programador a recorrer a JavaScript's mirabolantes apenas para, por exemplo, passar o valor de um checkbox não assinalado como zero.
A solução, simples, elegante e que em nada afeta a saúde, nem do programador e nem do script, consiste apenas em adicionar um elemento hidden com o mesmo valor do atributo name que dito checkbox ANTES do respectivo checkbox.
Quando enviado, pelo processamento "de cima a baixo", o primeiro valor a ser considerado na "fila" de envio será o hidden.
Continuando o processamento do formulário, se o checkbox de mesmo nome tiver sido assinalado, a entrada anterior, referente ao hidden, será sobrescrita com o valor do checkbox selecionado.
Caso contrário, por não estar assinalado, o processamento "pula" para opróximo elemento e o valor do hidden é mantido.
Mas como sempre há os Do Contra da Turma da Mônica do iMasters poderá haver a questão:
"O que há de errado com..."
$_POST['checkbox'] = (isset($_POST['checkbox'])) ? 1 : 0;
Tão simples quanto o ternário acima exposto é a aplicabilidade alternativa da técnica que remete a quando NÃO SE SABEM quantos checkboxes haverão de existir.
Ou ainda, manter seu código mais limpo pois, imagine um jogo de Campo Minado, com tabuleiro de 100x100 checkboxes.
Você realmente vai repetir essa linha 10 mil vezes? Ou vai realmente aplicar um loop desnecessário e que potencialmente te proporcionará um tempo de resposta considerável e irritantemente alto, por nada?
Bom, fica a dica http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Discussão (5)
Carregando comentários...