简体   繁体   中英

notifications alerts turn off sql php

I'm creating a basic notification system to alert an user, that the users he follows have created a new post.

Users

  id_user | name
    1       Max
    2       Joe
    3       Ed
    4       Tommy

Posts

    id_post | id_user_post | posts
    1               2           hi
    2               2           hello
    3               2           how are you
    4               3           hey you
    5               2           how long
    6               1           whats up
    7               2           come on

Community

  id_follower id_followed
    3           2
    3           1
    4           2

In this case Ed (user 3) follows to Joe (2) and Max (1), they both, have posted 6 posts.

  SELECT COUNT(*)
    FROM community c
     LEFT JOIN posts p ON p.id_user_post=c.id_followed
   WHERE c.id_follower=3 

Here is how it looked like in the page

  Homepage header
   You have (6 new posts) > [click here to see]

My problem is how do I turn off the notification alert (6 new posts) after clicking on the it? Do I need to create a notifications table? Should I need to add an status field to the post? Do I need to make an Sql query again? Otherwise that notification is going to appear forever.

You should add a last_post_id column to the community table. Then you can count only the posts whose ID is higher than this.

  SELECT COUNT(*)
    FROM community c
     LEFT JOIN posts p ON p.id_user_post=c.id_followed AND p.id_post > c.last_post_id
   WHERE c.id_follower=3 

Whenever you show the status to a user, you update the last_post_id to the highest ID:

UPDATE community AS c
JOIN (SELECT id_user_post, MAX(id_post) AS id_post
      FROM posts
      GROUP BY id_user_post) AS p ON p.id_user_post=c.id_followed
SET c.last_post_id = p.id_post
WHERE c.id_follower = 3

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM