找出用户是否阅读过帖子

时间:2013-07-24 11:38:46

标签: php mysql

好的,所以我为工作中的工作创建了一个票务系统。

有三个表格:

作业id|subject|flag|status|deadline|ts

团队id|jobID|userID|vocation

交换id|details|foreignID|table|polyflag|userID|ts

基本上创建了一个作业,已插入job,该团队已建立并插入team,此特定作业的任何帖子和对话都被放入{ {1}}。

但我想要做的是找出用户是否没有阅读特定工作中的任何帖子。因为目前他们不得不真正进入工作页面,看看他们还没有看到任何新的东西。如果他们的工作清单特别大,这将成为一个问题。

因此,如果用户发布新内容,并且他们没有加载作业并看到它,我希望能够以某种方式向他们展示。问题是我不知道如何做到这一点。

建议?

4 个答案:

答案 0 :(得分:0)

你可以添加一个包含user_id,job_id列的新表,每当有人查看你在那里插入的作业时(仅限第一次),这样你就可以从这个表中轻松选择并查看用户查看了哪些作业或者某个特定工作是否被视为用户

答案 1 :(得分:0)

使用userID,postID和readStatus创建另一个名为readPostStatus的表。

然后在帖子上,所有状态对于读取状态都将为false。 (有很多方法可以显示这些结果)

然后当特定用户阅读帖子时,编辑readPostStatus表,在readStatus中将userID和postID标记为true

答案 2 :(得分:0)

我认为你对作为团队成员的用户感兴趣,而不是用户创建工作。另外我猜有一个User表(userID中的Team是外键)。

您实际需要的是每个User的每个Job的视图计数器。这看起来像两个表之间的多对多关系。我建议最好的方法是使用另一个名为UserJob的表,或者更有用的表,其中包含字段:jobIDuserIDviewCount。加载作业页面时,您运行查询以检查加载作业的加载页面中是否已存在此表中的记录。如果没有,则创建它(并将计数初始化为1)。否则,您将增加视图计数。

如果您不关心计数,只是看它是否被看到,那么您不需要费心递增计数。您可能希望将字段命名为hasSeen或其他内容,而不是viewCount

编辑:忘记说通过查询此表可以轻松检查用户是否看到了作业,并检查是否存在行(hasSeen设置为1)。根据您的结构,您可能希望在为用户分配作业时自动添加此表的行(hasSeen设置为0)。

答案 3 :(得分:0)

在这里看到答案后,我想出了自己的解决方案,所以只是为了记录,我会把它放在这里;因为没有其他答案真的为我削减了。

好。所以我对其他答案的厌恶真的源于我不想创建另一个表的事实。我讨厌用无意义的表来堵塞我的数据库,我想要一个更好的解决方案。

所以我将表team修改为:

小组: id|jobID|userID|vocation|exchangeID

添加列exchangeID,它基本上存储了此用户已读取的最新交换的ID。每次用户查看作业时都会更新。很容易。

然后,为了找出有多少新帖子,我只需从exchange中获取与该作业相关的所有ID的列表,然后找出列表中我team的位置。{{1} }坐,然后返回剩余的行给我未读的帖子。

然后我将这段代码(大约20行)粘贴到一个setInterval中,该数据将数据加载到作业视图页面上,这样如果有人在没有人查看的情况下发布到作业,它就会自动更新!流畅!

感谢您的帮助StackOverflow!