0

フォームには異なる入力/フィールドがあります。さまざまなことが起こったときにメールで誰かに通知したい. たとえば、レコードが承認されたときに人にメールを送信したい場合、これは以下のコードで機能しますが、フォームが編集されて別の理由で再度送信された場合、つまり、他のフィールドを変更して承認済みフィールドを承認済みのままにしておくと、メール通知それが編集されたものではない場合、承認について伝えるために再び送信されます。

では、承認フィールドがいいえからはいに変更され、フォームを再度編集して承認済みステータスをはいに維持しても、電子メール通知が再度送信されないときに、これを一度だけ電子メールに変更するにはどうすればよいですか?

また、他のフィールドが変更された場合に別のメールを送信したいのですが、それらの他のフィールドは0と1ではなく、ランダムなテキストです。

基本的に、フォームで編集された特定のものについて特定のメールを送信したいと考えています。

承認済みステータスが変更された場合は、承認に関するメールのみを送信します。価格が変更された場合は、価格変更に関するメールのみを送信してください。承認と価格が変更された場合は、承認ステータスと価格が変更されたことを知らせる電子メールを送信します。

わかる?

if ($approved == 1) {
  $to = $email;
  $subject = 'Job# '.$id.' has been approved by an Admin';
  $message = "You can now view job# ".$id."!\n\n.";
  $headers = "From: info@domain.com\r\nReply-To: info@domain.com";
  $mail_sent = @mail( $to, $subject, $message, $headers );
}

アップデート:

ヒント、トリック、ヘルプ、提案などでこれを機能させることはできませんでした。

さまざまなものが編集されたときに管理者がジョブの所有者にメールを送信するためにチェックする必要がある別のチェックボックスを作成することになりました。1 つは承認メール用のチェックボックスで、もう 1 つはその他すべてのチェックボックスです。他のすべては、承認の取り消し、価格の変更、求人フォームの変更などです。また、ジョブ所有者が電子メール通知を受け取ったときに管理者が明確にしたいことを書き込めるように、テキストエリア ボックスを追加しました。

4

1 に答える 1

0

データベースから投稿されたデータへのデータの相互参照により、行うことごとに 1 回だけメールを送信できます。

例えば;

// check the data has been posted
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
    // do some checking of data here 
    // (array_key_exists/isset/ctype_digit/ctype_alnum or whatever)
    $id  = $_POST['id'];

    // Construct the query
    $sql = "SELECT * FROM `table` WHERE `id` = '{$id}'";

    // You're possibly using mysqli_, but for arguments sake, I'll use mysql_
    $run = mysql_query($sql); 

    // Check there is a result
    if (mysql_num_rows($run) == 1)
    {

        // Give the query above a variable to call from
        $item = mysql_fetch_assoc($run);

        // Now that you are here and $item is set, you should check your data.

        // For example, if you have posted to approve the item, check that it's 
        // not been approved already
        if ($_POST['approved'] == 1 && $item['approved'] == 0)
        {
            // If you are here, you have opted to approve it, 
            // but it wasn't approve, so send email.

            // ADD FUNCTION FOR EMAIL HERE //
        }
        // Don't bother with an IF clause, since you don't need the code to do anything
    }
}

「// ADD FUNCTION FOR EMAIL HERE //」と書いたところに注意してください。基本的な 2 パラメータの電子メールで実行できます。何かのようなもの;

function send_item_email($email, $flag)
{

}

その中で、フラグを使用して、投稿された情報のオプションを「切り替える」ことができます。

function send_item_email($email, $flag)
{
    $subject = 'Generic Subject';
    switch ($flag) 
    {
        case "approved":
            "Your {{ITEM}} has been approved.";
        break;

        case "price":
            "The price of your {{ITEM}} has changed.";
        break;
    }
}

電子メールの関数 (swiftMailer ラッパーなど) を使用すると、フォームの更新部分に最小限のコードを記述でき、送信する電子メールに設定基準を与えるフラグを追加できます。

お役に立てれば。

編集: そして、承認済みを 0 から 1 に更新すると、$approval を 1 にする必要があり、毎回送信されますが、最初に承認するときは、PHP が変数値をプリロードしているため、失敗するはずですと比較して、$approved を 0 としてレンダリングします。

于 2013-10-22T20:41:47.197 に答える