我想做一个功能我的用户,等等的index.php有e.g:PHP“你有()对你的剪辑有新评论”,怎么样?
你有你的素材2条新的评论
应该怎么做呢?我的意思是我想要创建这个最简单的方法。视频表为member_videos,评论表为member_videocomments,表内的评论通过其“video_ID”进行连接,该“videoID”是member_videos中列的标识。
我应该做的经典之作,使一个领域,这是一个0,直到它已被用户看到它1或我应该做什么。
我想做一个功能我的用户,等等的index.php有e.g:PHP“你有()对你的剪辑有新评论”,怎么样?
你有你的素材2条新的评论
应该怎么做呢?我的意思是我想要创建这个最简单的方法。视频表为member_videos,评论表为member_videocomments,表内的评论通过其“video_ID”进行连接,该“videoID”是member_videos中列的标识。
我应该做的经典之作,使一个领域,这是一个0,直到它已被用户看到它1或我应该做什么。
每个注释的unread
标志的一种替代方案是用户记录上的last_read_comments
时间戳。每当他们阅读他们的新评论时,将时间戳更新为当前时间。当他们登陆您的主页时,查询比该时间戳值更新的所有评论。
你为什么不只是做一个检查,当你加载反对意见表中的视频说像
SELECT COUNT(*) FROM member_videocomments WHERE videoID = videoIDLoaded;
然后得到结果集返回一个整数,并检查如果整数等于0,如果它然后显示0,否则查询数据库的注释获取结果集并显示页面上的所有评论,但是你喜欢。
这只是获得每个视频的评论数量 - 它并没有考虑评论是否被用户阅读,这是他所要求的。 – 2010-03-12 17:52:08
只需更新表member_videocomments
中的字段,如readbyuser
。保留为零,直到用户查看该特定评论。
$result = mysql_query("SELECT id FROM member_videocomments WHERE !readbyuser");
$num_rows = mysql_num_rows($result);
你自己给出了答案。只要在实际显示给用户时标注评论。假设新评论不是一次全部查看,而是每个视频片段,但我认为时间戳方法不是一个好的解决方案,因为一旦用户打开了其中一个新评论的视频,当您更新时间戳时,您将会失去追踪其他新评论。
我也有类似的情况,我正在使用is_read
标志。将注释添加到数据库时,is_read
设置为0
。当用户登录时,我会检查是否有任何未读的评论(这里是我抓取未读评论的数量,以便我可以显示它)。然后,当他们查看它们时,我抓取评论的ID并运行查询以将其is_read
设置为1
。
马修的时间戳解决方案也很好,所以真的取决于你感觉更舒适。
如果所有评论都可以在网页上同时看到(像SO一样),那么时间戳肯定是这里的一种方式。如果评论必须单独阅读,则时间戳不好。 – 2010-03-12 17:24:58
@Andy E,如果评论必须单独阅读每个视频,我想他可以把时间戳放在member_videos表中,而不是用户记录。 – 2010-03-12 17:50:22
我认为OP在他们说“新”时意味着未读。所以时间戳在这种情况下是无关紧要的。 – ssergei 2010-03-12 19:21:26