
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を見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでじゃんけん勝負
-
PHP・MYSQLで複数のチェックボ...
-
フォームでのリセットを使う方法
-
画面が更新されてもチェックボ...
-
ラジオボタンをsessionで使いたい
-
PHPでユーザー情報を入力して簡...
-
$_SESSIONについて教えて下さい。
-
サーバへのアップロードが出来...
-
同じページでフォームデータを...
-
ラジオボタンを押すと、表示が...
-
PHP ボタンが押されたら処理を...
-
チェックボックスの内容が送信...
-
チェックボックスでの送信
-
POSTデータのNAME属性をVALUEに...
-
PHPでクリックするたびに変数を...
-
PHPの初心者です。現在チェック...
-
コードの何が間違っているのか...
-
複数のラジオボタングループを...
-
HTMLのリンクをクリックするこ...
-
PHPでMP3サーバを作るには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
検索時の選択内容を保持する方法
-
<input type="hidden" >で配列...
-
フォームへの前回入力値をクリ...
-
PHP ボタンが押されたら処理を...
-
DBの値をチェックボックスに反...
-
パラメーターを隠す
-
【PHPチェック】ラジオボタンが...
-
PHPで画像の渡しが上手く行きま...
-
テキストボックスに初期値を入れる
-
ラジオボタンをsessionで使いたい
-
ラジオボタンを押すと、表示が...
-
入力フォーム→確認画面→送信画...
-
PHPの関数実行
-
PHPで、ボタンを押すと同じペー...
-
画面が更新されてもチェックボ...
-
HTMLフォームで複数選択のチェ...
-
<input type='checkbox'>要素で...
-
同じページでフォームデータを...
-
$_SESSIONについて教えて下さい。
おすすめ情報