PHPでマスター!チェックボックスの使い方と応用例5選

1. チェックボックスの基本的な使い方

最初に、チェックボックスを使った基本的なHTMLフォームの例を見てみましょう。

HTMLコード:

<form method="post" action="process.php">
  <label>
    <input type="checkbox" name="hobby[]" value="読書"> 読書
  </label>
  <label>
    <input type="checkbox" name="hobby[]" value="音楽"> 音楽
  </label>
  <label>
    <input type="checkbox" name="hobby[]" value="運動"> 運動
  </label>
  <button type="submit">送信</button>
</form>

PHPコード (process.php):

if (isset($_POST['hobby'])) {
    $hobbies = $_POST['hobby'];
    foreach ($hobbies as $hobby) {
        echo "選択された趣味: " . htmlspecialchars($hobby) . "<br>";
    }
} else {
    echo "何も選択されていません。";
}

name属性に配列形式 (hobby[]) を指定することで、複数の値を受け取る。
issetで値が存在するか確認し、htmlspecialcharsで安全に出力。

2. デフォルトでチェックをつける

特定の条件下で、あらかじめチェックをつけておきたい場合があります。たとえば、ユーザーが以前に選択した項目を再表示する際などです。

HTMLコード (動的生成):

<?php
$saved_hobbies = ["読書", "運動"];
?>
<form method="post" action="process.php">
  <label>
    <input type="checkbox" name="hobby[]" value="読書" 
      <?php if (in_array("読書", $saved_hobbies)) echo "checked"; ?>> 読書
  </label>
  <label>
    <input type="checkbox" name="hobby[]" value="音楽" 
      <?php if (in_array("音楽", $saved_hobbies)) echo "checked"; ?>> 音楽
  </label>
  <label>
    <input type="checkbox" name="hobby[]" value="運動" 
      <?php if (in_array("運動", $saved_hobbies)) echo "checked"; ?>> 運動
  </label>
  <button type="submit">送信</button>
</form>

PHPのin_array関数を使って、保存済みの値に基づいてchecked属性を動的に追加。

3. チェックボックスの選択数を制限する

複数のチェックボックスから選択可能な数を制限する場合、JavaScriptを併用します。

HTML + JavaScript:

<form method="post" action="process.php">
  <label>
    <input type="checkbox" name="hobby[]" value="読書" class="limited"> 読書
  </label>
  <label>
    <input type="checkbox" name="hobby[]" value="音楽" class="limited"> 音楽
  </label>
  <label>
    <input type="checkbox" name="hobby[]" value="運動" class="limited"> 運動
  </label>
  <label>
    <input type="checkbox" name="hobby[]" value="旅行" class="limited"> 旅行
  </label>
  <button type="submit">送信</button>
</form>
<script>
  const checkboxes = document.querySelectorAll(".limited");
  const limit = 2;
  checkboxes.forEach(checkbox => {
    checkbox.addEventListener("change", () => {
      const checkedCount = document.querySelectorAll(".limited:checked").length;
      if (checkedCount > limit) {
        checkbox.checked = false;
        alert("選択できるのは" + limit + "つまでです。");
      }
    });
  });
</script>

4. チェックボックスの値をデータベースに保存

選択されたチェックボックスの値をデータベースに保存する例です。

PHPコード:

if (isset($_POST['hobby'])) {
    $hobbies = implode(",", $_POST['hobby']);
    // データベース接続
    $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'password');
    $stmt = $pdo->prepare("INSERT INTO user_hobbies (hobbies) VALUES (:hobbies)");
    $stmt->execute([':hobbies' => $hobbies]);
    echo "データベースに保存しました: " . htmlspecialchars($hobbies);
} else {
    echo "何も選択されていません。";
}

implodeを使って配列をカンマ区切りの文字列に変換。
データベース操作はPDOを使用し、安全なprepare文を活用。

5. 条件付きでフォームを動的に表示

チェックボックスの選択に応じて、別のフォームを動的に表示する例です。

HTML + JavaScript:

<form method="post" action="process.php">
  <label>
    <input type="checkbox" id="showDetails" name="showDetails" value="1"> 詳細を入力
  </label>
  <div id="detailsForm" style="display:none;">
    <label>詳細内容: <input type="text" name="details"></label>
  </div>
  <button type="submit">送信</button>
</form>
<script>
  document.getElementById("showDetails").addEventListener("change", function() {
    const detailsForm = document.getElementById("detailsForm");
    detailsForm.style.display = this.checked ? "block" : "none";
  });
</script>

チェックボックスに応じた条件付き表示を実現。
ユーザーインターフェイスをわかりやすく改善。

まとめ

PHPでチェックボックスを使う際には、基本的なフォーム処理から動的な表示、データベース連携など幅広い活用が可能です。

今回紹介した5つの応用例を参考にして、実際のプロジェクトに取り入れてみてください。