PHPでの送信後にチェックボックスの選択値を保存する

では、送信後にチェックボックスの値が保存されるようにしましょう。そのためには、フォームが送信されたこと(つまり、$_GET['flag']が存在する)かつチェックボックスがオンになっていること(つまり、値が1に等しい)を確認します。

この2つの条件が満たされる場合、チェックボックスにchecked属性を出力します。

html<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を出力することができます。

html<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>
Задание 1

送信後にそれぞれの値を保存する3つのチェックボックスを作成してください。