libro
www.tuyano.com
初心者のためのPHPプログラミング入門

フォーム送信の基本をマスターしよう (5/5)

作成:2010-12-04 15:25
更新:2010-12-05 11:20

■リストの複数項目選択は?

これでフォームの項目類の基本的な扱い方は分かりました。が、まだ説明していないものが1つだけあります。それは「<select>の複数項目選択」です。

<select>によるリストは、multipleという属性を設定することで、複数の項目を選択できるようになります。このような場合、どうやって選択された項目をチェックすれば良いのでしょうか。通常のやり方では、うまくいきません。ちょっとしたテクニックを用いる必要があります。

下に、簡単なサンプルをあげておきます。フォームの項目を適当に選択して送信してみましょう。選択された項目がすべてその上に出力されます。

ここでは、$arr = $_POST['list1'];というようにして選択したリストの値をとり出しています。そして、
foreach($arr as $item){
    $result .= $item . "\n";
}
このように、foreachを使って、$arrから値を順に取り出して処理をしています。つまり、この$arrは、配列なのです。選択された項目がすべて配列として渡されていたのですね。

が、配列としてデータを受け取るためには、実はフォーム側にも仕掛けをしておかなければいけません。<select>タグの部分をよく見てください。
<select name="list1[]" size="5" multiple>
複数項目が選択できるように「multiple」という属性が追加されています。が、ポイントはそこじゃありません。名前が、name="list1[]"と指定されています。"list1"ではなく、"list1[]"です。このように記述することで、このlist1の値は、一般的なテキストではなく、テキストの配列として渡されるようになるのです。

この「リストの複数項目選択」というのは、知らないと以外に引っかかる部分です。ここでよく理解しておきましょう。

■代入演算子について

ところで、ここではもう1つ、見慣れない記号が出てきています。「.=」というものです。これは、右辺のテキストを左辺の変数の末尾に付け足す演算記号です。つまり、「A .= B」というのは、「A = A . B」と同じ意味になります。これを、もっとシンプルに書けるようにしたものなのですね。

このように「右辺の値を演算して左辺に収める」という記号は「代入演算子」と呼ばれます。以下のようなものがあります。

A += B ――AにBを足す
A -= B ――AからBを引く
A *= B ――AにBをかける
A /= B ――AをBで割る
A %= B ――AをBで割ったあまりをAに代入する
A .= B ――Aのテキストの末尾にBのテキストを追加する

これらを覚えておくと、変数の値を書き換える処理がとてもシンプルに書けるようになりますよ。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<?php
	if ($_POST != null){
		$arr = $_POST['list1'];
		$result = "";
		foreach($arr as $item){
			$result .= $item . "\n";
		}
	} else {
		$result = "選択してね。";
	}
?>
<!DOCTYPE html
	PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
		xml:lang="ja" lang="ja"> 
	<head> 
		<meta http-equiv="Content-Type"
			content="text/html; charset=UTF-8" /> 
		<title>sample page</title>
	</head>
	<body>
		<h1>Hello PHP!</h1>
		<pre><?php
			echo  htmlspecialchars($result);
		?></pre>
		<form method="post" action="./index.php">
			<select name="list1[]" size="5" multiple>
				<option value="Windows">Windows</option>
				<option value="Mac OS">Mac OS</option>
				<option value="Linux">Linux</option>
				<option value="Android">Android</option>
				<option value="iOS">iOS</option>
			</select>
			<input type="submit">
		</form>
	</body>
</html>

※関連コンテンツ

「初心者のためのPHPプログラミング入門」に戻る