アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP + sqlite でリクエストフォームを作成しています。

データの入力 → 確認画面の表示 → 「送信」ボタン押下で、
1) name="email" 宛に確認メールを送る
2) 入力内容をデータベースに書き込む
上記 2 つの動作を同時に実行しようとしています。

確認画面からデータベースへの書き込み、
確認画面から name="email" 宛へのメール送信
の各動作は、個別に確認できていますが、
これらを同時に実行する方法がわかりません。
<form method="POST" action="*****.php"> では、
一方の処理しか指示できませんし、
JavaScript で対応しようとしましたが、上手く行きません。
どなたかお知恵を拝借できませんでしょうか。

よろしくお願いいたします。

A 回答 (2件)

A.php=確認画面の表示


B.php=DB書き込み処理&メール送信処理
C.php=処理完了の表示

とすればスッキリするかと思います。

A.php内の
<form method="POST" action="*****.php">を
<form method="POST" action="B.php">とし、
B.phpの中でDBへの書き込みとメール送信の処理を行い、
B.phpの最後に
header("Location:C.php");
exit;
と書いてC.phpへ飛ばし、
C.phpで処理完了の旨を記述。
こうしておくとDB処理・メール処理のページと最後の表示ページが分かれているので、C.phpで何度F5キーを押されてもDB処理やメール送信処理を重複して行われるという事を防げるかと思います。
参考にしていただけたらと思います。

この回答への補足

早速回答いただき、ありがとうございます。
なるほど!
A.php で両方の処理をやらせようとしていました。
重複書き込み防止策までアドバイス頂いて、勉強になります。
早速試してみます。
まずはお礼まで。

補足日時:2007/05/03 00:44
    • good
    • 0
この回答へのお礼

完璧にできました!!!
本当にありがとうございました。
こんなに簡単にできるとは。
連休中、自宅で環境が再現できず、お礼が遅れて申し訳ありません。

お礼日時:2007/05/08 16:41

> <form method="POST" action="*****.php">



"*****.php"の中で両方の処理が行なえませんか?
今、"*****.php"にはどんな風に書いてありますか?

この回答への補足

早速回答いただきありがとうございます。
なるほど!
確認画面で両方の処理を記述しようとしてました。
早速試してみます。
今は、それぞれ以下のように記述しています。

受領メール送信用のPHP:
<?php
mb_language('Japanese');
mb_internal_encoding("Shift-JIS");
$header_info="From: ".$_POST['email']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion();
$body="■■".$_POST['_subject']."■■\n\n";
foreach($_POST as $key=>$value){
if(!strstr($key,"_")){
$body.="[".$key."]".$value."\r\n";
}
}
mb_send_mail($_POST['email'],$_POST['_subject'],$body,$header_info);
header("Location: ".$_POST['_result']);
?>
----------------------
データベース書込み用PHP:
<?php
$db=sqlite_open("./data/test.dat",0666,$err);
$s_date=$_POST['year']."/".$_POST['month']."/".$_POST['day'];
sqlite_query($db,"INSERT INTO proofreq (
section,name,email,
---中略----
VALUES('".sqlite_escape_string($_POST['section'])."','".sqlite_escape_string($_POST['name'])."'");
sqlite_close($db);
header("Location: doc_check_request_query.php");
?>

補足日時:2007/05/03 00:37
    • good
    • 0
この回答へのお礼

asuncionさん
できました!!
すぐに回答いただけて、とっても助かりました。
ありがとうございます。

お礼日時:2007/05/08 16:44

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