Comment lire si une case est cochée en PHP?

Comment lire si une case est cochée en PHP?

221
demandé sur Thew 2010-12-29 17:04:08

15 réponses

Si votre page HTML ressemble à ceci:

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

Après avoir soumis le formulaire, vous pouvez vérifier avec:

isset($_POST['test'])

Ou

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

Zend Framework utilise un bon 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 est la valeur "1" ,vous obtiendrez toujours la valeur ' 0 ' ou ' 1 ' dans le GET ou POST

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

Lorsque vous utilisez des cases à cocher comme 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, par exemple:

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

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 des variables $_GET comme

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

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

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.

C'est-à-dire: avec un formulaire POST utilisant un name de "test" (c'est-à-dire: <input type="checkbox" name="test"> , vous utiliseriez:

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

}
3
répondu John Parker 2010-12-29 14:08:19

Découvrez isset qui 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!";
     }
2
répondu user2451511 2013-08-09 09:45:57

Eh bien, les exemples ci-dessus ne fonctionnent que lorsque vous voulez insérer une valeur, pas utile pour mettre à jour différentes valeurs dans différentes colonnes, alors voici 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 est juste de mettre à jour toutes les valeurs en premier (dans ce cas à 0), et puisque le va seulement envoyer les valeurs vérifiées, cela signifie que tout ce que vous obtenez doit être réglé sur 1, donc tout ce que vous obtenez le mettre à 1.

L'exemple est PHP mais s'applique à tout.

Amusez-vous :)

2
répondu Hiram 2013-10-27 22:14:10

Pour vérifier si une case est cochée utiliser vide()

Lorsqu'un formulaire est soumis, la case à cocher sera toujours , carToutes les variables POST seront envoyées avec le formulaire.

Vérifiez 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
}
1
répondu andy 2014-05-27 18:25:47
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

L'évaluation de court-circuit prendra soin de ne pas accéder à your_checkbox_name lorsqu'elle n'a pas été soumise.

1
répondu Martin Thoma 2014-07-23 18:44:20

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']?>>
1
répondu Rembo 2017-02-21 01:04:03

, 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;
1
répondu Mazz 2017-04-14 09:30:54

J'utilise cette astuce depuis plusieurs années et cela fonctionne parfaitement sans aucun problème pour l'état de la case à cocher cochée/dé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: supprimer" case à cocher " si vous voulez l'afficher comme non cochée par défaut

Code HTML: (pour modifier la Page)

<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 l'ait vérifiée. Donc, nous avons déjà du code PHP pour attrapez-le sinon gardez la valeur à 0. Ensuite, utilisez simplement la variable $ status pour la base de données.

0
répondu 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
répondu 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
répondu Grzegorz 2016-10-21 13:05:53