人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

HTMLでCheckboxというFormコントロールがありますが、これを複数行選択可能にした場合、PHPでその情報を受けるにはどうしたらよろしいでしょうか?
nameにしていた名前を、$_POST[name]から取り出しても期待通りに行きません。

●質問者: makocan
●カテゴリ:コンピュータ インターネット
✍キーワード:HTML name PHP コントロール 名前
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● sera_yr
●23ポイント

こんにちは。

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

格納されている値は、

print_r( $_POST[name] )

で確認できます。

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

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


2 ● nabetomo
●23ポイント

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

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


3 ● villain
●22ポイント

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;
}
}


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


ダミー


4 ● ヨネちゃん
●26ポイント

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

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

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

◎質問者からの返答

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

解決しました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