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つの応用例を参考にして、実際のプロジェクトに取り入れてみてください。

コメントを残す