• 締切済み

メールフォームからcsvファイルに書きこむ方法を教えてください

メールフォームを作成し、項目をcsvファイルへ書き込みたいのですが <?php htmlFooter(); exit(0); } } //--- メールのレイアウトの編集 --- 開始 -------------------> $body="「".$sbj."」からの情報です\n\n"; $body.="-------------------------------------------------\n\n"; foreach($_POST 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"; } $body.="\n-------------------------------------------------\n\n"; $body.="送信日時:".date( "Y/m/d (D) H:i:s", time() )."\n"; //$body.="ホスト名:".getHostByAddr(getenv('REMOTE_ADDR'))."\n\n"; //--- 終了 ---> if($remail == 1) { //--- 差出人への送信確認メールのレイアウトの編集 --- 開始 -> $rebody="ありがとうございました。\n"; $rebody.="以下の内容が送信されました。\n\n"; $rebody.="-------------------------------------------------\n\n"; foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); if($var == "eweb_submit") ; else $rebody.="[".$key."] ".$var."\n"; } $rebody.="\n-------------------------------------------------\n\n"; $rebody.="送信日時:".date( "Y/m/d (D) H:i:s", time() )."\n"; $reto = $_POST['email']; $rebody=mb_convert_encoding($rebody,"JIS","SHIFT_JIS"); $resbj="=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($resbj,"JIS","SHIFT_JIS"))."?="; $reheader="From: $to\nReply-To: ".$to."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); //--- 終了 ---> } $body=mb_convert_encoding($body,"JIS","SHIFT_JIS"); $sbj="=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($sbj,"JIS","SHIFT_JIS"))."?="; if($from_add == 1) { $from = $_POST['email']; $header="From: $from\nReply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } else { $header="Reply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } if($chmail == 0 || $sendm == 1) { mail($to,$sbj,$body,$header); if($remail == 1) { mail($reto,$resbj,$rebody,$reheader); } } else { htmlHeader(); ?> <!--- 送信確認画面のレイアウトの編集 --- 開始 -------------> 以下の内容で間違いがなければ、「送信する」ボタンを押してください。<BR><BR> <FORM action="<? echo $script; ?>" method="POST"> <? echo $err_message; ?> <TABLE width="400" bgcolor="#cccccc" cellspacing="1" cellpadding="3"> <?php foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("<TR bgcolor=#ffffff><TD bgcolor=#eeeeee>".$key."</TD><TD>".$var); ?> <INPUT type="hidden" name="<?= $key ?>" value="<?= $var ?>"> <?php print("</TD></TR>\n"); } ?> </TABLE> <BR> <INPUT type="hidden" name="eweb_set" value="eweb_submit"> <INPUT type="submit" value="送信する"> <INPUT type="button" value="前画面に戻る" onClick="history.back()"> </FORM> <!--- 終了 --->

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

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.5

>> 必須項目の数でカウントされちゃうみたいなのですが $num=(file_exists($filename))? count(FILE($filename)):0; 上記でファイル内の行数をカウントしています。行数から次のレコード番号を決めています。 これは実質、改行コードの数をカウントしています。 記録したデータ自身には改行コードを含んでおらず、レコード毎に改行されていることを前提にしたプログラムです。 今回の記録しているデータ自身にも改行があるために、とびとびの数値になったのでしょう。 >> どうすれば良いでしょうか? レコード番号を生成する部分を組みなおすことになります。 方法としては、 案1 レコード番号を記憶する専用のファイルを別途用意する 案2 レコード数を正確にカウントするプログラムに変更する 案3 今の行数カウントのスクリプトはそのままで、データ内の改行コードを<br>などに置換して保存し、レコード間の区切りのみ改行コードにする。 などいろいろな方法が有ります。 一度、御自分で挑戦してみてください  

jojo0203
質問者

お礼

ありがとうございます。 やってみますね まだまだ...やりたいこといろいろあるんですが また、教えてくださいね

  • mpx
  • ベストアンサー率71% (149/209)
回答No.4

>> その場合、どのようにPG書いたらいいのでしょうか? $filename='maillog.csv'; $num=(file_exists($filename))? count(FILE($filename)):0; $dat=array_merge(array($num),$_POST); $fp = fopen($filename, 'a'); fputcsv($fp, $dat); fclose($fp);

