【问题标题】:Notify user of new comments by email通过电子邮件通知用户新评论
【发布时间】:2015-07-17 12:20:23
【问题描述】:

我有一个博客,我想在每个帖子中添加一个功能“通过电子邮件通知我有新的 cmets”,当用户收到一个帖子时。

我正在使用 PHP 和 MySQL。

我正在考虑向评论了一些帖子并选中“通过电子邮件通知我新的 cmets”复选框的用户发送邮件,查询如下:

$query = mysql_query("SELECT COUNT(post_id) AS NumberOfComments FROM comments WHERE post_id = $post_id");

$row = mysql_fetch_assoc($query);

if($row['NumberOfComments '] > $NumberOfComments){
    mail("someone@example.com","subject","message");
}

但是,如果有人从帖子中删除了一条评论并添加了一条新评论,那么它将是相同数量的 cmets,并且不会发送任何邮件。关于如何更好地查询的任何想法?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    这取决于您想要通知用户的时间。

    他们希望收到每条评论的通知吗?然后发布评论的功能也会发送通知。每当发布评论时,请检查是否要通知用户并通知他们。

    他们是否需要定期(每天、每周等)通知存在新的 cmets?那你还是不想数。在这种情况下,您想要检查是否存在新记录。有几种方法可以解决这个问题:

    1. 基于标识符。如果您知道通知用户的最后一条评论的 ID(您可能需要将其存储在通知表中的某个位置),那么您检查是否存在高于该 ID 的新 ID。如果是这样,就有新的 cmets。
    2. 基于日期。如果您知道通知用户的最后一条评论的时间戳(您可以将其存储在某处或根据通知的时间段动态计算),那么您检查自那时以来是否存在新的 cmets。如果是这样,就有新的 cmets。

    正如您所发现的,简单地计数记录并不能说明您正在寻找什么。记录计数所做的只是告诉您有多少记录。如果您想知道这些记录的发布时间,则需要某种时间戳。如果您想知道记录是否与以前已知的记录匹配,则需要某种标识符。

    切勿假设信息源自不包含该信息的数据。存储您需要了解的信息。

    【讨论】:

    • 我只想要一种简单的方法来在添加新的 cmets/comment 时通知用户 - 无论添加了多少 cmets,都只有一个通知
    • 我还是个初学者。我怎么能得到最后的评论 id 如果我知道帖子中评论的最后一个 id,查询会是什么样子?
    • @user3740970:那么,定期通知呢?这正是我在这个答案中所描述的。只需记录用户上次收到的通知(时间戳或标识符),然后检查从那时起是否添加了新行。如果是这样,那么就会有新的记录。例如,如果上次通知用户评论 ID 为 245,而现在最大评论 ID 为 257,则有新的 cmets。
    • @user3740970: SELECT MAX(id) FROM Comments
    【解决方案2】:

    在将评论插入数据库时​​执行此邮件,那么您不需要这个额外的查询。

    编辑: 因此,您将想要获得通知的用户存储在数据库中 有一张桌子,上面有iduser_idpost_id我把它命名为comment_notify 那么你可以做类似的事情

    // Insert comment to database
    $userWhoWantGetNotified = mysql_query("SELECT * FROM comment_notify WHERE post_id = $postId");
    while ($entry = mysql_fetch_assoc($userWhoWantGetNotified )) {
        $userId = $entry["user_id"];
        // get email from user_id
        mail(..);
    }
    

    【讨论】:

    • 可以使用更多的上下文,让初学者得到正确的信息:)
    • 查询看起来如何?我如何将邮件发送给选中“通过电子邮件通知我有新的 cmets”复选框的特定人员?
    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 2019-10-29
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 2023-01-31
    相关资源
    最近更新 更多