2010-03-12 71 views
1

我想做一个功能我的用户,等等的index.php有e.g:PHP“你有()对你的剪辑有新评论”,怎么样?

你有你的素材2条新的评论

应该怎么做呢?我的意思是我想要创建这个最简单的方法。视频表为member_videos,评论表为member_videocomments,表内的评论通过其“video_ID”进行连接,该“videoID”是member_videos中列的标识。

我应该做的经典之作,使一个领域,这是一个0,直到它已被用户看到它1或我应该做什么。

回答

3

每个注释的unread标志的一种替代方案是用户记录上的last_read_comments时间戳。每当他们阅读他们的新评论时,将时间戳更新为当前时间。当他们登陆您的主页时,查询比该时间戳值更新的所有评论。

+0

如果所有评论都可以在网页上同时看到(像SO一样),那么时间戳肯定是这里的一种方式。如果评论必须单独阅读,则时间戳不好。 – 2010-03-12 17:24:58

+0

@Andy E,如果评论必须单独阅读每个视频,我想他可以把时间戳放在member_videos表中,而不是用户记录。 – 2010-03-12 17:50:22

+0

我认为OP在他们说“新”时意味着未读。所以时间戳在这种情况下是无关紧要的。 – ssergei 2010-03-12 19:21:26

0

你为什么不只是做一个检查,当你加载反对意见表中的视频说像

SELECT COUNT(*) FROM member_videocomments WHERE videoID = videoIDLoaded; 

然后得到结果集返回一个整数,并检查如果整数等于0,如果它然后显示0,否则查询数据库的注释获取结果集并显示页面上的所有评论,但是你喜欢。

+0

这只是获得每个视频的评论数量 - 它并没有考虑评论是否被用户阅读,这是他所要求的。 – 2010-03-12 17:52:08

0

只需更新表member_videocomments中的字段,如readbyuser。保留为零,直到用户查看该特定评论。

$result = mysql_query("SELECT id FROM member_videocomments WHERE !readbyuser"); 
$num_rows = mysql_num_rows($result); 
0

你自己给出了答案。只要在实际显示给用户时标注评论。假设新评论不是一次全部查看,而是每个视频片段,但我认为时间戳方法不是一个好的解决方案,因为一旦用户打开了其中一个新评论的视频,当您更新时间戳时,您将会失去追踪其他新评论。

0

我也有类似的情况,我正在使用is_read标志。将注释添加到数据库时,is_read设置为0。当用户登录时,我会检查是否有任何未读的评论(这里是我抓取未读评论的数量,以便我可以显示它)。然后,当他们查看它们时,我抓取评论的ID并运行查询以将其is_read设置为1

马修的时间戳解决方案也很好,所以真的取决于你感觉更舒适。