- ベストアンサー
チェックボックスが複数選択できない
アンケートフォームを作成していますが、チェックボックスで複数項目を選択しても最後のひとつしか表示されずに困っています。 配列での処理にすれば良いという事なので自分なりにやってみたのですが、今度は「Array」と表示されてしまい、具体的にどうしたらいいのか分かりません。 ※html側 <input type="checkbox" name="cat[]" value="abc"> <input type="checkbox" name="cat[]" value="def"> ※php側 <FORM action="<? echo $script; ?>" method="POST"> <? echo $err_message; ?> <?php foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("項目:".$key."選択したのは".$var); ?> <INPUT type="hidden" name="<?= $key ?>" value="<?= $var ?>"> <?php print("です。\n"); } ?> となっています。 また、選択内容をメール送信するようになっており、 foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); if($var == "eweb_submit") ; else $rebody.="[".$key."] ".$var."\n"; です。 複数項目をまとめて処理しているようで、どうしたらいいのか分かりません。ちなみに、http://www.eweb-design.com/のフリーのメールフォームを使っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんわ $_POSTをforeachで展開していますが、チェックボックスの変数名は$_POST["cat"]じゃぁ無いですか? print_r($_POST);とすれば原因がつかみやすいと思います。
その他の回答 (2)
- stanaka
- ベストアンサー率44% (13/29)
下の間違い var_dump( $a ) → var_dump( is_array( $a ) ); var_dump( $_POST[ 'cat' ] ) → var_dump( is_array( $_POST[ 'cat' ] ) ); すみません.
- stanaka
- ベストアンサー率44% (13/29)
taketan_mydns_jpさんの説明をちゃんと読みましたか? print_r($_POST)すればすぐわかるはずなのですが,あなたが自分でおっしゃったように,チェックボックスの変数名をcatとして,そのcatを配列として扱うようにプログラミングしたわけです. ということは, $_POST という変数はもとより配列ですが,その配列のメンバである, $_POST[ 'cat' ] も配列になるということです.つまり, foreach( $_POST[ 'cat' ] as $catk => $catv ){ } というふうにループを回せば,その配列の中身を取り出すことができます. ただし,あなたのプログラミングのままでは,catチェックボックス群に一つもチェックを入れなかった場合は$_POST['cat']は配列どころか値が入りません.そのあたりをよく考えてください. ちなみにある値が配列かどうかは is_array()という関数で判断できます. $a = array(); var_dump( $a ); 結果: bool(true) ということは,チェックを入れたときは var_dump( $_POST[ 'cat' ] ); の結果は・・・・・?.
お礼
知識不足ですみませんでした。 >catチェックボックス群に一つもチェックを入れなかった場合は$_POST['cat']は配列どころか値が入りません.そのあたりをよく考えてください. がいまいち分かっていなかったみたいです。 教えていただいたのをヒントにやってみたところ、希望通りのができました。 ありがとうございました。
補足
すみません、説明不足でした。 アンケートフォームを作成していて、チェックボックスをcatにしていますが、他にも複数項目あります。他の項目は問題ないのですが、チェックボックスにした項目は、複数選択しても一つしか表示されないので困っております。