• ベストアンサー

チェックボックスで取得した値をメールに送信する

PHPでアンケートフォームを作っています。 まず、アンケートフォームでチェックボックスを、使用しました。 複数選択されたチェックボックスの値は、name属性に配列を使いactionでとんだ先の確認ページに表示させることができました。それには、for文で表示させました。 そこから、for文で取得した値をメールに送信させるにはどうしたらよいのでしょうか? どなたか、ご教授おねがいします。 質問の仕方が分かりづらかったら、申し訳ありません。

  • PHP
  • 回答数5
  • ありがとう数4

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

  • ベストアンサー
  • cojirou
  • ベストアンサー率50% (59/117)
回答No.5

>value=$os[$i]にした結果、ソースのvalueにちゃんと表示されるようになりました。 メールを送信するPHPの方にデータをおくることはできましたか? もしそうでであれば、後はメールにして送信するだけですね。 どのメール関数をご使用かわかりませんので、 mb_send_mail($to, $subject, $msg, $header); としていると仮定します。 $to は宛先、$subject はタイトル、$msg が内容、$header はヘッダー情報です。 $msg に送りたい内容を書けば良いので、$osの値を送るには、 $msg = join( "\r\n", $os ); とすれば良いのではないでしょうか。 私も詳しくはないので間違いがありましたらご指摘ください。 ご参考までに。

参考URL:
http://www.komonet.ne.jp/~php/program/chap10.htm
relax50s
質問者

お礼

こんにちは。 仮定されたとおり、 >mb_send_mail($to, $subject, $msg, $header); を使っていました。 >$msg = join( "\r\n", $os ); ビンゴ(古)です!!ちゃんと、メールに表示されて送られてきました。joinというものがあるんですね。 解決しました。ありがとうございました。

その他の回答 (4)

回答No.4

