phpでの複数選択チェックボックスのデータ取得に関して質問です。
制作中のWEBサイトにお問い合わせページを作っています。
その項目のひとつに、件名を選択させるチェックボックスを4つ配置しているのですが、
複数選択した際に、一番最後の値しか取得できないという現象が起こっています。
お問い合わせページ⇒確認ページ⇒メールで送信
という動きなのですが、確認ページでは問題なく複数の値を取得して表示できています。
問題はメールで送信する部分なのですが、なぜかここでは一番最後の値しか取得・表示できていません。
以下にソースを載せます。
---------------------------------------------------------
★HTML側
<p>
<label><input type="checkbox" size="40" name="件名[]" value="資料請求">資料請求 </label>
<label><input type="checkbox" size="40" name="件名[]" value="入試に関するご質問">入試に関するご質問 </label>
<label><input type="checkbox" size="40" name="件名[]" value="本校へのご意見">本校へのご意見 </label>
<label><input type="checkbox" size="40" name="件名[]" value="その他ご質問・ご相談">その他ご質問・ご相談</label>
</p>
★php側(メール配信)
$body="「".$sbj."」からの発信です\n\n";
$body.="-------------------------------------------------\n\n";
foreach($_POST as $key=>$var) {
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);
if($var == "eweb_submit") ;
else $body.="[".$key."] ".$var."\n";
}
} else {
$key = strtr($key, $string_from, $string_to);
if(get_magic_quotes_gpc()) $var = stripslashes($var);
if($var == "eweb_submit") ;
else $body.="[".$key."] ".$var."\n";
}
}
-------------------------------------------------------
ネットから取得したフリーのメールフォームをアレンジしてソースを記述しています。
php初心者なので、説明がわかりづらい部分や、載せるソースが足りないかもしれませんので、
ご指摘ください。よろしくお願いします。
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の下の方は不要)うまく動いてくれませんかね~?
返信ありがとうございます!
ご指摘通り修正したら、きちんと値が取得できるようになりました!
なるほど、確認フォームのほうで値を渡す際に配列になっていなかったのが
原因だったんですね。
ご丁寧に教えてくれてありがとうございます。
他の返信下さった方々もありがとうございました。
No.2
- 回答日時:
「お問い合わせページ⇒確認ページ⇒メールで送信」っていうのはそれぞれ別のPHPファイルに飛ぶんですかね?
なんとなくhiddenで値を渡してるフォームに見えるので、
確認ページを出力している部分のソースがあればわかるかもしれません。
フリーのメールフォームの改変ならその配布元を明記するのが一番手っ取り早いですが(笑
この回答への補足
返信ありがとうございます!
メールフォームは「イーウェブ」というところからダウンロードしました。
確認ページとメール送信の部分は同じ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");
}
}
?>
No.1
- 回答日時:
突っ込みたい所がいくつかありますがそれは置いておいて…
お問い合わせページ(1)⇒確認ページ(2)⇒メールで送信(3)
(1)の内容を(2)で取得出来ているが、(2)の内容を(3)で取得出来てないとは
ちゃんと渡せてないのではないでしょうか?
この回答への補足
素早いお返事、ありがとうございます!
本当に初心者のため、申し訳ないのですが、値を渡すという処理がよくわかりません。。。
確認ページでも
foreach($_POST as $key=>$var) {
if(is_array($_POST[$key])==true) {
というような記述をしていて、自分の中では$_POSTによって、HTMLのデータを取得している
(値を渡している?)というつもりなんですが、何か値を渡すための処理があるのでしょうか?
すみませんが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
チェックボックスのvalueに変数...
-
フォームへの前回入力値をクリ...
-
<input type="hidden" >で配列...
-
パラメーターを隠す
-
PHPで画像の渡しが上手く行きま...
-
入力フォーム→確認画面→送信画...
-
フォームのテキストボックスに...
-
smartyでチェックボックスをチ...
-
PHPで郵便番号を検索し、住所を...
-
input nameで日本語を使うと
-
検索時の選択内容を保持する方法
-
チェックボックスによる検索
-
$_SESSIONについて教えて下さい。
-
チェックボックスを用い、MySQL...
-
XMLデータをPOSTで送信・受信す...
-
選択された値をセッションで保...
-
【PHP】もし、「リセット」ボタ...
-
チェックボックスによる検索(...
-
画面が更新されてもチェックボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
PHP ボタンが押されたら処理を...
-
HTMLのリンクをクリックするこ...
-
フォームへの前回入力値をクリ...
-
PHPで画像の渡しが上手く行きま...
-
POSTデータのNAME属性をVALUEに...
-
UPDATEの記述について
-
ラジオボタンをsessionで使いたい
-
テキストボックスに初期値を入れる
-
画面が更新されてもチェックボ...
-
DBの値をチェックボックスに反...
-
PHPでクリックするたびに変数を...
-
同じページでフォームデータを...
-
smartyでチェックボックスをチ...
-
入力フォーム→確認画面→送信画...
-
パラメーターを隠す
-
チェックボックスによる検索(...
-
チェックボックスのvalueを連結...
おすすめ情報