【お題】絵本のタイトル

お世話になります。

【やりたい事】
問い合わせフォーム等で問い合わせを受けた際に返信するメールの本文を
事前にMySQLのレコードに登録しておいて、問い合わせ等が来た際に返信
したいです。問い合わせフォームに関しても、問い合わせの内容や名前
等をMySQLに登録する形です。

問い合わせ内容をMySQLに登録する事・それに対してmb_send_mail関数を
使って問い合わせ内容の確認のメールを送る事は出来ています。

【ご教授頂きたい事】
その際にMySQLに登録しておいた本文に問い合わせフォームに入力された
名前やメールアドレスなどを代入したいのですが、そのやり方が分かり
ません。

具体的には、MySQLに登録するメール本文のデータに問い合わせフォーム
に入力された名前などの変数をメール本文のデータのしかるべき位置に
代入したいのです。

<----フォームの入力部分省略---->

$email = $mail;
$mail_title = $row["hametome_mail_title"];
$mail_body = $row["hametome_mail_body"];
$from = 'メールアドレス';
$header = "From: $from\n";
$parameter="-f メールアドレス";

mb_send_mail ($email, $mail_title, $mail_body,$header,$parameter);

$row["hametome_mail_title"]は、事前にMySQLに登録しておいたデータの
メールタイトル部分、$row["hametome_mail_body"]は本文です。

現状の状態としては、$row["hametome_mail_body"]に問い合わせフォーム
に入力した名前などが入ってない文章であれば正常に送信される状態です。

ちなみにhametome_mail_titleとhametome_mail_bodyのデータ型はTEXT型
です。

------------------------------------------------------------------
$namae様

お問い合わせを受け付けました
------------------------------------------------------------------

のように本文をMySQLに登録しても、ダメなようでというか上記のような
内容ではMySQLに登録出来なかったりもします^^;

どのようにすればこの機能を実現できるでしょうか?ご教授のほどよろ
しくお願いします。

A 回答 (3件)

代入するのではなく、登録されているひな形の名前部分などを「置換する」という方向で考えればよいかと思います。

この回答への補足

早速のご回答ありがとうございます。

置換するというとstr_replace関数などを使って$namaeを置き換えるような
感じでしょうか?

------------------------------------------------------------------
$toiawase_name様

お問い合わせを受け付けました
------------------------------------------------------------------
ひな形の内容を上記のように直し、

$email = $mail;
$mail_body1 = $row["hametome_mail_body"];
$mail_body2 = str_replace($toiawase_name, $namae,$mail_body1);
$mail_body = $mail_body2;
$mail_title = $row["hametome_mail_title"];
$from = 'メールアドレス';
$header = "From: $from\n";
$parameter="-f メールアドレス";

mb_send_mail ($email, $mail_title, $mail_body,$header,$parameter);

としてみたのですが、どうもうまくいきません^^;お手数かとは存じ
ますが具体案を教え頂けませんでしょうか?

補足日時:2009/08/03 17:26
    • good
    • 0
この回答へのお礼

$toiawase_name様を__name__ 様に変更し、よくよく考えてみれば
マルチバイト文字だったので、str_replaceをmb_ereg_replaceに変更
してみたところ、うまくいきました。

アドバイスいただきまして、ありがとうございました。

お礼日時:2009/08/03 18:33

補足ありがとうございます。



そういうことですか^^;
テキスト型ということは、DBに登録されたひな形の変数も文字列扱いされてしまうので、恐らくそのひな形を用いてはNGでしょうね。

$result = mysql_query($sql);//SQL発行
$rtn = mysql_fetch_assoc($result);
$mail_body = $rtn['toiawase_name'] . $rtn['hametome_mail_body'];
//$rtn['toiawase_name'] == 問合せ者名
//$rtn['hametome_mail_body'] == "様\r\nお問い合わせを受け付けました"
//であることが前提

これが一番手っ取り早いと思います。

それとも・・・また意味取り間違えてます??^^;

要するにひな形の文の「○○様」の「○○」をDBから引っ張った値にしたいってことですよね?
    • good
    • 0
この回答へのお礼

ご回答頂きましてありがとうございます。

文字を置き換える方法でどうやらうまくいったようです。お教え頂きまして
ありがとうございました^^

お礼日時:2009/08/03 18:34

一つのテキストボックスに登録したいということですか?



$mail_body = $namae . "様" . "\r\n" . $naiyou

単純にこれではだめですか?

それとも意味が違うでしょうか?

この回答への補足

早速のご回答ありがとうございます。私の説明が悪かったようで申しわ
けありません。

まず、メール本文を問い合わせフォームとは別個のフォームから事前に

------------------------------------------------------------------
$namae様

お問い合わせを受け付けました
------------------------------------------------------------------

としてMySQLに登録しています。この本文を登録しているテーブルを仮に
Answerテーブルとします。この本文のデータはAnswerテーブルのhametome_mail_bodyに登録されています。

問い合わせフォームから問い合わせをする際、問い合わせ完了のファイ
ル仮にmail_comp.phpとします。

mail_comp.phpは、問い合わせ内容や問い合わせをした方の名前・メール
アドレス等の記入内容をMySQLに登録します。仮に問い合わせ内容を登録
するテーブルをtoiawaseテーブルとします。

mail_comp.phpは、問い合わせを問い合わせフォームから頂いた際にtoiawaseテーブルに問い合わせデータを登録するとともにSELECT文で、Answerテーブルのhametome_mail_bodyに入っている本文のデータ(上
の点線の中の文字列)を取り出し、mb_send_mail関数でメールを送信
しています。

その際にSELECT文で、Answerテーブルのhametome_mail_bodyに入って
いる本文のデータ(上の点線の中の文字列)を取り出し、$mail_body
に代入しているのですが、Answerテーブルから取り出した本文のデー
タ(上の点線の中の文字列)の$namaeに問い合わせフォームに入力さ
れた名前を代入したいという事なのです。

うまく説明できなくて申し訳ありません^^;

補足日時:2009/08/03 16:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!