我有一个简单的 MySQL 表,用于在具有用 PHP 编写的社交网络功能的 Web 中存储通知。
+----------------------+
| Notifications |
+----------------------+
| (PK) notification_id |
| user_id |
| uri |
| message |
| seen |
| created_at |
+----------------------+
- notification_id是 PK (不言自明)
- user_id是收到通知的用户 ID
- uri是用户单击通知时浏览器将转到的内部 URI,主要链接到单个发生的事件页面(例如,当通知是关于有人评论时链接到用户的照片永久链接)
- message是通知消息
- seen存储为布尔值,它表示通知是否已被读取(这是这个问题中最重要的部分)
- created_at只是一个时间戳
我已经完成了大部分通知机制,但剩下的就是可见/不可见的部分。
我只想在顶部导航栏的下拉菜单中显示看不见的通知(就像 Facebook 一样),用户可以单击指向显示所有通知的页面的链接。
放置代码以触发将其标记为已见的最佳位置在哪里?当指定用户已阅读通知内容并进入单个事件页面(即通过单击它)时,应将其标记为“已看到”
我已经想到了一些方法,欢迎使用其他替代方法。
- 使用 javascript 拦截用户对通知的点击,并在继续通知的 URI 之前发出 ajax 请求以“标记为已见”
- 在目标 URL 中制作 PHP 脚本以更新数据库中看到的记录。这种方法的问题是单个帖子与通知记录之间 没有关系。