¿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?
Respuestas:
Si su página HTML se ve así:
<input type="checkbox" name="test" value="value1">
Después de enviar el formulario, puede verificarlo con:
isset($_POST['test'])
o
if ($_POST['test'] == 'value1') ...
on
, cuando están marcadas. Por lo tanto, por compatibilidad, es más fácil de usar isset($_POST['checkboxName'])
.
value1
si la casilla de verificación está marcada. Si no está marcado, $_POST['test']
simplemente no existiría.
Zend Framework utiliza un buen truco en las casillas de verificación, que también puede hacer usted mismo:
Cada casilla de verificación generada está asociada 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 OBTENER o POST resultante
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
input[type="checkbox"]
uno)?
Al usar 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 verificar que la matriz esté configurada primero, como:
if(isset($_POST['food']) && in_array(...
foreach ($_POST['food'] as $selected_food)
trabajar en una marcada es agradable, gracias
Deje que su html para su casilla de verificación sea como
<input type="checkbox" name="check1">
Luego, después de enviar su formulario, debe marcar como
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
Asumiendo que ese check1
debería ser el nombre de su 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
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
He estado usando este truco durante varios años y funciona perfectamente sin ningún problema para el estado de la casilla de verificación marcada / sin marcar mientras se usa con PHP y la base de datos.
Código HTML: (para Agregar página)
<input name="status" type="checkbox" value="1" checked>
Sugerencia: elimine la "casilla de verificación" si desea mostrarla como desmarcada de forma predeterminada
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: (uso 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 haya verificado. Entonces, ya tenemos código PHP para capturarlo, de lo contrario, mantenga el valor en 0. Luego, simplemente use la variable $ status para la base de datos.
Para verificar si una casilla está marcada, use empty ()
Cuando se envía el formulario, la casilla de verificación SIEMPRE se establecerá, ya que TODAS las variables POST se enviarán con el formulario.
Verifique 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
}
Puede verificar que el valor correspondiente esté establecido y no vacío en la matriz $ _POST o $ _GET según la acción de su formulario.
es decir: con un formulario POST usando un name
"test" (es decir <input type="checkbox" name="test">
, usaría:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Aprenda sobre isset
cuál es una "función" integrada que se puede usar en declaraciones if para saber si se ha usado o establecido una variable
Ejemplo:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
Bueno, los ejemplos anteriores funcionan solo cuando desea INSERTAR un valor, no es útil para ACTUALIZAR diferentes valores en 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 dado que solo enviará los valores marcados, eso significa que todo lo que obtenga debe establecerse en 1, por lo que todo lo que establece en 1.
El ejemplo es PHP pero se aplica a todo.
Que te diviertas :)
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
La evaluación de cortocircuito se encargará de que no acceda your_checkbox_name
cuando no se haya enviado.
Un cheque booleano minimalista con retención de posición del 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>
en BS3 puedes poner
<?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>
Tenga en cuenta el uso deisset($datosOrdenCompra[0]['exenta'])
Wordpress tiene la checked()
función. Referencia: https://developer.wordpress.org/reference/functions/checked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
Descripción Compara los dos primeros argumentos y si marcas idénticas como marcadas
Parámetros $ verificado (mixto) (obligatorio) Uno de los valores para comparar
$ actual (mixto) (Opcional) (verdadero) El otro valor para comparar, si no solo verdadero Valor predeterminado: verdadero
$ echo (bool) (Opcional) Si hacer eco o simplemente devolver la cadena Valor predeterminado: verdadero
Devuelve el atributo html #Return (string) o una cadena vacía
<?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']);
}
?>