HTMLでCheckboxというFormコントロールがありますが、これを複数行選択可能にした場合、PHPでその情報を受けるにはどうしたらよろしいでしょうか?

nameにしていた名前を、$_POST[name]から取り出しても期待通りに行きません。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/05/16 16:50:44
  • 終了:2006/05/16 23:37:00

回答(4件)

id:sera_yr No.1

sera_yr回答回数123ベストアンサー獲得回数62006/05/16 17:06:56

ポイント23pt

こんにちは。

$_POST[name]は配列で、チェックした値だけが連続して格納されていると思います。

格納されている値は、

print_r( $_POST[name] )

で確認できます。

取り出し方についてはこちらを参照されてはいかがでしょうか。

http://www.gac.jp/article/index.php?stats=question&category=11&i...

id:nabetomo No.2

nabetomo回答回数125ベストアンサー獲得回数62006/05/16 17:35:46

ポイント23pt

一度配列を取得、代入し参照するそうです。

http://ns1.php.gr.jp/pipermail/php-users/2003-September/018309.h...

id:villain No.3

villain回答回数174ベストアンサー獲得回数122006/05/16 17:48:11

ポイント22pt

PHPはよく知らないので外している可能性大ですが

チェックボックスやラジオボタンなどの場合、同じnameを

指定しないといけなくて同じ名前を指定すると同じ名前のFORM

情報が送信され、上書きされてしまいます。

CGI(Perl)の場合はチェックボックスやラジオボタンのFORM情報は

配列のハッシュで取得します。


# 環境変数取得
if ($ENV{'REQUEST_METHOD'} eq "POST"){
	read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
	$query = $ENV{'QUERY_STRING'};
}
# デコード
$i = 0;
$j = 0;
@args = split(/&/, $query);
foreach $i (@args) {
	($name, $val) = split(/=/, $i);
	$val =~ tr/+/ /;
	$val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack('C', hex($1))/eg;
	# チェックボックスの場合
	if($name eq 'checkbox') {
		$cgi{$name}[++$i] = $val;
	# ラジオボタンの場合
	} elsif($name 'radiobutton') {
		$cgi{$name}[++$j] = $val;
	# それ以外の場合
	} else {
		$cgi{$name} = $val;
	}
}


(上記は動作確認していませんが確かこんな感じだったと)


ダミー

id:yoneto164 No.4

ヨネちゃん回答回数813ベストアンサー獲得回数942006/05/16 18:25:29

ポイント26pt

http://www.sakura-pc.jp/php/02020000.shtml

にあるように、name="chk[]" というかたちにします。

name="chk" だと最後にチェックされた部分しか取得できません。

id:makocan

ありがとうございました!

解決しました!

2006/05/16 23:35:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません