2013-07-24 36 views
0

好的,所以我创建了工作岗位上的工单系统。找出用户是否读过帖子

有三个表:

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

id|jobID|userID|vocation

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

基本上创建一个工作,插入job,团队建立并插入到team和任何职位和对话这个特定的工作是放入exchange

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

所以,如果用户发布新的东西,他们还没有加载作业并看到它,我想能够以某种方式向他们展示它。问题是我不知道我该怎么做。

对此提出建议?

+0

显示帖子列表以及链接到作业页面(如果有帮助的话),那么用户可以查看帖子流而不必查看单个作业(但是如果他们想要查看它们就有链接完整的工作记录) – Tocacar

回答

0

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

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

所以我体改表team到:

团队:id|jobID|userID|vocation|exchangeID

添加列exchangeID,基本上存储最新交换的ID,这个用户阅读。每次用户查看作业时都会更新。很简单。

然后为了找出有多少新帖子,我简单地从exchange中获取与该作业相关的所有ID的列表,并找出列表中我的team的位置。 exchangeID坐下来,然后返回剩余的行给我未读的帖子。

然后,我将这段代码(长约20行)粘贴到一个setInterval中,该数据将数据加载到作业视图页面上,以便现在如果任何人在没有人查看的情况下发布到作业,现在会自动更新!光滑!

感谢您的帮助StackOverflow!

0

您可以添加一个带有user_id,job_id列的新表格,并且每次有人查看插入它的作业(仅限第一次),因此您可以轻松地从此表中选择并查看用户查看或是否看到某个用户

0

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

然后在帖子上,所有状态对于读取状态都是错误的。 (有许多的方式来显示这些结果)

然后当一个特定的用户读取后,编辑readPostStatus表,标志着用户ID和帖子ID为true readStatus

+0

那么,当另一个用户发布作业时,我必须插入X行(每个用户1个)表示他们没有看到?那么当他们查看帖子时改变? – Chud37

+0

从来没有提到能够发布到一份工作中,我认为他们只会添加另一份工作,但从来没有,是的,只是循环所有允许的用户并插入他们的用户ID,这将是一个非常简单的查询并且不会有很大的负载分担,因为您只是传递整数,所以服务器不会承受压力。另外,一个不错的想法可能是使用ajax或jquery在帖子上显示未读/读条件 –

0

我想你有兴趣用户是工作团队的一部分,而不是用户创建工作。另外我猜想有一个用户表(userIDTeam是一个外键)。

你基本上想要的是一个查看计数器,每个User每个Job。这看起来像两个表格之间的多对多关系。我建议这样做的最好方法是制作另一个名为UserJob的表格,或者更有用的其他表格,其中包含以下字段:jobID,userIDviewCount。加载作业页面时,运行查询以检查加载该作业的此表中是否存在一条记录,供用户加载该页面。如果没有,那么你创建它(并将计数初始化为1)。否则,你增加查看计数。

如果你不关心计数,只是看是否已经看到,那么你不需要麻烦增加计数。您可能想要将该字段命名为hasSeen,而不是viewCount

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

+0

基于时间戳是否没有奇特的方法来实现它? – Chud37

+0

如果您对用户最后一次查看作业感兴趣,则可以存储时间戳而不是视图计数(也许用NULL表示“从不”)。这将允许您计算用户是否看到了某个特定时间发生的工作变化。 – gandaliter