こんにちは。 よくわかりませんが、例えば・・・、 <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++ ){  処理・・・ } ですよね??? (^^ゞ

relax50s
質問者

お礼

こんにちは。 > for( $i=0; $i<count($_POST["aaa"]); $i++ ){ >  処理・・・ > } for( $i=0; $i<count($aaa); $i++ ){  処理・・・ } になっていました。$_POST 付けないといけないんですね。 ありがとうございました。

  • cojirou
  • ベストアンサー率50% (59/117)
回答No.3

No.1様への補足を見て気になった点を1つ。 >print " <input type=hidden name=os[$i] value=$os>"; のvalue値が value=$os[$i] でなければうまくいかないような…。 勘違いだったらごめんなさい。 ご参考までに。

relax50s
質問者

補足

ありがとうございます。 value=$os[$i]にした結果、ソースのvalueにちゃんと表示されるようになりました。 返事が遅くなってすみませんでした。

回答No.2

こんにちは。 確認ページで値が取得できているのなら、 テキストボックスなどと同じように、 単純に値を渡してやればいいと思いますが・・・? (^^ゞ

relax50s
質問者

補足

こんにちは。回答ありがとうございます。 単純に値を渡すのができないんです…(>_<) テキストボックスの値を取得するには(前にも書いてしまいしたが)$_POST[namae]でできました。 チェックボックスの場合はどうすればいいのでしょうか? $_POST[os()]にすると、メールにはArrayとだけ送られてしまいました。書き方が違うだけなのでしょうか? 恥を承知で補足させていただきました…。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1
参考URL:
http://php.s3.to/man/function.mail.html
relax50s
質問者

補足

回答ありがとうございます。 テキストボックスや、ラジオボタンで入力されたものは、確認ページで受け取りメール送信することができたのですが、チェックボックスの項目を確認ページからメール送信することができません。 確認ページでは、チェックボックスの項目を for( $i=0; $i<count($os); $i++ ) { print $os[$i] . "<br>\n"; print " <input type=hidden name=os[$i] value=$os>"; } としました。これは表示できましたが、メール送信ページでもfor文を使うのでしょうか? (テキストボックスで入力された氏名は、$_POST[namae]で表示させました。) よろしくお願いします。

関連するQ&A

  • チェックボックスの値を(1,0)のようにすべて送信する方法

    formをsubmitすると、チェックボックスの値は、 チェックされた項目のvalue値が配列の形で送信されますよね。 たとえば、 <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="111" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="222" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="333" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="444"> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="555" CHECKED> だと、 [111,222,333,555] のように。 今回は、表形式でデータを表示し、 チェックされた行の、他の列の値(フィールド)も取得したいのです。 他の列のフィールドは、チェックされていない行でも入力されている可能性があります。 そうすると、そのフィールドの値も配列にして送ってしまうと、 チェックボックスの値と数が合わなくなり、横方向での関連付けが出来なくなってしまいます。 なので、チェックボックスの送信値を、配列の要素数は全件で、 チェックされたかされていないかということが分かるように することは不可能でしょうか? JavaScriptは規約により、使うことが出来ない状況で困っています(><) 何か案があれば教えてください。

    • ベストアンサー
    • HTML
  • チェックボックスのperlでの値の渡し方

    perlに限らず、CGIもJavascriptも初心者なのにHPでアンケートを作ろうとしている者です。機能はアンケートの末尾の「確認」を押すとCGIの“確認画面”が表示され、その後「送信」で記述内容がメール送信されるというものです。複数回答があるチェックボックスのperlでの値の渡し方を教えてください。症状として以下の様に記述した場合、AとCにチェックをすると「C」しか受け取れません。ちなみにチェックボックスに規定以上の数(例えば「最大2つまで回答可」みたいな)がチェックされたら瞬時にアラートが出るようにするJavascriptを使っていますので“name”は同一にしたいのですが。 ★CGIの記述 → $FORM{'test'} ★HTMLの記述↓ <INPUT type="checkbox" name="test" value="A">A <INPUT type="checkbox" name="test" value="B">B<INPUT type="checkbox" name="test" value="C">C 「配列変数」とやらが必要らしいのですが、どんな記述にすれば良いのかサッパリです。

    • ベストアンサー
    • Perl
  • チェックボックスの値のチェック

    プログラム初心者です 質問1 HTMLのフォームのチェックボックスから配列でphpに値を渡したときにチェックした値が1個しかなかった時には配列として受け取っているのでしょうか?それとも一個しかない場合は変数として受けとっているのでしょうか? 現状ではissetで調べて値がある場合にはその配列をforeachで取り出して実行しています(実際にやってみたら値1個でも動いていますが気になったので教えてください) 値のチェックはissetのみでいいでしょうか? 質問2 MySQLの方は、チェックの個数分のレコードを削除するために繰り返し処理の中でsqlを最大20回発行するのはダメな処理ですか?(チェック1個の場合は1回のみsqlを発行しています) 一般的に使われているならこれでいこうと思います よろしくお願いします

    • ベストアンサー
    • PHP
  • チェックボックスでの送信

    チェックボックスにチェックを入れて送信したときは1を チェックを入れずに送信したときは0をPHP側で受けたいのですが チェックを入れずに送信するとPHP側で$_POST['flg']を取得できないため、エラーになります。 方法はないでしょうか? <form action="test.php" method="post"> フラグ:<input type="checkbox" name="flg" value="1" /> </form> === test.php =========== <?php $flg = $_POST['flg']; print($flg); ?>

    • ベストアンサー
    • PHP
  • チェックボックスの値だけが受信できません

    フォームメールのチェックボックスで、ユーザーの選択した値が受信メールに反映されず、困っています。 アドバイスを宜しくお願い致します。 ■HTML(抜粋) <input type=checkbox name=color value="赤">赤 <input type=checkbox name=color value="青">青 <input type=checkbox name=color value="白">白 ■CGI(抜粋) # 連想配列に格納 &ReadParse(*data); $color = $data{'color'}; # sendmail open(MAIL, "| $sendmail -t"); $mail .= "好きな色=$color\n"; # まとめて日本語変換 &jcode'convert(*mail,'jis'); # メール送信 print MAIL $mail; 上記のように記述してメールを受信すると、  好きな色= と、肝心の値の部分が空欄になってしまいます。 チェックボックス以外のテキスト入力やラジオボタンの値はメールにもちゃんと反映されています。 同じ内容のフォームメールをFLASHでも作りましたが、FLASHの方ではチェックボックスの値も全て表示できました。  好きな色=赤,白 なぜHTMLの方だけ値を拾えないのでしょうか? HTMLのnameをcolorという同じグループ(?)でくくっているからでしょうか? 送信後の処理以外はFLASHのCGIスクリプトと同じものなのですが・・・。 希望としては、チェックボックスで複数選択した値をカンマでつなげたまま受信したいと思っています。 CGIの勉強は始めたばかりなので、もしかしたらとても初歩的なところでつまづいているのかもしれませんが、アドバイスをどうぞ宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • チェックボックスから配列を使って値を受け取る方法

    チェックボックスから配列を使って値を受け取る方法について、 以下の通りに試してみたのですが、上手く行かず、 配列$fCに値が入りません。 どなたか原因を教えていただけないでしょうか。 ------------------------------------------------ hoge.html <form action="hoge.php"> <input type="checkbox" name="fC[]" value="hoge"> hoge <br> <input type="checkbox" name="fC[]" value="foo"> foo <br> <input type="checkbox" name="fC[]" value="bar"> bar <br> <input type="submit" value="OK"> </form> ---------------------------------------------------------- ------------------------------------------------- hoge.php <? for( $i=0; $i<count($fC); $i++ ) { print $i ." ::: " . $fC[$i] . "<br>\n"; } ?> ----------------------------------------------------------

    • ベストアンサー
    • PHP
  • formでのチェックボックスのname属性について

    例えば以下のようなフォームがあるとき、 ----------------------------------------------------------------------------- <form name="f"> <input type="checkbox" name="group1" id="a" value="a"/><label for="a">a</label> <input type="checkbox" name="group1" id="b" value="b"/><label for="b">b</label> <input type="checkbox" name="group1" id="c" value="c"/><label for="c">c</label> <input type="checkbox" name="group1" id="d" value="d"/><label for="d">d</label> </form> ----------------------------------------------------------------------------- javascriptでは、document.f.group1で配列として取得できるのですが、 phpでは、$_POST["group1"]では最後にチェックされている項目しか取得できません。 (つまり、phpでは複数選択されていても、一番後ろの1項目しか取得できません。) 少し調べるとphpで取得するには、 name属性値を、group1からgroup1[]とすれば配列として取得できるとありました。 しかしこれでは、javascriptの方でname属性値を使って取得できなくなってしまい、 document.f.getElementsByTagName("input")みたいな感じで取得することになると思います。 そもそも、name属性値に"["や"]"を使うことは良くないと思うので、 phpの方で何らかの方法があると思ったのですが、 最近勉強を始めたばかりの初心者なのでよくわかりませんでした。 今知っているphpに配列で渡す方法が、 「name属性値をgroup1[]のように配列にする」しか無いので、 他に方法があるならば教えてください。 質問の前提として、 1.name属性はフォーム内の項目のグループ化をしている? 2.name属性値に"["や"]"は仕様では使用可能な文字ではない? 1,2ともにYesだと思っています。 もし、この前提が間違っていたらご指摘ください。 質問内容を要約すると、 「checkboxをphpで配列で取得する方法はname属性値を配列にするしかないのですか?」 「他に方法があるなら教えてください」 です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックスの内容が送信出来ません。

    PHPのメールフォームにチェックボックスを追加しましたがうまく送れず頭を抱えています。 お力をお貸しください。 必要だと思われるソースです。 inquiry.html <form action="check_inquiry.php" method="POST"> <p><label for="title">お名前:</label> <input type="text" name="title" size="60"> </p> <p><INPUT type="checkbox" name="check[]" value="資料請求" />資料請求<INPUT type="checkbox" name="check[]" value="至急" />至急<INPUT type="checkbox" name="check[]" value="質問" />質問</p> <br /> <p><label for="massage">メッセージ:</label></p> <p><textarea name="message" cols="50" rows="20"></textarea></p> <p><input type="submit" value="内容の確認"></p> </form> check_inquiry.php <?php $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); $m_check = $_POST['check']; ?> ■内容を確認してください。 <br> <form action="send_inquiry.php" method="POST"> <input type="hidden" name="title" value="<?php echo $title; ?>" /> <input type="hidden" name="message" value="<?php echo $message; ?>" /> <input type="hidden" name="check" value="<?php for($i=0; $i<sizeof($m_check); $i++){ echo "【${m_check[$i]}】"; } ?>" /> <br /> お名前: <br /> <?php echo $title; ?> <br /> 問い合わせ内容: <?php for($i=0; $i<sizeof($m_check); $i++){echo "【${m_check[$i]}】"; }; ?> <br /> メッセージ詳細: <br /> <?php // 改行部分にBRタグを埋め込む echo nl2br($message); ?> <br /> <input type="submit" value="お問い合わせ内容の送信"> </form> send_inquiry.php <?php $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'],ENT_QUOTES); $m_check = $_POST['check']; //日本語UTF8 mb_language('ja'); mb_internal_encoding('UTF8'); //自動送信<送信元のアドレス $name = '自動送信'; $email = 'メールアドレス'; $header = 'From: '. mb_encode_mimeheader($name) . '<' . $email .'>'; // メール送信 $result = mb_send_mail($email, $title, $message, $header, $m_check); //メール送信の確認 if ($result) { // メール送信の成功 echo '■管理人へ送信しました。'; } else { // メール送信の失敗 echo '■管理人への送信に失敗しました。'; } ?> チェックボックスにチェックを入れないと送信出来ますが チェックを入れると送信に失敗します。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックスから複数のvalueを取り出す

    HTMLフォームから、action="file.php"でデータの受け渡し→PHPで送られてきたvalueに応じて文章を出力、というプログラムを作っています。 例: グループAのラジオボタン1にチェック、送信 →グループAで押されたラジオボタンを送信されたvalueで判別、この場合はvalue==A →value==Aの場合に表示する文章を変数に受け渡し、その変数で表示 ラジオボタン、テキストボックスのvalueは$_POST['XXX']で取り出せたのですが、チェックボックスのデータだけが取り出せません。こちらの質問を検索したとき、多次元配列という言葉を見かけたのですが、いまいちよく分かりませんでした。 チェックボックスの複数のvalueで、上記の例のような動きを実現させるにはどうしたらいいでしょうか。どなたかご教授ください。

    • ベストアンサー
    • PHP
  • チェックボックスの値

    チェックボックスの値を取得する方法を調べています。 サイトの例では、チェックボックスが全てTformという同一のフォーム内にあります。これが仮に異なるフォームにある場合、どのように処理したらいいのでしょうか? http://musashisakai.chiikihp.net/master/java/checkbox1.php#2 Tform1 Tform2 Tform3 Tform4 にそれぞれチェックボックスがある場合です。 もし分かる方がいましたら教えてください。 よろしくお願いします。

専門家に質問してみよう