Respostas:
Se sua página HTML estiver assim:
<input type="checkbox" name="test" value="value1">
Depois de enviar o formulário, você pode verificá-lo com:
isset($_POST['test'])
ou
if ($_POST['test'] == 'value1') ...
on
quando estão marcadas. Portanto, para compatibilidade, é mais fácil apenas usar isset($_POST['checkboxName'])
.
value1
se a caixa de seleção estiver marcada. Se não estiver marcado, $_POST['test']
simplesmente não existiria.
O Zend Framework usa um bom hack nas caixas de seleção, que você também pode fazer:
Cada caixa de seleção gerada é associada a um campo oculto com o mesmo nome, colocado logo antes da caixa de seleção e com o valor "0". Então, se sua caixa de seleção for o valor "1", você sempre obterá o valor '0' ou '1' no GET ou POST resultante
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
input[type="checkbox"]
único)?
Ao usar caixas de seleção como uma matriz:
<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">
Você deve usar in_array()
:
if(in_array('Orange', $_POST['food'])){
echo 'Orange was checked!';
}
Lembre-se de verificar se a matriz está definida primeiro, como:
if(isset($_POST['food']) && in_array(...
foreach ($_POST['food'] as $selected_food)
para trabalhar em um verificado é bom, obrigado
Deixe seu html para sua caixa de seleção ser como
<input type="checkbox" name="check1">
Depois de enviar seu formulário, verifique como
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
Supondo que esse check1
seja o nome da caixa de seleção. E se o método de envio do formulário for GET
, você precisará verificar com $_GET
variáveis
if (isset($_GET['check1'])) {
// Checkbox is selected
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
Uso esse truque há vários anos e funciona perfeitamente sem problemas para o status de caixa de seleção marcada / desmarcada ao usar com PHP e banco de dados.
Código HTML: (para Adicionar Página)
<input name="status" type="checkbox" value="1" checked>
Dica: remova a "caixa de seleção" se desejar mostrá-la como desmarcada por padrão
Código HTML: (para Editar Página)
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
Código PHP: (use para adicionar / editar páginas)
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}
Dica: sempre haverá um valor vazio, a menos que o usuário o tenha verificado. Portanto, já temos código PHP para capturá-lo, mas mantenha o valor igual a 0. Em seguida, basta usar a variável $ status para o banco de dados.
Para verificar se uma caixa de seleção está marcada, use empty ()
Quando o formulário é enviado, a caixa de seleção SEMPRE será definida, porque TODAS as variáveis POST serão enviadas com o formulário.
Marque se a caixa de seleção estiver marcada com vazio, conforme a seguir:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
Você pode verificar o valor correspondente como sendo definido e não vazio na matriz $ _POST ou $ _GET, dependendo da ação do seu formulário.
ou seja: com um formulário POST usando um name
de "teste" (ou seja <input type="checkbox" name="test">
, você usaria:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Aprenda sobre isset
qual é uma "função" integrada que pode ser usada nas instruções if para dizer se uma variável foi usada ou definida
Exemplo:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
Bem, os exemplos acima funcionam apenas quando você deseja inserir um valor, não útil para atualizar valores diferentes em colunas diferentes, então aqui está meu pequeno truque para atualizar:
//EMPTY ALL VALUES TO 0
$queryMU ='UPDATE '.$db->dbprefix().'settings SET menu_news = 0, menu_gallery = 0, menu_events = 0, menu_contact = 0';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();
if(!empty($_POST['check_menus'])) {
foreach($_POST['check_menus'] as $checkU) {
try {
//UPDATE only the values checked
$queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();
} catch(PDOException $e) {
$msg = 'Error: ' . $e->getMessage();}
}
}
<input type="checkbox" value="menu_news" name="check_menus[]" />
<input type="checkbox" value="menu_gallery" name="check_menus[]" />
....
O segredo é apenas atualizar todos os VALUES primeiro (neste caso, para 0) e, como o envio somente dos valores verificados, isso significa que tudo o que você obtém deve ser definido como 1, e tudo o que é definido como 1.
Exemplo é PHP, mas se aplica a tudo.
Diverta-se :)
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
A avaliação de curto-circuito tomará cuidado para que você não acesse your_checkbox_name
quando não foi enviada.
Uma verificação booleana minimalista com retenção da posição do interruptor
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
<?php
if (isset($_POST['add'])) {
$nama = $_POST['name'];
$subscribe = isset($_POST['subscribe']) ? $_POST['subscribe'] : "Not Checked";
echo "Name: {$nama} <br />";
echo "Subscribe: {$subscribe}";
echo "<hr />";
}
?>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" >
<input type="text" name="name" /> <br />
<input type="checkbox" name="subscribe" value="news" /> News <br />
<input type="submit" name="add" value="Save" />
</form>
no BS3 você pode colocar
<?php
$checked="hola";
$exenta = $datosOrdenCompra[0]['exenta'];
var_dump($datosOrdenCompra[0]['exenta']);
if(isset($datosOrdenCompra[0]['exenta']) and $datosOrdenCompra[0]['exenta'] == 1){
$checked="on";
}else{
$checked="off";
}
?>
<input type="checkbox" id="exenta" name="exenta" <?php echo $checked;?> > <span class="label-text"> Exenta</span>
Observe o uso deisset($datosOrdenCompra[0]['exenta'])
Wordpress tem a checked()
função. Referência: https://developer.wordpress.org/reference/functions/checked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
Descrição Compara os dois primeiros argumentos e, se marcas idênticas, como marcadas
Parâmetros $ selected (mixed) (Obrigatório) Um dos valores para comparar
$ current (misto) (Opcional) (true) O outro valor para comparar se não for apenas true Valor padrão: true
$ echo (bool) (Opcional) Se deseja ecoar ou simplesmente retornar a string Valor padrão: true
Retorno #Return (string) atributo html ou string vazia
<?php
if(isset($_POST['nameCheckbox'])){
$_SESSION['fr_nameCheckbox'] = true;
}
?>
<input type="checkbox" name="nameCheckbox"
<?php
if(isset($_SESSION['fr_nameCheckbox'])){
echo 'checked';
unset($_SESSION['fr_nameCheckbox']);
}
?>