TODAY: YESTERDAY:
TOTAL:

Lesson8-4 〜チェックボックスから受け取り〜
■Lessonを終えると以下のようなPHPプログラムが作れます。


Lessonサンプル

■サンプルプログラム1

テキストエディタに以下のように書き込んで、「lesson8」フォルダの中に「form4.html」として保存しましょう。

<html>
<head>
<title>form</title>
</head><body>
<p>お好きなモノをお選びください。</p>
<form name="form1" method="post" action="./sample04.php">
からすみ<input type="checkbox" name="chk[]" value="からすみ"><br>
烏賊の沖漬け<input type="checkbox" name="chk[]" value="烏賊の沖漬け"><br>
チャーシュー盛り<input type="checkbox" name="chk[]" value="チャーシュー盛り"><br>
酢のモノ<input type="checkbox" name="chk[]" value="酢のモノ"><br>
レバー<input type="checkbox" name="chk[]" value="レバー"><br>
<input type="submit" name="Submit" value="送信">
</form>
</body>
</html>

■サンプルプログラム2

<?php
// $checkboxの中身は配列
$checkbox = $_REQUEST["chk"];
?><html>
<head>
<title>sample04</title>
</head>
<body>
あなたの好きなものは。<hr>
<?php
for($i=0; $i<sizeof($checkbox); $i++){
print "${checkbox[$i]}<br>";
}
?>

<p><a href="form4.html">戻る</a></p>
</body>
</html>

テキストエディタに以下のように書き込んで、「lesson8」フォルダの中に「sample04.php」として保存しましょう。

できましたら、ブラウザのアドレスに
http://localhost/lesson8/form4.html」にアクセス!
ロリポップ!
さくらのレンタルサーバ
などのレンタルサーバー使ってる方はlocalhostのところはドメイン名になります。
(簡単に安くネットショップを開きたい方はこちら!)

さて、如何でしょうか?ちゃんと表示されましたでしょうか?

■解説1(from4.html)

<input type="checkbox" name="chk[]" value="からすみ">

え〜っと、まずコレ。ちょっと特殊ですが、name属性に「chk[]」となっています。ちょっと見づらいので拡大、

name = "chk[]"

つまり、[]←これは、[ ←こいと、] ←こいつが組み合わさったんデスナ。チェックボックスのname属性には、このようにすべて同じ名前をつけます。送られる値はやっぱりvalue属性で、この値が送られます。

■解説2(sample04.php)

$checkbox = $_REQUEST["chk"];

まずは、ココ。ただの変数に入れてる感じがしますが、じつはコノ$checkboxは、配列です。form4.htmlで、チェックボックスのname属性に「chk[]」とつけましたが、ソレを$_REQUEST[""]に与えています。ここで注意が必要なのは、[]こいつは入れないこと。なんで?って言わないでください。私にもわかりません
  なんで、チェックボックスが厄介かと言うと、ソレは選択するユーザーがどれを選択するのかが、わからないことです。ですから、チェックされているものを全てチェックしてその際、チェックがされていたのを配列である$checkboxに入れるわけデスナ。 さて、それではチェックされたものを配列にいれてみマスカ!

for($i=0; $i<sizeof($checkbox); $i++){
print "${checkbox[$i]}<br>";
}

え〜っと、Lesson6でやったsizeof()関数を使用しています。count()でもOKみたいです。なんとなく、sizeof()が好きなだけデス。ココでやっていることは、$checkboxに入った値分だけ、ループし$checkbox[$i]とすることで、それぞれの値を出力しているわけです。では、順を追って見てみましょう。「からすみ」「チャーシュー盛り」を選択して送信したとしましょう。

  1. $checkboxに「からすみ」と「チャーシュー盛り」が代入されます。
    つまり、「$checkbox = array("からすみ","チャーシュー盛り");」ということになります。
  2. sizeof($checkbox)で、配列の数を数えます。
    「からすみ」と「チャーシュー盛り」なので「2」となりますね。
  3. あとは、forループの中で$checkbox[$i]を出力すればOKです。
    まず、$iに「0」がセットされて、0<2でループが実行されます。$checkbox[0]となるので、「からすみ」が出力されます。$iがインクリメント(1足されて)「1」になります。1<2なので、まだループは実行されます。$checkbox[1]なので「チャーシュー盛り」が出力されます。さらに、$iはインクリメントされて「2」になります。2<2はfalseになるので、ループを中止します。

さて、如何でしたでしょうか?ちょっと、チェックボックスだけは、特殊でとっつきにくい所もありますが書けばおぼえちゃいます。忘れちゃってもコノページを見て思い出せばいいですし^^

このLessonが役に立った方は、1クリックお願いします!PHPランキング

■スポンサードリンク