社交网站的通知系统

时间:2014-10-15 06:04:11

标签: php html mysql social-networking

好的,我正在使用PHP MySQL 我想为社交网站实施通知系统
目前我有2个表一个包含列的帖子

    1. id //帖子的ID
    1. 体//
    1. status //用于通知
    1. user_id //用户的ID
  1. 每当preson评论或喜欢特定帖子时,通知表中会插入1条新记录 通知表具有以下列

    1. id //通知的ID
    2. src_id //用户评论的帖子的ID
    3. 类型//喜欢,评论等
    4. user_id //用户的ID
    5. 那么问题是我想从通知表中获取数据,需要通知用户。


      例如 Mysql查询是

      SELECT * FROM notifications WHERE src_id IN ("244","245","249") order by src_id
      

      例如,我在通知表中有一些这样的数据

        id  type     user_id  src_id
        1   like      6       244
        2   comment   4       244
        3   like      1       249
        4   comment   8       249
        5   comment   9       245
        6   comment   3       244
        7   like      12      244
      

      如何通过src_id

      对它们进行分组,在php中显示它

      这样我就可以生成类似这样的东西

        

      4,3评论了你的帖子244
         12,6喜欢你的帖子244
         1喜欢你的帖子249
         8评论了你的帖子249

      其中4,3,12,6,1,8是user_ids

2 个答案:

答案 0 :(得分:0)

参见mysql GROUP_CONCAT示例

编辑:

SELECT 
    group_concat(`user_id`) as 'users'
    , `type`
    , `src_id` as 'post'
FROM `notifications`
WHERE `src_id` IN ("244","245","249")
group by `src_id`, `type`
ORDER BY `src_id`

答案 1 :(得分:0)

您可以在通知表中添加SenderReceiver列来执行此操作。 Sender列将包含执行活动的用户的ID,Receiver列将包含在线用户的ID。

例如,用户B对用户A的帖子发表了评论。在这里,用户B将是发送者,用户A将是接收者。

接收在线用户的通知时,请执行SQL查询:

SELECT * FROM notifications WHERE Receiver='$online_user';

通知表的示例结构:

CREATE TABLE notifications(
    NID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    Sender INT NOT NULL,
    Receiver INT NOT NULL,
    Type VARCHAR(255) NOT NULL,
    Since INT NOT NULL,
    FOREIGN KEY(Sender) REFERENCES users(user_id),
    FOREIGN KEY(Receiver) REFERENCES users(user_id)
);