• ベストアンサー

チェックボックスが複数選択できない

アンケートフォームを作成していますが、チェックボックスで複数項目を選択しても最後のひとつしか表示されずに困っています。 配列での処理にすれば良いという事なので自分なりにやってみたのですが、今度は「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/のフリーのメールフォームを使っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんばんわ $_POSTをforeachで展開していますが、チェックボックスの変数名は$_POST["cat"]じゃぁ無いですか? print_r($_POST);とすれば原因がつかみやすいと思います。

mimimi38
質問者

補足

すみません、説明不足でした。 アンケートフォームを作成していて、チェックボックスをcatにしていますが、他にも複数項目あります。他の項目は問題ないのですが、チェックボックスにした項目は、複数選択しても一つしか表示されないので困っております。

その他の回答 (2)

  • stanaka
  • ベストアンサー率44% (13/29)
回答No.3

下の間違い var_dump( $a ) → var_dump( is_array( $a ) ); var_dump( $_POST[ 'cat' ] ) → var_dump( is_array( $_POST[ 'cat' ] ) );  すみません.

  • stanaka
  • ベストアンサー率44% (13/29)
回答No.2

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' ] );  の結果は・・・・・?.

mimimi38
質問者

お礼

知識不足ですみませんでした。 >catチェックボックス群に一つもチェックを入れなかった場合は$_POST['cat']は配列どころか値が入りません.そのあたりをよく考えてください. がいまいち分かっていなかったみたいです。 教えていただいたのをヒントにやってみたところ、希望通りのができました。 ありがとうございました。

関連するQ&A