在哪里放置代码来触发标记通知如图所示

时间:2012-04-07 15:53:34

标签: php database design-patterns notifications

我有一个简单的MySQL表,用于在Web中存储通​​知,其中包含用PHP编写的社交网络功能。

+----------------------+
| Notifications        |
+----------------------+
| (PK) notification_id |
| user_id              |
| uri                  |
| message              |
| seen                 |
| created_at           |
+----------------------+
  • notification_id 是PK(相当不言自明)
  • user_id 是获取通知的用户的ID
  • uri 是当用户点击通知时浏览器将进入的内部URI,主要是链接到单个已发生的事件页面(例如,当通知是关于链接到用户的照片固定链接时有人评论它)
  • 消息是通知消息
  • 看到存储为布尔值,表示通知已被读取或不是(这是此问题中最重要的部分)
  • created_at 只是一个时间戳

我已经完成了大部分通知机制,但剩下的就是看到/看不见的部分。

我想在顶部导航栏的下拉菜单中显示看不见的通知(就像Facebook一样),用户可以点击指向显示所有通知的页面的链接。

将代码设置为触发标记的最佳位置在哪里?当指定用户已阅读通知内容并进入个别事件页面(即通过点击)时,应将其标记为“已见”

我想到了一些方法,欢迎另外一种方法。

  • 使用javascript拦截用户点击通知,并在继续执行通知的URI之前发出ajax请求“标记为已标记”
  • 在目标网址中创建PHP脚本,以更新数据库中的可见记录。此方法的问题在于具有通知记录的单个帖子之间没有关系

1 个答案:

答案 0 :(得分:1)

如果我处于类似情况(并且我没有实现事件系统),我会将通知链接发送到传递脚本。在该脚本中,只需将其标记为已显示的通知并重定向用户。由于您的通知和对象不相关,您可以使用GET请求参数(?type = photo& id = 1& notification = 1)来确定哪个对象等。

我不建议使用Javascript来做...在我看来,这太不可靠了。你永远不知道用户是否真的在他们的浏览器上启用了Javascript等。