PHPでチェックボックスがチェックされている場合の読み方は?


266

PHPでチェックボックスがチェックされている場合の読み方は?


8
この質問は、実際に「意味ました(フォームが送信されたとき)にチェック」。PHP チェックボックスチェックされているかどうかを判断するには、要素が切り替えられたときにAjax呼び出しが必要になります。
rybo111 2018

回答:


342

HTMLページが次のようになっている場合:

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

フォームを送信した後、次の方法で確認できます。

isset($_POST['test'])

または

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

57
チェックボックスはon、チェックされるときにvalueを持つこともできます。したがって、互換性のために使用するだけの方が簡単isset($_POST['checkboxName'])です。
Damiqib

13
「on」値は、value属性が設定されていない場合に一部のブラウザーでサポートされる可能性がありますが、一般的にはvalue属性を設定し、送信時にそれを確認することをお勧めします。
m_vitaly 2010

3
ボックスがチェックされている場合、「Value1」は変更されますか?
MoralCode、2014年

10
@Developer_ACE誤解しない限り、この例の値はvalue1、チェックボックスがオンの場合です。チェックされていない場合、$_POST['test']単に存在しません。
rybo111

104

Zend Frameworkはチェックボックスに素敵なハックを使用しています。

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

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

私もそれに気づきましたが、私はそれを使用しても安全だと感じています。ZendFrameworkもそれを行います!
hpaknia 2014

これは面白い。しかし、チェックボックスがオンになっていると仮定すると、ユーザーエージェントが最後の値ではなく最初の値を送信する可能性がありますか?
rybo111

@ rybo111、ユーザーエージェントの場合はそうは思いませんが、カスタムJavaScriptフォームパーサーの場合は注意が必要です。
regilero

申し訳ありませんが、誰かが私にそれがどのように機能するか説明してくれませんか 分かりませんでした。最後の値のみが常に送信されるのに、なぜその非表示のフィールド(の値input[type="checkbox"])なのですか?
tonix 2016年

6
チェックボックスがオフの場合、投稿では送信されません(したがって、非表示のみが送信されます)。チェックすると送信され、隠し値を上書きします。
regilero 2016

53

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

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

配列としてのチェックボックスとチェックされたforeach ($_POST['food'] as $selected_food)もので動作することは素晴らしいです、ありがとう
bcag2

42

チェックボックスの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
} 


6

私はこのトリックを数年使用しており、PHPとデータベースで使用しているときに、チェック済み/未チェックのチェックボックスのステータスに問題なく完全に機能します。

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

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

ヒント:「チェックボックス」をデフォルトでオフにしたい場合は削除します

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コードが既にあるので、値を0に保ちます。次に、データベースの$ status変数を使用します。


1
これは、純粋な単純なphpでこれを行うには本当に良い形です。ただし、チェックボックスがアクティブになっている場合、チェックボックスの値はチェックされている場合は存在しない値であることに注意する必要があります。
Elvis Technologies

4

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

フォームが送信されると、すべてのPOST変数がフォームと共に送信されるため、チェックボックスは常に設定されます。

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

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

3
チェックボックスがオフの場合は送信されないため、常に設定されます。
Wessam El Mahdy

^ *必ず設定しない
Codesee

3

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

つまりname、「test」のa を使用するPOSTフォーム(つまり<input type="checkbox" name="test">、を使用します。

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

}

2

isset変数が使用または設定されたかどうかを確認するためにifステートメントで使用できる組み込みの「関数」について学習します。

例:

    if(isset($_POST["testvariabel"]))
     {
       echo "testvariabel has been set!";
     }

2

さて、上記の例は値を挿入したい場合にのみ機能し、別の列に別の値を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に設定する必要があるため、取得するものはすべて1に設定します。

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

楽しんで :)


2

以下の場合、ショートでそれを行うことができます。

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

または新しいPHP7で Null coalescing operator

$check_value = $_POST['my_checkbox_name'] ?? 0;

1
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

短絡評価your_checkbox_nameは、提出されていないときにアクセスできないように注意します。


1

スイッチ位置を保持する最小限のブールチェック

<?php

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

?>

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

1
答えを出すとき、なぜあなたの答えがそうであるのかについていくつかの説明を与えることが望ましいです。答えるとき、これは特にそうである非常に古いポスト11件の他の回答を。
スティーブンラウフ2017

チェックボックスがその状態を保持する必要性を認識するのは良いことです。ただし、これを行うためのコードは正しくありません。
Vern Jensen 2017

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

ここであなたの目標を説明できますか?
Elvis Technologies

0

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

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


0

ワードプレスにchecked()機能があります。リファレンス:https : //developer.wordpress.org/reference/functions/checked/

checked( mixed $checked, mixed $current = true, bool $echo = true )

説明最初の2つの引数を比較し、同じマークがチェックされている場合

パラメータ$ checked(mixed)(必須)比較する値の1つ

$ current(混合)(オプション)(true)trueでない場合に比較する他の値デフォルト値:true

$ echo(bool)(オプション)エコーするか、単に文字列を返すかデフォルト値:true

Return #Return(string)html属性または空の文字列


-3
<?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']);
} 

?>

Stack Overflowへようこそ!このコードスニペットは問題を解決する可能性がありますが、なぜまたはどのように質問に答えるかは説明していません。コードの説明を含めてください。これは、投稿の品質を向上させるのに役立ちます。あなたは将来の読者のための質問に答えていることを覚えておいてください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。報告者/レビュアー: このようなコードのみの回答の場合は、投票しないでください。削除しないでください。
Scott Weldon 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.