jojo0203
質問者

お礼

忙しい中有難うございます。 カウントNOは、登録されたのですが 何故か、1の次は8となりまた、つぎに登録すると 13になってしまうのは何故でしょうか!? 必須項目の数でカウントされちゃうみたいなのですが どうすれば良いでしょうか? 教えてくださいね いつもすみません

  • mpx
  • ベストアンサー率71% (149/209)
回答No.3

>> 書き込んだ時に、レコードNOも付加したいのですが >> どうすれば良いでしょうか? $_POSTの配列にレコードNOを付加(マージ)して書き込むだけです

jojo0203
質問者

お礼

何度もありがとうございます。 この場合、レコードNOはカウントされて書き込まれるのでしょう!? その場合、どのようにPG書いたらいいのでしょうか? 質問ばかりですみません 宜しくお願いします。

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> そのスクリプトをどの部分に入れていいのかがわからなくなって formの送信先のスクリプトに入れるだけです。 下記行の$scriptで示されるファイルの先頭にでも入れれば試せます >> <FORM action="<? echo $script; ?>" method="POST">

jojo0203
質問者

お礼

ありがとうございます。 書込みました。 それと... 書き込んだ時に、レコードNOも付加したいのですが どうすれば良いでしょうか? すみません何度も.... 宜しくお願いします。!!

  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

>> メールフォームからcsvファイルに書きこむ方法を教えてください 質問を理解できていないような気もしますが、 POSTされてきたフォームの内容をcsvファイルに書き込めればよいのでしょうか ならば、formを受けるスクリプトに下記を加えるだけで良いかと $filename='maillog.csv'; $fp = fopen($filename, 'a'); fputcsv($fp, $_POST); fclose($fp);

jojo0203
質問者

お礼

回答くださって有難うございます。 只、まだ初心者なので そのスクリプトをどの部分に入れていいのかがわからなくなって しまって!! すみません.... 良かったら教えてくださいね

jojo0203
質問者

補足

有難うございます。 回答の内容は、大丈夫ですが 只、まだ初心者なので そのスクリプトをどの部分に入れていいのかがわからなくなって しまって!! すみません.... 良かったら教えてください

