PHPでの送信後にチェックボックスの選択値を保存する
では、送信後にチェックボックスの値が保存されるようにしましょう。そのためには、フォームが送信されたこと(つまり、$_GET['flag']が存在する)かつチェックボックスがオンになっていること(つまり、値が1に等しい)を確認します。
この2つの条件が満たされる場合、チェックボックスにchecked属性を出力します。
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input
type="checkbox"
name="flag" <?php
if (isset($_GET['flag']) and $_GET['flag'] === '1')
echo 'checked';
?>
>
<input type="submit">
</form>
隠し入力が必ず0を送信することがわかっている場合は、チェックを簡略化できます。この場合、チェックボックスがオフのときは$_GET['flag']に'0'が格納され、フォームがまだ送信されていないときはnullが格納されます。
どちらの場合も、checkedを出力してはいけません。そして、これらの両方のケースはempty関数で検出できます。したがって、$_GET['flag']が空でないことを確認し、その場合のみcheckedを出力することができます。
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input
type="checkbox"
name="flag"
value="1"
<?php if (!empty($_GET['flag'])) echo 'checked' ?>
>
<input type="submit">
</form>
送信後にそれぞれの値を保存する3つのチェックボックスを作成してください。