• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpでの複数選択チェックボックスのデータ取得に関して質問です。)

phpでの複数選択チェックボックスのデータ取得に関して質問です。

このQ&Aのポイント
  • 制作中のWEBサイトにお問い合わせページを作っています。チェックボックスを複数選択した際に、一番最後の値しか取得できない不具合が発生しています。
  • お問い合わせページでは複数の値を取得して表示することができていますが、メールで送信する際には一番最後の値しか取得・表示できません。
  • php初心者ですので、ソースコードに誤りがあるかもしれません。ご指摘いただけると助かります。

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

  • ベストアンサー
  • duron
  • ベストアンサー率77% (73/94)
回答No.3

確認フォームの出力の際に$koumokuに代入されるのは"件名[]"ではなく"件名"になっていると思います。 そのため出力されたinput-hiddenのnameはどれも"件名"になっているのではないでしょうか? 確認フォームとして出力されたpageのソースを覗いてみてください。 配列としてPOSTされるにはお問い合わせページのHTMLのように[]が必要になります。 print("<INPUT type='hidden' name=".$koumoku." value=".$var.">"); ↓ print("<INPUT type='hidden' name=".$koumoku."[] value=".$var.">"); のように修正したら(elseの下の方は不要)うまく動いてくれませんかね~?

saho0201
質問者

お礼

返信ありがとうございます! ご指摘通り修正したら、きちんと値が取得できるようになりました! なるほど、確認フォームのほうで値を渡す際に配列になっていなかったのが 原因だったんですね。 ご丁寧に教えてくれてありがとうございます。 他の返信下さった方々もありがとうございました。

その他の回答 (2)

回答No.2

「お問い合わせページ⇒確認ページ⇒メールで送信」っていうのはそれぞれ別のPHPファイルに飛ぶんですかね? なんとなくhiddenで値を渡してるフォームに見えるので、 確認ページを出力している部分のソースがあればわかるかもしれません。 フリーのメールフォームの改変ならその配布元を明記するのが一番手っ取り早いですが(笑

saho0201
質問者

お礼

返信ありがとうございました。 皆様のおかげで解決致しました。 今後も何かあった際はよろしくお願いします。

saho0201
質問者

補足

返信ありがとうございます! メールフォームは「イーウェブ」というところからダウンロードしました。 確認ページとメール送信の部分は同じphpファイルにあって、 お問い合わせページのHTMLからとびます。 確認ページを出力している部分のソースを下記に載せます。 確かに、hiddenという部分があります。ここで値の受け渡しをしているのでしょうか? -------------------------------------------------- <?php foreach($_POST as $key=>$var) { $koumoku =$key ; //取得した項目名を変数に代入しておく if(is_array($_POST[$key])==true) { foreach($_POST[$key] as $key=>$var) { $key = strtr($key, $string_from, $string_to); if (get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); $key = htmlspecialchars($key); print("<tr bgcolor=#ffffff><td bgcolor=#eeeeee width='150' style='padding:5px;'>".$koumoku."</td><td style='padding:5px;'>".$var); print("<INPUT type='hidden' name=".$koumoku." value=".$var.">"); print("</td></tr>\n"); } } else { $key = strtr($key, $string_from, $string_to); if (get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); $key = htmlspecialchars($key); print("<tr bgcolor=#ffffff><td bgcolor=#eeeeee width='150' style='padding:5px;'>".$key."</td><td style='padding:5px;'>".$var); print("<INPUT type='hidden' name=".$koumoku." value=".$var.">"); print("</td></tr>\n"); } } ?>

  • NeilMania
  • ベストアンサー率30% (40/131)
回答No.1

突っ込みたい所がいくつかありますがそれは置いておいて… お問い合わせページ(1)⇒確認ページ(2)⇒メールで送信(3) (1)の内容を(2)で取得出来ているが、(2)の内容を(3)で取得出来てないとは ちゃんと渡せてないのではないでしょうか?

saho0201
質問者

お礼

返信ありがとうございました。 皆様のおかげで解決致しました。 今後も何かあった際はよろしくお願いします。

saho0201
質問者

補足

素早いお返事、ありがとうございます! 本当に初心者のため、申し訳ないのですが、値を渡すという処理がよくわかりません。。。 確認ページでも foreach($_POST as $key=>$var) { if(is_array($_POST[$key])==true) { というような記述をしていて、自分の中では$_POSTによって、HTMLのデータを取得している (値を渡している?)というつもりなんですが、何か値を渡すための処理があるのでしょうか? すみませんが、よろしくお願いします。

関連するQ&A