web-dev-qa-db-ja.com

チェックボックスがPHPでチェックされているかどうかを読む方法は?

チェックボックスがPHPでチェックされているかどうかを読む方法は?

239
Thew

HTMLページがこのようになっているとします。

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

フォームを送信した後、あなたはそれをチェックすることができます:

isset($_POST['test'])

または

if ($_POST['test'] == 'value1') ...
306
m_vitaly

Zend Frameworkでは、チェックボックスにニースハックを使用しています。これも自分で行うことができます。

生成されたすべてのチェックボックスは、チェックボックスの直前に配置された同じ名前の隠しフィールドと、値 "0"に関連付けられています。チェックボックスが値「1」の場合は、結果のGETまたはPOSTで常に「0」または「1」の値が表示されます。

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1"> 
91
regilero

チェックボックスを配列として使用する場合:

<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">

in_array()を使うべきです:

if(in_array('Orange', $_POST['food'])){
  echo 'Orange was checked!';
}

次のように、配列が最初に設定されていることを確認してください。

if(isset($_POST['food']) && in_array(...
49
rybo111

チェックボックスのHTMLを次のようにします。

<input type="checkbox" name="check1">

それからあなたのフォームを送信した後、あなたは以下のようにチェックする必要があります。

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

    // Checkbox is selected
} else {

   // Alternate code
}

check1があなたのチェックボックス名であるべきであると仮定します。そしてあなたのフォーム提出方法がGETであるなら、あなたは次のような$_GET変数でチェックする必要があります

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

   // Checkbox is selected
} 
38
Gautam3164
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
7
Hammad Khan

私は数年間このトリックを使ってきました、そしてそれはPHPとDatabaseで使っている間チェックされた/チェックされていないチェックボックスステータスのために何の問題もなく完全に働きます。

HTMLコード:(ページ追加用)

<input name="status" type="checkbox" value="1" checked>

ヒント:デフォルトでチェックされていないものとして表示したい場合は "checkbox"を削除してください

HTMLコード:(編集ページ用)

<input name="status" type="checkbox" value="1" 
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>

PHPコード:(ページの追加/編集に使用)

$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}

ヒント:ユーザーがチェックしない限り、常に空の値があります。それで、それを捕らえるためのPHPコードがすでにあります。

5
ZEESHAN ARSHAD

フォームのアクションに応じて、$ _POSTまたは$ _GET配列のいずれかで、対応する値が設定されていて空ではないことを確認できます。

つまり、POSTフォームで "test"のnameを使用する場合(つまり、<input type="checkbox" name="test">の場合、次のようになります。

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

}
3
John Parker

さて、上記の例は値をINSERTしたいときにのみ機能します。異なる値を異なる列にUPDATEするのには役に立ちません。そのため、ここで更新するためのちょっとしたコツがあります。


//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[]" />

…….

秘密はただ最初にすべてのVALUESを(この場合は0に)更新することです、そしてそれはチェックされた値だけを送るので、それはあなたが得るすべてが1に設定されるべきです。

例はPHPですが、すべてに適用されます。

楽しむ :)

2
Hiram

チェックボックスがチェックされているかどうかを確認するには、 empty() を使用します。

フォームが送信されると、 ALL _ post _ 変数がフォームとともに送信されるため、チェックボックスは _ always _ に設定されます。

次のようにチェックボックスが空白でチェックされているかどうかを確認します。

//Check if checkbox is checked    
if(!empty($_POST['checkbox'])){
 #Checkbox selected code
} else {
 #Checkbox not selected code
}
2
andy

変数が使用されているか設定されているかを判断するためにifステートメントで使用できる組み込みの "関数"であるissetについて学んでください。

例:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }
2
user2451511
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

ショートサーキット評価 送信されていないときにyour_checkbox_nameにアクセスしないように注意します。

1
Martin Thoma

スイッチ位置を保持したミニマルブールチェック

<?php

$checked = ($_POST['foo'] == ' checked');

?>

<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
1
Rembo

次のような場合には、これを短くすることができます。

$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;

または新しい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

bS3ではあなたが置くことができます

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

ご注意ください isset($datosOrdenCompra[0]['exenta'])の使い方

0