¿Cómo leer si una casilla de verificación está marcada en PHP?


¿Cómo leer si una casilla de verificación está marcada en PHP?

Author: Thew, 2010-12-29

15 answers

Si su página HTML se ve así:

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

Después de enviar el formulario puedes consultarlo con:

isset($_POST['test'])

O

if ($_POST['test'] == 'value1') ...
 274
Author: m_vitaly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-20 19:08:40

Zend Framework usa un buen truco en las casillas de verificación, que también puedes hacer tú mismo:

Cada casilla de verificación generada se asocia con un campo oculto del mismo nombre, colocado justo antes de la casilla de verificación, y con un valor de "0". Luego, si su casilla de verificación como el valor "1", siempre obtendrá el valor '0' o '1' en el resultado GET o POST

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 
 87
Author: regilero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-04 12:43:05

Cuando se usan casillas de verificación como una matriz:

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

Debes usar in_array():

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

Recuerde comprobar que la matriz se establece primero, como:

if(isset($_POST['food']) && in_array(...
 43
Author: rybo111,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-09 23:49:55

Deje que su html para su casilla de verificación será como

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

Luego, después de enviar su formulario, debe verificar como

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

    // Checkbox is selected
} else {

   // Alternate code
}

Asumiendo que check1 debería ser el nombre de tu casilla de verificación.Y si su método de envío de formularios es GET, entonces debe verificar con $_GET variables como

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

   // Checkbox is selected
} 
 37
Author: Gautam3164,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-03 10:28:50
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
 7
Author: Hammad Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-29 15:21:28

Puede verificar que el valor correspondiente esté establecido y no vacío en la matriz $_POST o $_GET dependiendo de la acción de su formulario.

Es decir: Con un formulario POST usando un name de "prueba" (es decir: <input type="checkbox" name="test">, usarías:

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

}
 3
Author: John Parker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-29 14:08:19

Aprenda sobre isset que es una "función" incorporada que se puede usar en sentencias if para decir si se ha utilizado o establecido una variable

Ejemplo:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }
 2
Author: user2451511,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-09 09:45:57

Bueno, los ejemplos anteriores solo funcionan cuando desea INSERTAR un valor, no es útil para ACTUALIZAR diferentes valores a diferentes columnas, así que aquí está mi pequeño truco 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[]" />

....

El secreto es simplemente actualizar todos los VALORES primero (en este caso a 0), y como el solo enviará los valores marcados, eso significa que todo lo que obtenga debe establecerse en 1, por lo que todo lo que obtenga debe establecerse en 1.

El ejemplo es PHP pero se aplica a todo.

Diviértete:)

 2
Author: Hiram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-27 22:14:10

Para comprobar si una casilla de verificación está marcada use vacío()

Cuando se envía un formulario, la casilla de verificación SIEMPRE se establecerá, porque TODAS las variables POST se enviarán con el formulario.

Compruebe si la casilla de verificación está marcada con vacío de la siguiente manera:

//Check if checkbox is checked    
if(!empty($_POST['checkbox']){
#Checkbox selected code
} else {
#Checkbox not selected code
}
 1
Author: andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-27 18:25:47
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

La evaluación de cortocircuitos se encargará de que no acceda a your_checkbox_name cuando no se haya enviado.

 1
Author: Martin Thoma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-23 18:44:20

Una comprobación booleana minimalista con retención de la posición del interruptor

<?php

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

?>

<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
 1
Author: Rembo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-21 01:04:03

Puedes hacerlo con el corto si:

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

O con el nuevo PHP7 Null coalescing operator

$check_value = $_POST['my_checkbox_name'] ?? 0;
 1
Author: Mazz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-14 09:30:54

He estado usando este truco durante varios años y funciona perfectamente sin ningún problema para el estado de casilla de verificación marcada/no marcada mientras se usa con PHP y Base de datos.

Código HTML: (para Agregar página)

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

Sugerencia: elimine" checkbox " si desea mostrarlo como desactivado por defecto

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: (usar para Agregar/Editar páginas)

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

Sugerencia: Siempre habrá un valor vacío a menos que el usuario lo marque. Por lo tanto, ya tenemos código PHP para si no, mantén el valor en 0. A continuación, simplemente utilice la variable status status para la base de datos.

 0
Author: ZEESHAN ARSHAD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
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,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
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,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-21 13:05:53