概要:このチュートリアルでは、PHPを使用して一つ以上のチェックボックスを持つフォームを処理する方法を学びます。
checkbox要素の簡単な紹介
checkboxを使用すると、フォームで送信するための単一の値を選択できます。 チェックボックスを作成するには、次のようにcheckbox型のinput要素を使用します:
Code language: HTML, XML (xml)
チェックボックスには、checkedとuncheckedの2つの状態があります。
チェックボックスをオンにしてPOSTメソッドを使用してフォームを送信すると、$_POST連想配列には、キーがcheckbox_nameで値がcheckbox_valueの要素が含まれます。
Code language: PHP (php)
ただし、チェックボックスをオフにしてフォームを送信すると、$_POSTにはキーcheckbox_nameを持つ要素はありません。 これは、次の式が返されることを意味しますfalse:
Code language: PHP (php)
チェックボックスがチェックされているかどうかを確認するには、次のようなfilter_has_var()関数を使用することもできます:
Code language: JavaScript (javascript)
filter_has_var()関数は、checkbox_nameがINPUT_POSTに存在する場合、trueを返します。
チェックボックスにはラベルがありません。 したがって、次のような<label>要素を持つcheckboxを常に使用する必要があります:
Code language: HTML, XML (xml)
この例では、<label>要素のfor属性の値は、checkboxのid属性の値と同じです。 ラベルをチェックボックスに関連付けるときに、ラベルをクリックしてチェックボックスをオンまたはオフにすることができます。
チェックボックスをラベルに関連付ける別の方法は、次のようにラベル内にチェックボックスを配置することです:
Code language: HTML, XML (xml)
この場合、チェックボックスにidを指定し、ラベルにfor属性を指定する必要はありません。
シンプルなPHPのチェックボックスの例
チェックボックスと送信ボタンを持つシンプルなフォームを作成します。
まず、次のディレクトリとファイル構造を作成します:
Code language: plaintext (plaintext)
| ファイル | ディレクトリ | 説明 |
|---|---|---|
| インデックス。php | 。 | getをロードするメインロジックが含まれています。phpまたはpost。HTTPリクエストメソッドに応じたphp |
| ヘッダ。php | inc | にヘッダーコードが含まれています |
| フッター…php | inc | にフッターコードが含まれています |
| 取得します。php | inc | には、HTTPリクエストがGETのときにチェックボックス付きのフォームを表示するためのコードが含まれています。 |
| ポスト。php | inc | には、POSTリクエストを処理するためのコードが含まれています |
| .htaccess | inc | incディレクトリ内のファイルへの直接アクセスを禁止します |
| スタイル。css | css | にはCSSコードが含まれています |
インデックス。php
次に、index.phpファイルに次のコードを追加します:
Code language: PHP (php)
HTTP要求メソッドがGETの場合、index.phpはget.phpファイルからフォームをロードします。 また、フォームが送信された場合はpost.phpファイルがロードされます。
$errors変数は、エラーメッセージを格納するために使用されます。
php
第三に、header.phpファイルに次のコードを配置します:
Code language: HTML, XML (xml)
フッター…php
第四に、footer.phpファイルには、header.phpファイルの開始タグに対応する囲むタグが含まれています:
Code language: HTML, XML (xml)
取得します。php
第五に、get.phpファイルにフォームを作成します:
Code language: PHP (php)
ポスト。php
第六に、フォームデータをサニタイズして検証するために、post.phpファイルに次のコードを追加します:
Code language: PHP (php)
概要
- チェックボックスがチェックされているかどうかを確認するには、
isset()またはfilter_has_var()を使用します。