BBS中如何实现根据用户帐号判断文章是“已读”,“未读”? 在文章数据表中增加一个字段存放浏览用户id或者增加一个表存放用户id 浏览文章id 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的论坛是用cookie记的……减轻数据库负担…… cookie记不住 客户端清理一下后就没了 不同文章的页面写个不同变量的cookie啊,如果已经存在此cookie变量就表明已读了比如说变量名称类似这样 "xx"+你文章的id -- cookie记不住 客户端清理一下后就没了那你清理一下数据库,数据库可以不没了吗? 完全精确的统计,可以通过在文章表中记录用户id或在用户表中记录文章id但记录量太大,实用价值有待考察一般可记录用户最后一次离开的时间 -- cookie记不住 客户端清理一下后就没了那你清理一下数据库,数据库可以不没了吗?用户换台机器看文章时看过的不就显示没看过用cookie形同虚设 <?session_start();//...//单独建立一个用户表就俩字段:用户ID,已读文章ID//其中已读文章ID用这种形式:"1,3,4,5,100,1000"//在用户登陆时取出这个数据 dd$dd = "1,3,4,5,100,1000";$cc = explode(",", $dd);$cc = array_flip($cc);//把cc存成session以后不用再读数据库了session_register("dd");session_register("cc");//列出BBS的文章列表时...设$ID为文章idif($cc[$ID]){ //该文已读}else{ //该文未读}?><?//当用户读一篇文章时,如果 $cc[$ID] 有值则不管//如果没值,则以前没有读过改文,更新一次数据库$sql = "update xxx set ID='".$dd.",$ID'";mysql_query($sql);//将cc和dd更新$dd = $dd.",$ID";$cc[$ID] = 1;?> 呵呵,Mistruster(弱智d)的方法不错啊,多谢。 对于Mistruster(弱智d)的方法我不是没想过。但是这样做我有一个疑问。大家都知道txt类型和vchar类型一样是变长的,应该尽量减少修改的次数。如果象上面说的做法,每有一个人看了帖子将会修改一次txt字段的长度,这会不会造成数据库的不稳定?已读的标识并不太影响bbs的好坏。做到cookie标记最近几天的未读就够了。为了做到精确标识而影响bbs的性能我觉得不太值得。但是楼主要求的是精确标识…… 谢谢各位的指教,本人感觉受益匪浅,呵呵,多谢。由于本人开发的BBS是在企业内使用的,访问量不会很大,但是准确性很重要所以我觉得采用数据库存储的方法应该更适合一些,当然,如果在广域网内,用Gdj的方法应该更合适。这可能就是唠叨讲的,实用价值。我的理解不知道对不对,还得请各位发表意见啊。 to Gdj(陈水.智商只有129.非卖品):呵呵,你的担心也不无道理所以我说是单独建立一个表,只有两个字段,其中一个字段不断变长最多也只是影响到这一个表而已 这个表所有帖子页,及显示帖子列表页都要读写,不稳定的话会直接影响更个bbs的性能。因为有人回帖后就要重新标为未读,所以不能简单的只记一个已读ID,还要多记一个阅读时间。一个已读最少要占掉十几个字节。老用户占到几百K是很正常的。这样一个老用户每看一帖都得多读几百K的数据,如果看的是新帖还要多写几百K,一个普通的txt字段最长也才64k。所以现在发布的较好的免费bbs我看过都是用cookie非精确标识的,大概每用户占3k左右的cookie。 cookie记录吧,这个查询过与没有查询过,本身就是一个不确定的东西,比如,看过的又有好几个回复的,你说看还不是看,是吧~~所以,bbs加一个按id排序浏览,有些人不常上论坛,可以从第三页开始看,这样贴子都能按顺序看完!加个1小时,5小时,12小时,24小时,有新回复的小标志,这些就差不多了~ 按现有的BBS。基本都是记录最后一次到访的时间吧。 关于COM的疑问 mysql 问题。。。请教大牛!!! 用GD库ImageTTFText生成图片,什么中文字体是单一颜色 php上传大文件用http还是tcp/ip协议更好 求教js问题 静态页面的急问题,up有分 关于linux下安装php的问题? 如何用php来读取excel文件的数据?? 高分求助关于Apache的多主机配置问题(LAN and Internet)……高手请进!!!(分不够可再加)) 一个有趣的问题 求助!!!!如何用PHP将页面的数据存入数据库? 這個問題好難整!分不多,但是有點尖銳!
比如说变量名称类似这样 "xx"+你文章的id
cookie记不住 客户端清理一下后就没了那你清理一下数据库,数据库可以不没了吗?
但记录量太大,实用价值有待考察一般可记录用户最后一次离开的时间
cookie记不住 客户端清理一下后就没了那你清理一下数据库,数据库可以不没了吗?用户换台机器看文章时
看过的不就显示没看过
用cookie形同虚设
session_start();
//...
//单独建立一个用户表就俩字段:用户ID,已读文章ID
//其中已读文章ID用这种形式:"1,3,4,5,100,1000"
//在用户登陆时取出这个数据 dd
$dd = "1,3,4,5,100,1000";
$cc = explode(",", $dd);
$cc = array_flip($cc);
//把cc存成session以后不用再读数据库了
session_register("dd");
session_register("cc");
//列出BBS的文章列表时...设$ID为文章id
if($cc[$ID])
{
//该文已读
}
else
{
//该文未读
}
?><?
//当用户读一篇文章时,如果 $cc[$ID] 有值则不管
//如果没值,则以前没有读过改文,更新一次数据库
$sql = "update xxx set ID='".$dd.",$ID'";
mysql_query($sql);
//将cc和dd更新
$dd = $dd.",$ID";
$cc[$ID] = 1;
?>
所以我觉得采用数据库存储的方法应该更适合一些,当然,如果在广域网内,
用Gdj的方法应该更合适。这可能就是唠叨讲的,实用价值。我的理解不知道对不对,还得请各位发表意见啊。
所以我说是单独建立一个表,只有两个字段,其中一个字段不断变长
最多也只是影响到这一个表而已
加个1小时,5小时,12小时,24小时,有新回复的小标志,这些就差不多了~