チェックボックスがPHPでチェックされているかどうかを読む方法は?
HTMLページがこのようになっているとします。
<input type="checkbox" name="test" value="value1">
フォームを送信した後、あなたはそれをチェックすることができます:
isset($_POST['test'])
または
if ($_POST['test'] == 'value1') ...
Zend Frameworkでは、チェックボックスにニースハックを使用しています。これも自分で行うことができます。
生成されたすべてのチェックボックスは、チェックボックスの直前に配置された同じ名前の隠しフィールドと、値 "0"に関連付けられています。チェックボックスが値「1」の場合は、結果のGETまたはPOSTで常に「0」または「1」の値が表示されます。
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
チェックボックスを配列として使用する場合:
<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(...
チェックボックスの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
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
私は数年間このトリックを使ってきました、そしてそれは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コードがすでにあります。
フォームのアクションに応じて、$ _POSTまたは$ _GET配列のいずれかで、対応する値が設定されていて空ではないことを確認できます。
つまり、POSTフォームで "test"のname
を使用する場合(つまり、<input type="checkbox" name="test">
の場合、次のようになります。
if(isset($_POST['test']) {
// The checkbox was enabled...
}
さて、上記の例は値を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ですが、すべてに適用されます。
楽しむ :)
チェックボックスがチェックされているかどうかを確認するには、 empty() を使用します。
フォームが送信されると、 ALL _ post _ 変数がフォームとともに送信されるため、チェックボックスは _ always _ に設定されます。
次のようにチェックボックスが空白でチェックされているかどうかを確認します。
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
変数が使用されているか設定されているかを判断するためにifステートメントで使用できる組み込みの "関数"であるisset
について学んでください。
例:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
ショートサーキット評価 送信されていないときにyour_checkbox_name
にアクセスしないように注意します。
スイッチ位置を保持したミニマルブールチェック
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
次のような場合には、これを短くすることができます。
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
または新しいPHP7のNull coalescing operator
で
$check_value = $_POST['my_checkbox_name'] ?? 0;
filter_input(INPUT_POST、 'checkbox_name'、FILTER_DEFAULT、FILTER_FORCE_ARRAY)
<?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>
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'])
の使い方