web-dev-qa-db-fra.com

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

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

231
Thew

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') ...
294
m_vitaly

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"> 
91
regilero

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(...
48
rybo111

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
} 
37
Gautam3164
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
7
Hammad Khan

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.

4
ZEESHAN ARSHAD

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...

}
3
John Parker

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 :)

2
Hiram

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
}
2
andy

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!";
     }
2
user2451511
$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.

1
Martin Thoma

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']?>>
1
Rembo

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
Mazz

filter_input (INPUT_POST, 'checkbox_name', FILTER_DEFAULT, FILTER_FORCE_ARRAY)

0
Thowfeek
<?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
antelove

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'])

0
Elvis Technologies