関連するQ&A

  • メールフォームについて

    http://php.eweb-design.com/1301_mail.html のアンケートフォームのサンプル(sample1)で勉強していますが、分らないところがあるので教えてください。以下はソースの抜粋です。  未入力項目のチェックにおいて、最初にtextの未入力(名前,年齢,email)をチェックし、次にradioとcheckbox(性別,規約)の未選択をチェックしているようなのですが、この二つのステップがよく理解できません。具体的には■で示した行です。特にif($var == "eweb_submit") ;が何を意味するのか?なお、"eweb_submit"は送信確認画面のinputタグのvalue属性です。  初心者のため、うまく説明できませんがよろしくお願いします。 <?php header("Content-Type:text/html;charset=Shift_JIS"); ?> <?php 省略 // 必須入力項目を設定する(する=1, しない=0) $esse = 1; // 必須入力項目(入力フォームで指定したname) $eles = array('名前','年齢','性別','email','規約'); $sendm = 0; foreach($_POST as $key=>$var) { if($var == "eweb_submit") $sendm = 1; } // 文字の置き換え $string_from = "\"; $string_to = "ー"; // 未入力項目のチェック if($esse == 1) { $flag = 0; $length = count($eles) - 1; foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if($var == "eweb_submit") ;■ else { for($i=0; $i<=$length; $i++) { if($key == $eles[$i] && empty($var)) {■ $errm .= "<FONT color=#ff0000>「".$key."」は必須入力項目です。</FONT><BR>\n"; $flag = 1; } } } } foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); for($i=0; $i<=$length; $i++) { if($key == $eles[$i]) {■ $eles[$i] = "eweb_ok";■ } } } for($i=0; $i<=$length; $i++) { if($eles[$i] != "eweb_ok") {■ $errm .= "<FONT color=#ff0000>「".$eles[$i]."」が未選択です。</FONT><BR>\n"; $eles[$i] = "eweb_ok"; $flag = 1; } } if($flag == 1){ htmlHeader(); ?> <!--- 未入力があった時の画面 --- 開始 ---------------------> 入力エラー<BR><BR> <?php echo $errm; ?> <BR><BR> <INPUT type="button" value="前画面に戻る" onClick="history.back()"> <!--- 終了 ---> <?php htmlFooter(); exit(0); } } 省略 $body=mb_convert_encoding($body,"JIS","SHIFT_JIS"); $sbj="=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($sbj,"JIS","SHIFT_JIS"))."?="; if($from_add == 1) { $from = $_POST['email']; $header="From: $from\nReply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } else { $header="Reply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } if($chmail == 0 || $sendm == 1) { mail($to,$sbj,$body,$header); if($remail == 1) { mail($reto,$resbj,$rebody,$reheader); } } else { htmlHeader(); ?> <!--- 送信確認画面のレイアウトの編集 --- 開始 -------------> 以下の内容で間違いがなければ、「送信する」ボタンを押してください。<BR><BR> <FORM action="<? echo $script; ?>" method="POST"> <? echo $err_message; ?> <TABLE width="400" bgcolor="#cccccc" cellspacing="1" cellpadding="3"> <?php foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("<TR bgcolor=#ffffff><TD bgcolor=#eeeeee>".$key."</TD><TD>".$var); ?> <INPUT type="hidden" name="<?= $key ?>" value="<?= $var ?>"> <?php print("</TD></TR>\n"); } ?> </TABLE> <BR> <INPUT type="hidden" name="eweb_set" value="eweb_submit"> <INPUT type="submit" value="送信する"> <INPUT type="button" value="前画面に戻る" onClick="history.back()"> </FORM> 以下省略

    • ベストアンサー
    • PHP
  • 文字の置換?

    http://php.eweb-design.com/1301_mail.html さんから 文字コードEUC版をダウンロードさせいていただて、フォーム作成の勉強をしているのですが、疑問に思う点がいくつかあります。 if($esse == 1) { $flag = 0; $length = count($eles) - 1; foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if($var == "eweb_submit") ; else { for($i=0; $i<=$length; $i++) { if($key == $eles[$i] && empty($var)) { $errm .= "<FONT color=#ff0000>「".$key."」は必須入力項目です。</FONT><BR>\n"; $flag = 1; } } } } の部分の $key = strtr($key, $string_from, $string_to); のところなのですが、$keyに含まれる文字から$string_fromを検索し$string_toに置換することだと思うのですが、、、$string_fromも$string_toも どこの記述を見ても文字列が代入されていません。 過去ログを見ると http://oshiete1.goo.ne.jp/qa3140724.html?ans_count_asc=2 // 文字の置き換え $string_from = "\"; $string_to = "ー"; のような記述があるようなのですが、私がダウンロードしたファイルにはありません。どなたか詳しい方がいらしたら教えてください。 あと、 //--- メールのレイアウトの編集 --- 開始 -------------------> $body="「".$sbj."」からの発信です\n\n"; $body.="-------------------------------------------------\n\n"; foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if($var == "eweb_submit") ; else $body.="[".$key."] ".$var."\n"; } $body.="\n-------------------------------------------------\n\n"; $body.="送信日時:".date( "Y/m/d (D) H:i:s", time() )."\n"; $body.="ホスト名:".getHostByAddr(getenv('REMOTE_ADDR'))."\n\n"; //--- 終了 ---> というところで、 if($var == "eweb_submit") ; else $body.="[".$key."] ".$var."\n"; のようにifのあとにすぐelseがきているのはどうしてですか? まったくの初心者で、申し訳ないですが、 どうぞ、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • メールフォームについて

    ​いつもお世話になってます。 http://php.eweb-design.com/1301_mail.html​ のアンケートフォームのサンプル(sample1)で勉強しています。 確認画面で表示した内容を最後の送信完了画面でも再度表示しているのですが最後の行にeweb_sub{ :eweb_submitと表示されるのですがこの表示を消したいのですが、どのようにすればよいのでしょうか?またこのソースで確認画面以降にも確認した内容を表示することはできるのでしょうか? <?php header("Content-Type:text/html;charset=Shift_JIS"); ?> <?php 省略 <?php htmlFooter(); exit(0); } } if($chmail == 0 || $sendm == 1) { mail($to,$sbj,$body,$header); if($remail == 1) { mail($reto,$resbj,$rebody,$reheader); } } else { htmlHeader(); ?> <FORM action="<? echo $script; ?>" method="POST"> <? echo $err_message; ?> <TABLE width="400" bgcolor="#cccccc" cellspacing="1" cellpadding="3"> <?php foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("<TR bgcolor=#ffffff><TD bgcolor=#eeeeee>".$key."</TD><TD>".$var); ?> <INPUT type="hidden" name="<?= $key ?>" value="<?= $var ?>"> <?php print("</TD></TR>\n"); } ?> </TABLE> <BR> <INPUT type="hidden" name="eweb_set" value="eweb_submit"> <INPUT type="submit" value="送信する"> <INPUT type="button" value="前画面に戻る" onClick="history.back()"> </FORM> <FORM action="<? echo $script; ?>" method="POST"> <? echo $err_message; ?> <TABLE width="400" bgcolor="#cccccc" cellspacing="1" cellpadding="3"> <?php foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("<TR bgcolor=#ffffff><TD bgcolor=#eeeeee>".$key."</TD><TD>".$var); ?> <INPUT type="hidden" name="<?= $key ?>" value="<?= $var ?>"> <?php print("</TD></TR>\n"); } ?> </TABLE> <BR> <INPUT type="hidden" name="eweb_set" value="eweb_submit"> <INPUT type="submit" value="送信する"> <INPUT type="button" value="前画面に戻る" onClick="history.back()"> </FORM> <!--- 終了 ---> <?php htmlFooter(); } if(($jpage == 0 && $sendm == 1) || ($jpage == 0 && ($chmail == 0 && $sendm == 0))) { htmlHeader(); ?> <!--- 送信終了画面のレイアウトの編集 --- 開始 -------------> <font size="16px">送信完了</font><br> ありがとうございました。<BR> 以下の内容で送信は無事に終了しました。<BR><BR> --------------追加項目-------------------------------- <TABLE width="400" bgcolor="#cccccc" cellspacing="1" cellpadding="3"> <?php foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("<TR bgcolor=#ffffff><TD bgcolor=#eeeeee>".$key."</TD><TD>".$var); ?> <?php print("</TD></TR>\n"); } ?> </TABLE> 以下省略

    • 締切済み
    • PHP
  • チェックボックスが複数選択できない

    アンケートフォームを作成していますが、チェックボックスで複数項目を選択しても最後のひとつしか表示されずに困っています。 配列での処理にすれば良いという事なので自分なりにやってみたのですが、今度は「Array」と表示されてしまい、具体的にどうしたらいいのか分かりません。 ※html側 <input type="checkbox" name="cat[]" value="abc"> <input type="checkbox" name="cat[]" value="def"> ※php側 <FORM action="<? echo $script; ?>" method="POST"> <? echo $err_message; ?> <?php foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("項目:".$key."選択したのは".$var); ?> <INPUT type="hidden" name="<?= $key ?>" value="<?= $var ?>"> <?php print("です。\n"); } ?> となっています。 また、選択内容をメール送信するようになっており、 foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); if($var == "eweb_submit") ; else $rebody.="[".$key."] ".$var."\n"; です。 複数項目をまとめて処理しているようで、どうしたらいいのか分かりません。ちなみに、http://www.eweb-design.com/のフリーのメールフォームを使っています。

    • ベストアンサー
    • PHP
  • PHPメールフォームでの文字化けに苦しんでいます。

    レンタルサーバー(ファーストサーバ)でPHPのメールフォームを作っています。 PHPフォームから出力される送信確認画面と、送られるメールで特定の文字が (例えば「契」が「啓」に)化けてしまいます。 色々調べて出来る対策はしたのですが一向に分かりません。 どうやれば文字化けが直るか具体的に教えてください。 文字化け対策用に.htaccessをディレクトリに入れています。 .htaccessの中身 php_flag mbstring.encoding_translation off php_value default_charset "Shift_JIS" PHPフォームのメイン処理部分です。 <?php header("Content-Type: text/html;charset=Shift_JIS"); ~~~省略~~~ $body=mb_convert_encoding($body,"Shift_JIS","ASCII.JIS,UTF-8,EUC-JP,SJIS"); $subject="=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($resubject,"Shift_JIS","ASCII.JIS,UTF-8,EUC-JP,SJIS"))."?="; if($from_add == 1) { $from = $_POST['E-mail']; $header="From: $from\nReply-To: ".$_POST['E-mail']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } else { $header="Reply-To: ".$_POST['E-mail']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } mail($mailto,$subject,$body,$header); else { htmlHeader(); ?> <!-- 送信確認 --> 間違いがなければ送信ボタンを押してください。<br><br> <form action="form.php" method="POST"> <? echo $err_message; ?> <table width="500" bgcolor="#cccccc" cellspacing="1" cellpadding="3"> <?php foreach($_POST as $key=>$var) { if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("<tr bgcolor=#ffffff><td bgcolor=#eeeeee width="."125"." ><small><div style = line-height:0.5>".$key."</small></td><td><small>".$var); ?> <input type="hidden" name="<?= $key ?>" value="<?= $var ?>"> <?php print("</div></small></td></tr>\n");}?> ~~~後処理省略~~~ よろしくお願いします。

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

    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初心者なので、説明がわかりづらい部分や、載せるソースが足りないかもしれませんので、 ご指摘ください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • メールフォームの件名が文字化けします

    PHPでメールフォームを作っていて、以前のサーバーではエラーも無く動いていたのですが、新しいサーバーでは件名がどうしても文字化けしてしまいます。(※本文も化けていましたが解決しました) 色々調べて色々試してみたのですが上手く動作せず・・・ 以下にPHPの必要と思われる部分を書いておきますので、ご解答の程よろしくお願いいたします。 ちなみにPHPのバージョンは4.4.2です。 <?php header("Content-Type:text/html;charset=Shift_JIS"); ?> <?php $mailto = "aaa@bbb.ccc" $subject = "フォームからのメール"; ~各種設定・エラーチェック等省略~ $body=mb_convert_encoding($body,"Shift_JIS","ASCII.JIS,UTF-8,EUC-JP,SJIS"); $subject=mb_encode_mimeheader($subject,"ISO-2022-JP"); if($from_add == 1) { $from = $_POST['E-mail1']; $header="From: $from\nReply-To: ".$_POST['E-mail1']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } else { $header="Reply-To: ".$_POST['E-mail1']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } if($mailcheck == 0 || $sendchk == 1) { mb_send_mail($mailto,$subject,$body,$header); if($remail == 1) { mb_send_mail($reto,$resubject,$rebody,$reheader); } } else { htmlHeader(); ?> ~送信確認画面レイアウト・その他処理省略~ <?php } ?>

    • ベストアンサー
    • PHP
  • ドロップダウンで送信先を変更するメールフォーム

    ホームページでメールフォームを使用しています。 htmlで作ったフォームからPHPファイルを呼び出すというやり方です。 フォームに入力された内容を、PHP内で指定したメールアドレス宛に送るごく普通のメールフォームです。このメールフォームを改造して、問い合わせ項目ごとに別のメールアドレス宛に届くようにしたいのです。 以下のようなドロップダウンリストを作成して、 <form action="mail.php" method="post"> <fieldset> <p><span class="find">お問い合わせ項目 [必須]</span> <select name="お問い合わせ項目"> <option value="未選択">お選び下さい</option> <option value="サークルについて">サークルについて</option> <option value="学部について">学部について</option> <option value="その他">その他</option> </select> </fieldset> </form> サークルについての項目が選ばれたら、xxx@xxx.com へ 学部についての項目が選ばれたら、ooo@ooo.com へ、 それぞれメールを送りたいのですが、PHP側でどのような記述を加えればよいでしょうか。 PHP側には送信先1つだけを記述するように作ってあり、 メール送信ルーチンでこれを呼び出しています。 $To = "xxx@xxx.com"; フォームのnameを使ってifでできるかと試しましたが、見よう見まねでは挫折してしまいました。説明不足かもしれませんがお教えいただけませんでしょうか。 ↓PHPのメール送信部分の記述だと思います。 $body=mb_convert_encoding($body,"JIS","SHIFT_JIS"); $sbj="=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($sbj,"JIS","SHIFT_JIS"))."?="; if($from_add == 1) { $from = $_POST['email']; $header="From: $from\nReply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } else { $header="Reply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } if($chmail == 0 || $sendm == 1) { mail($to,$sbj,$body,$header); if($remail == 1) { mail($reto,$resbj,$rebody,$reheader); } }

    • ベストアンサー
    • PHP
  • phpについて教えてください

    以前別の方が作ったphp,htmlをアレンジして予約フォームを作っています。 そこで以前「ご予約される店舗」という項目だったものを「ご予約されるコース」に変更したところ チェックをいれているのに送信内容確認画面で「ご予約されるコース」が選択されていません とメッセージがでます。 初心者でどう質問していいかわからんくて質問に不足があるかもしれませんが、 困っています。どうか力になってください。 【html側】 <table><tr> <td><img src="../img/121.gif" width="242" height="26" alt="ご予約されるコース" /></td> <td> <SELECT name="ご予約されるコース"> <OPTION value="">ご選択ください</OPTION> <OPTION value="A">A</OPTION> <OPTION value="B">B</OPTION> <OPTION value="C">C</OPTION> </SELECT> </td> </tr> 【php側】 // 必須入力項目を設定する(する=1, しない=0) $esse = 1; // 必須入力項目(入力フォームで指定したname) $eles = array('ご予約されるコース','年(第一希望)','月(第一希望)','日(第一希望)','年(第二希望)','月(第二希望)','日(第二希望)','お名前','フリガナ','性別','お電話番号','携帯番号','ご住所','email'); //-------------------------------------------------------------------- // 以上で基本的な設定は終了です。 // 以下の変更は自己責任でお願いします。(行数はデフォルト時) // 未入力画面のレイアウト → 88行目周辺 // 送信メールのレイアウト → 103行目周辺 // 差出人への送信確認メールのレイアウト → 128行目周辺 // 送信確認画面のレイアウト → 163行目周辺 // 送信終了画面のレイアウト → 194行目周辺 // 送信確認画面や終了画面のヘッダとフッタ → 209行目周辺 //-------------------------------------------------------------------- $sendm = 0; foreach($_POST as $key=>$var) { if($var == "eweb_submit") $sendm = 1; } // 文字の置き換え $string_from = "\"; $string_to = "ー"; // 未入力項目のチェック if($esse == 1) { $flag = 0; $length = count($eles) - 1; foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if($var == "eweb_submit") ; else { for($i=0; $i<=$length; $i++) { if($key == $eles[$i] && empty($var)) { $errm .= "<FONT color=#ff0000>「".$key."」は必須入力項目です。</FONT><BR>\n"; $flag = 1; } } } } foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); for($i=0; $i<=$length; $i++) { if($key == $eles[$i]) { $eles[$i] = "eweb_ok"; } } } for($i=0; $i<=$length; $i++) { if($eles[$i] != "eweb_ok") { $errm .= "<FONT color=#ff0000>「".$eles[$i]."」が未選択です。</FONT><BR>\n"; $eles[$i] = "eweb_ok"; $flag = 1; } } if($flag == 1){ htmlHeader(); ?>

    • ベストアンサー
    • PHP
  • PHPのIEでの誤動作について

    現在、HTMLでメールフォームを作成しています。  送信ボタンを押したら、PHPに入力された情報が送られてメール送信が行われます。炎弧では上手く出来たのですが、IEで検証を行うと、PHPのPG内にある必須入力項目チェックがデータが渡っているにも関わらず、エラー判定をします。炎弧とIEでは条件式の書き方などを変えなければならないのでしょうか? エラー判定をする部分のソースです。 ・HTMLからのデータは配列です。 ・処理がIEで無視されるのは、10行目の”!=”です。 foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); for($i=0; $i<=$length; $i++) {//#98行目まで if($key == $eles[$i]) {//#97行目まで $eles[$i] = "eweb_ok"; } } } for($i=0; $i<=$length; $i++) { if($eles[$i] != "eweb_ok") { $errm .= "<FONT color=#ff0000>「".$eles[$i]."」が未選択です。</FONT><BR>\n"; $eles[$i] = "eweb_ok"; $flag = 1; } } 長文となり申し訳ありませんが、よろしくお願いいたします

    • ベストアンサー
    • PHP

専門家に質問してみよう