Comment lire si une case à cocher est cochée en PHP?
Si votre page HTML ressemble à ceci:
<input type="checkbox" name="test" value="value1">
Après avoir soumis le formulaire, vous pouvez le vérifier avec:
isset($_POST['test'])
ou
if ($_POST['test'] == 'value1') ...
Zend Framework utilise un hack sympa sur les cases à cocher, ce que vous pouvez aussi faire vous-même:
Chaque case à cocher générée est associée à un champ masqué du même nom placé juste avant la case à cocher et à la valeur "0". Ensuite, si la case "1" est cochée, vous obtiendrez toujours la valeur "0" ou "1" dans le résultat GET ou POST résultant
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
Lorsque vous utilisez des cases à cocher en tant que tableau:
<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">
Vous devriez utiliser in_array()
:
if(in_array('Orange', $_POST['food'])){
echo 'Orange was checked!';
}
N'oubliez pas de vérifier que le tableau est défini en premier, tel que:
if(isset($_POST['food']) && in_array(...
Laissez votre code HTML pour votre case à cocher sera comme
<input type="checkbox" name="check1">
Ensuite, après avoir soumis votre formulaire, vous devez vérifier comme
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
En supposant que check1
devrait être votre nom de case à cocher. Et si votre méthode de soumission de formulaire est GET
, vous devez vérifier avec les variables $_GET
telles que
if (isset($_GET['check1'])) {
// Checkbox is selected
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
J'utilise cette astuce depuis plusieurs années et cela fonctionne parfaitement sans problème pour les cases cochées/décochées lorsque vous utilisez avec PHP et Database.
Code HTML: (pour Ajouter une page)
<input name="status" type="checkbox" value="1" checked>
Astuce: supprimez la "case à cocher" si vous voulez l'afficher comme non cochée par défaut
Code HTML: (pour la page d'édition)
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
Code PHP: (à utiliser pour les pages d'ajout/modification)
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}
Astuce: Il y aura toujours une valeur vide à moins que l'utilisateur ne l'ait cochée. Donc, nous avons déjà le code PHP pour l'attraper, sinon garder la valeur à 0. Ensuite, utilisez simplement la variable $ status pour la base.
Vous pouvez vérifier que la valeur correspondante est définie et non vide dans le tableau $ _POST ou $ _GET en fonction de l'action de votre formulaire.
i.e .: Avec un formulaire POST utilisant une name
de "test" (i.e .: <input type="checkbox" name="test">
, vous utiliseriez:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Eh bien, les exemples ci-dessus ne fonctionnent que lorsque vous voulez INSERER une valeur, ce qui n'est pas utile pour UPDATE avec des valeurs différentes pour des colonnes différentes. Voici donc mon petit truc pour mettre à jour:
//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[]" />
....
Le secret consiste simplement à mettre à jour d’abord toutes les VALEURS (dans ce cas-ci à 0), et comme le système n’envoie que les valeurs vérifiées, cela signifie que tout ce que vous obtenez doit être défini sur 1, ainsi que sur 1.
Exemple: PHP mais s'applique à tout.
S'amuser :)
Pour vérifier si une case est cochée, utilisez empty ()
Lorsque le formulaire est soumis, la case à cocherTOUJOURSsera définie, car ALL POSTvariables seront envoyées avec le formulaire.
Vérifiez si la case à cocher est cochée avec vide comme suit:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
En savoir plus sur isset
qui est une "fonction" intégrée pouvant être utilisée dans des instructions if pour indiquer si une variable a été utilisée ou définie
Exemple:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
Évaluation du court-circuit veillera à ce que vous n'accédiez pas à your_checkbox_name
lorsqu'il n'a pas été soumis.
Vérification booléenne minimaliste avec maintien de la position du commutateur
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
Vous pouvez le faire avec le court si:
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
ou avec le nouveau PHP7 Null coalescing operator
$check_value = $_POST['my_checkbox_name'] ?? 0;
filter_input (INPUT_POST, 'checkbox_name', FILTER_DEFAULT, FILTER_FORCE_ARRAY)
<?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>
dans BS3 vous pouvez mettre
<?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>
Veuillez noter l'utilisation de isset($datosOrdenCompra[0]['exenta'])