Réponses:
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') ...
on
lorsqu'elles sont cochées. Par conséquent, pour la compatibilité, il est plus facile à utiliser isset($_POST['checkboxName'])
.
value1
si la case était cochée. Si elle n'est pas cochée, $_POST['test']
n'existerait tout simplement pas.
Zend Framework utilise un joli hack sur les cases à cocher, que vous pouvez également faire vous-même:
Chaque case à cocher générée est associée à un champ caché du même nom, placé juste avant la case à cocher, et avec une valeur de "0". Ensuite, si votre case à cocher correspond à la valeur "1", vous obtiendrez toujours la valeur "0" ou "1" dans le GET ou le POST résultant.
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
input[type="checkbox"]
sienne)?
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 devez 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, comme:
if(isset($_POST['food']) && in_array(...
foreach ($_POST['food'] as $selected_food)
de travailler sur une case cochée est agréable, merci
Laissez votre 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 cela check1
devrait être le nom de votre case à cocher Et si votre méthode de soumission de formulaire est GET
alors vous devez vérifier avec des $_GET
variables comme
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 elle fonctionne parfaitement sans aucun problème pour l'état de la case cochée / non cochée lors de l'utilisation avec PHP et la base de données.
Code HTML: (pour ajouter une page)
<input name="status" type="checkbox" value="1" checked>
Astuce: supprimez la "case à cocher" si vous souhaitez 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 ajouter / modifier des pages)
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}
Astuce: Il y aura toujours une valeur vide à moins que l'utilisateur ne la vérifie. Donc, nous avons déjà du code PHP pour l'attraper, sinon gardez la valeur à 0. Ensuite, utilisez simplement la variable $ status pour la base de données.
Pour vérifier si une case est cochée, utilisez empty ()
Lorsque le formulaire est soumis, la case à cocher sera TOUJOURS activée, car TOUTES les variables POST seront envoyées avec le formulaire.
Cochez si la case est cochée avec vide comme suit:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
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.
ie: Avec un formulaire POST utilisant un name
de "test" (ie <input type="checkbox" name="test">
:, vous utiliseriez:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Découvrez isset
quelle est une "fonction" intégrée qui peut être utilisée dans les instructions if pour indiquer si une variable a été utilisée ou définie
Exemple:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
Eh bien, les exemples ci-dessus ne fonctionnent que lorsque vous souhaitez INSÉRER une valeur, pas utile pour METTRE À JOUR différentes valeurs dans différentes colonnes, voici donc ma petite astuce 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 toutes les VALEURS en premier (dans ce cas, à 0), et puisque le n'enverra que les valeurs vérifiées, cela signifie que tout ce que vous obtenez doit être défini sur 1, donc tout ce que vous obtenez le définit sur 1.
L'exemple est PHP mais s'applique à tout.
S'amuser :)
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
L'évaluation des courts-circuits veillera à ce que vous n'accédiez pas your_checkbox_name
lorsqu'elle n'a pas été soumise.
Un contrôle booléen minimaliste avec maintien de la position du commutateur
<?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>
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 deisset($datosOrdenCompra[0]['exenta'])
Wordpress a la checked()
fonction. Référence: https://developer.wordpress.org/reference/functions/checked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
Description Compare les deux premiers arguments et si des marques identiques sont cochées
Paramètres $ vérifié (mixte) (Obligatoire) Une des valeurs à comparer
$ current (mixed) (Facultatif) (true) L'autre valeur à comparer si pas seulement true Valeur par défaut: true
$ echo (bool) (Facultatif) Que ce soit pour faire écho ou simplement renvoyer la chaîne Valeur par défaut: true
Renvoie l'attribut html #Return (string) ou une chaîne vide
<?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']);
}
?>