- ベストアンサー
チェックボックスで取得した値をメールに送信する
PHPでアンケートフォームを作っています。 まず、アンケートフォームでチェックボックスを、使用しました。 複数選択されたチェックボックスの値は、name属性に配列を使いactionでとんだ先の確認ページに表示させることができました。それには、for文で表示させました。 そこから、for文で取得した値をメールに送信させるにはどうしたらよいのでしょうか? どなたか、ご教授おねがいします。 質問の仕方が分かりづらかったら、申し訳ありません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>value=$os[$i]にした結果、ソースのvalueにちゃんと表示されるようになりました。 メールを送信するPHPの方にデータをおくることはできましたか? もしそうでであれば、後はメールにして送信するだけですね。 どのメール関数をご使用かわかりませんので、 mb_send_mail($to, $subject, $msg, $header); としていると仮定します。 $to は宛先、$subject はタイトル、$msg が内容、$header はヘッダー情報です。 $msg に送りたい内容を書けば良いので、$osの値を送るには、 $msg = join( "\r\n", $os ); とすれば良いのではないでしょうか。 私も詳しくはないので間違いがありましたらご指摘ください。 ご参考までに。
その他の回答 (4)
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 よくわかりませんが、例えば・・・、 <input type="checkbox" name="aaa[]" value="A"> <input type="checkbox" name="aaa[]" value="B"> <input type="checkbox" name="aaa[]" value="C"> とあった場合、 for( $i=0; $i<count($_POST["aaa"]); $i++ ){ 処理・・・ } ですよね??? (^^ゞ
お礼
こんにちは。 > for( $i=0; $i<count($_POST["aaa"]); $i++ ){ > 処理・・・ > } for( $i=0; $i<count($aaa); $i++ ){ 処理・・・ } になっていました。$_POST 付けないといけないんですね。 ありがとうございました。
- cojirou
- ベストアンサー率50% (59/117)
No.1様への補足を見て気になった点を1つ。 >print " <input type=hidden name=os[$i] value=$os>"; のvalue値が value=$os[$i] でなければうまくいかないような…。 勘違いだったらごめんなさい。 ご参考までに。
補足
ありがとうございます。 value=$os[$i]にした結果、ソースのvalueにちゃんと表示されるようになりました。 返事が遅くなってすみませんでした。
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 確認ページで値が取得できているのなら、 テキストボックスなどと同じように、 単純に値を渡してやればいいと思いますが・・・? (^^ゞ
補足
こんにちは。回答ありがとうございます。 単純に値を渡すのができないんです…(>_<) テキストボックスの値を取得するには(前にも書いてしまいしたが)$_POST[namae]でできました。 チェックボックスの場合はどうすればいいのでしょうか? $_POST[os()]にすると、メールにはArrayとだけ送られてしまいました。書き方が違うだけなのでしょうか? 恥を承知で補足させていただきました…。
- moon_night
- ベストアンサー率32% (598/1831)
補足
回答ありがとうございます。 テキストボックスや、ラジオボタンで入力されたものは、確認ページで受け取りメール送信することができたのですが、チェックボックスの項目を確認ページからメール送信することができません。 確認ページでは、チェックボックスの項目を for( $i=0; $i<count($os); $i++ ) { print $os[$i] . "<br>\n"; print " <input type=hidden name=os[$i] value=$os>"; } としました。これは表示できましたが、メール送信ページでもfor文を使うのでしょうか? (テキストボックスで入力された氏名は、$_POST[namae]で表示させました。) よろしくお願いします。
お礼
こんにちは。 仮定されたとおり、 >mb_send_mail($to, $subject, $msg, $header); を使っていました。 >$msg = join( "\r\n", $os ); ビンゴ(古)です!!ちゃんと、メールに表示されて送られてきました。joinというものがあるんですね。 解決しました。ありがとうございました。