Web制作

【PHP・HTML】フォームのチェックボックスの値を取得する方法【配列】

Written by o-saka
PHPエラー『Warning: strtotime(): It is not safe to rely on the system's timezone settings.・・・』対処方法

PHPでフォームを作成する際にチェックボックスを使用する機会があるかと思います。通常のテキスト等の項目とは異なり、複数の選択肢を選ぶ事が出来るため、どのように値を取得すればよいか迷ってしまう方が多いかと思います。この記事ではそんなチェックボックスの値を取得する方法をなるべくわかりやすく解説していきたいと思います!

チェックボックスとは

チェックボックスは、ラジオボタンのように一つしか選択できない仕組みとは異なり、複数の選択項目を選択できることから、メールフォームやアンケートフォーム、絞り込み検索などでよく見かける機能です。

こんなやつですね↓

好きな動物は?(複数選択可)

 いぬ
 ねこ
 ぞう

チェックボックスの記述方法

form構築の際のcheckboxの基本的な記述方法は下記のとおりです。type属性checkboxとしてあげればOKです。

form.php

<form action="result.php" method="post">
<input type="checkbox" name="animal" value="いぬ">いぬ
<input type="checkbox" name="animal" value="ねこ">ねこ
<input type="checkbox" name="animal" value="ぞう">ぞう
<input type="submit" value="送信">
</form>

チェックボックスの値を取得する際の誤り

よくある失敗

チェックボックスの値を取得しようとした際に、上記の記述で実行すると、せっかく複数選択できるはずのチェックボックスですが、選択した項目一つしか取得できなくなってしまいます

下記にデモでフォームを作成してみました。

チェックボックスのデモ 失敗例1(別ウインドウで開きます)

わかりやすく説明するとname属性で指定したanimalには、格納できる情報が一つまでしか入れることが出来ないため、複数選択しても選択した最後の項目しか取得することが出来ないため発生してしまいます。

イメージ

やりがちな回避方法

上記を避けるために、下記のようにname属性をそれぞれ用意するという方法も考えられます。この方法でも値を取得するだけなら問題はありません、ですが、プログラムによっては意図した動作を行うには不適切な記述方法となり得ます。

form.php

<form action="result.php" method="post">
<input type="checkbox" name="animal1" value="いぬ">いぬ
<input type="checkbox" name="animal2" value="ねこ">ねこ
<input type="checkbox" name="animal3" value="ぞう">ぞう
<input type="submit" value="送信">
</form>

イメージ

チェックボックスの値を取得する正しい方法

それでは実際にチェックボックスの値を取得するにはどうすればよいか、それには配列を使用します。

配列とは

配列とは
複数の要素(値)の集合を格納・管理するのに用いられるデータ構造配列である。

配列 – Wikipedia より引用

チェックボックスのように複数の値を扱う必要がある場合には、この配列を用いてプログラムを記述します。

それでは実際にどのような記述になるか見てみましょう。name属性のanimalの後ろに[]を記述するだけです。これだけでname属性を増やすことなく、複数の値をanimalに格納することができます。

form.php

<form action="result.php" method="post">
<input type="checkbox" name="animal[]" value="いぬ">いぬ
<input type="checkbox" name="animal[]" value="ねこ">ねこ
<input type="checkbox" name="animal[]" value="ぞう">ぞう
<input type="submit" value="送信">
</form>

イメージ

配列に格納した値を取得する方法

では次に、配列に格納した値を取得する方法を解説していきます。

配列に格納した値を出力しようとした時に、うっかり通常通りの取得方法を行うと下記のような表示がでます。たまに見かける方も多いのではないでしょうか。

result.php

<?php
$favorite_animal = $_post['animal']
?>
<p>あなたの好きな動物は「<?php echo $favorite_animal ?>」です。</p>

出力例

あなたが好きな動物は「 Array 」です。

チェックボックスのデモ 失敗例2(別ウインドウで開きます)

選択された項目名を出力したかったのにArray(配列)」と出力されてしまいました。それでは配列に格納された値を出力するにはどのように記述すればよいでしょうか。

foreachを使う

foreach分を使うことで配列に格納されている値をすべて出力することができます。

result.php

<?php
$favorite_animal = $_post['animal']
?>
<p>あなたの好きな動物は
<?php
foreach($favorite_animal as $animal_name){
echo '<span>'. $animal_name . '</span> ';
}
?>
です。</p>

見栄えは各自整えてもらうとして、無事出力されました。

チェックボックスのデモ 成功例(別ウインドウで開きます)

 

この記事を書いた人

o-saka(@abiko41)

フリーランスでWEB作ったりロゴ作ったりしてます。
お仕事のご依頼等は下記フォームより承っております 。お気軽にお問い合わせください。

お問い合わせ