プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (3件)

こんばんわ


$_POSTをforeachで展開していますが、チェックボックスの変数名は$_POST["cat"]じゃぁ無いですか?

print_r($_POST);とすれば原因がつかみやすいと思います。

この回答への補足

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

補足日時:2007/07/20 00:56
    • good
    • 0

下の間違い



var_dump( $a ) → var_dump( is_array( $a ) );

var_dump( $_POST[ 'cat' ] ) → var_dump( is_array( $_POST[ 'cat' ] ) );

 すみません.
    • good
    • 0

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' ] );

 の結果は・・・・・?.
    • good
    • 0
この回答へのお礼

知識不足ですみませんでした。

>catチェックボックス群に一つもチェックを入れなかった場合は$_POST['cat']は配列どころか値が入りません.そのあたりをよく考えてください.

がいまいち分かっていなかったみたいです。
教えていただいたのをヒントにやってみたところ、希望通りのができました。
ありがとうございました。

お礼日時:2007/07/20 13:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!