Como ler se uma opção estiver assinalada no PHP?

Como ler se estiver assinalada uma opção no PHP?

Author: Thew, 2010-12-29

15 answers

Se a sua página HTML for assim:

<input type="checkbox" name="test" value="value1">

Depois de enviar o formulário, pode verificá-lo com:

isset($_POST['test'])

Ou

if ($_POST['test'] == 'value1') ...
 274
Author: m_vitaly, 2015-10-20 19:08:40

Zend Framework usa um bom hack em checkboxes, que você também pode fazer:

Todas as opções geradas estão associadas a um campo oculto com o mesmo nome, colocado imediatamente antes da opção, e com um valor de "0". Então, se a sua opção como o valor "1", você vai sempre obter o valor '0' ou '1' no resultado obter ou POST

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 
 87
Author: regilero, 2014-07-04 12:43:05

Ao usar as caixas de controlo como um array:

<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">

in_array():

if(in_array('Orange', $_POST['food'])){
  echo 'Orange was checked!';
}

Lembre-se de verificar se o array está definido primeiro, tais como:

if(isset($_POST['food']) && in_array(...
 43
Author: rybo111, 2015-12-09 23:49:55

Deixe o seu html para a sua caixa de cheques ser como

<input type="checkbox" name="check1">

Depois de enviar o seu formulário, tem de verificar como

if (isset($_POST['check1'])) {

    // Checkbox is selected
} else {

   // Alternate code
}

Assumindo que check1 deve ser o nome da sua caixa de cheques.E se o seu método de apresentação do formulário for GET então você precisa verificar com $_GET variáveis como

if (isset($_GET['check1'])) {

   // Checkbox is selected
} 
 37
Author: Gautam3164, 2013-09-03 10:28:50
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
 7
Author: Hammad Khan, 2015-04-29 15:21:28

Você pode verificar o valor correspondente como sendo definido e não-vazio na lista $_POST ou $_GET, dependendo da acção do seu formulário.

Ou seja: com um formulário postal utilizando um name de " teste "(ou seja: <input type="checkbox" name="test">, você usaria:

if(isset($_POST['test']) {
   // The checkbox was enabled...

}
 3
Author: John Parker, 2010-12-29 14:08:19

Aprenda sobre isset que é uma "função" incorporada que pode ser usada no caso de declarações para dizer se uma variável foi usada ou definida

Exemplo:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }
 2
Author: user2451511, 2013-08-09 09:45:57

Bem, os exemplos acima só funcionam quando você deseja inserir um valor, não é útil para actualizar valores diferentes para diferentes colunas, por isso aqui está o meu pequeno truque para actualizar:


//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 actualizar todos os valores primeiro (neste caso para 0), e uma vez que a vontade apenas envia os valores verificados, isso significa que tudo o que recebe deve ser definido para 1, por isso tudo o que recebe configura-o para 1.

O exemplo é PHP mas aplica-se a tudo.

Diverte-te. :)
 2
Author: Hiram, 2013-10-27 22:14:10

Para verificar se está assinalada uma opção use vazio()

Quando for apresentado um formulário, a opção será sempredefinida, porque Todas as variáveis POST serão enviadas com o formulário.

Verifique se a opção está assinalada em branco, como se segue:

//Check if checkbox is checked    
if(!empty($_POST['checkbox']){
#Checkbox selected code
} else {
#Checkbox not selected code
}
 1
Author: andy, 2014-05-27 18:25:47
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

A avaliação do curto-circuito terá o cuidado de não aceder a {[[1]} quando não foi submetido.

 1
Author: Martin Thoma, 2014-07-23 18:44:20
Uma verificação booleana minimalista com a manutenção da posição dos comutadores.
<?php

$checked = ($_POST['foo'] == ' checked');

?>

<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
 1
Author: Rembo, 2017-02-21 01:04:03

Pode fazê-lo com o curta se:

$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;

Ou com o novo PHP7 Null coalescing operator

$check_value = $_POST['my_checkbox_name'] ?? 0;
 1
Author: Mazz, 2017-04-14 09:30:54

Eu tenho usado este truque há vários anos e ele funciona perfeitamente sem qualquer problema para checkbox estado checked/unchecked ao usar com PHP e banco de dados.

Código HTML: (para adicionar Página)

<input name="status" type="checkbox" value="1" checked>

Dica: remover a "opção" se a quiser mostrar como não está assinalada por omissão

Código HTML: (para editar a Página)

<input name="status" type="checkbox" value="1" 
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>

Código PHP: (usar para adicionar/editar páginas)

$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}

Sugestão: existirá sempre um valor em branco, a menos que o utilizador o tenha assinalado. Então, já temos PHP. código para apanhá-lo caso contrário mantenha o valor para 0. Em seguida, basta usar a variável de status $para banco de dados.

 0
Author: ZEESHAN ARSHAD, 2017-07-09 09:47:44
<?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>
 0
Author: antelove, 2017-12-11 13:53:11
<?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']);
} 

?>
 -3
Author: Grzegorz, 2016-10-21 13:05:53