假设条件: 模型:news 文章ID=35
在模型管理增加相应3个字段,分别是:DayHits WeekHits MonthHits 这3个字段全部在主表,int类型字段
再增加 ConditionHits 字段,为文本型,同样在主表 注意大小写
$time=mktime(0,0,0,8,5,2010);//设置日期为2010年8月5号 $wzid=35;//文章ID35 $Week=date("w",$time);//今天星期几 $Number=date("j",$time);//今天几号 $Month=date("m",$time);//今天是几月 $Years=date("Y",$time);//今天那年 $d=cal_days_in_month(CAL_GREGORIAN,$Month,$Years);//去得本月总天数 $Week_r=$Number-$Week;//本周日是几号 if($Week_r<1){$Week_r=cal_days_in_month(CAL_GREGORIAN,$Month-1,$Years)+$Week_r;} $Week_l=$Number+7-$Week-1;//本周六是几号 if($Week_l>$d){$Week_l=$Week_l-$d;} $newsrs=$empire->fetch1("select ConditionHits from {$dbtbpre}ecms_news where `id`={$wzid}"); $DayHitstime_k=mktime(0,0,0,date("m",$time),$Number,date("Y",$time)); $DayHitstime_j=$DayHitstime_k+86400; if(empty($newsrs['ConditionHits'])){//判断月、周、日点击条件是否为空,如果为空,初始值 $empire->query("UPDATE `{$dbtbpre}ecms_news` SET `ConditionHits`='".$Number."|".$Week_r."-".$Week_l."|".$Month."',`DayHits`=1,`WeekHits`=1,`MonthHits`=1 WHERE `id`={$wzid}"); }else{ $Daytj=explode("|",$newsrs['ConditionHits']); print_r($Daytj); if($newsrs['ConditionHits']!="".$Number."|".$Week_r."-".$Week_l."|".$Month.""){ if((int)$Daytj[0]!=$Number){ $empire->query("UPDATE `{$dbtbpre}ecms_news` SET `ConditionHits`='".$Number."|".$Daytj[1]."|".$Daytj[2]."',`DayHits`=0 WHERE `id`={$wzid}"); } if($Daytj[1]!="".$Week_r."-".$Week_l.""){ $empire->query("UPDATE `{$dbtbpre}ecms_news` SET `ConditionHits`='".$Daytj[0]."|".$Week_r."-".$Week_l."|".$Daytj[2]."',`WeekHits`=0 WHERE `id`={$wzid}"); } if((int)$Daytj[2]!=(int)$Month){ $empire->query("UPDATE `{$dbtbpre}ecms_news` SET `ConditionHits`='".$Daytj[0]."|".$Daytj[1]."|".$Month."',`MonthHits`=0 WHERE `id`={$wzid}"); } }else{ if((int)$Daytj[0]==$Number){ $empire->query("UPDATE `{$dbtbpre}ecms_news` SET `DayHits`=DayHits+1 WHERE `id`={$wzid}");//今日点击+1 } if($Daytj[1]==$Week_r."-".$Week_l){ $empire->query("UPDATE `{$dbtbpre}ecms_news` SET `WeekHits`=WeekHits+1 WHERE `id`={$wzid}");//本周点击+1 } if((int)$Daytj[2]==(int)$Month){ $empire->query("UPDATE `{$dbtbpre}ecms_news` SET `MonthHits`=MonthHits+1 WHERE `id`={$wzid}");//本月点击+1 } } }
这个方法是自己瞎整的,至于效率啦,是否合理啦...我自己也不知道....
欢迎大家测试~~~
不提供修改好的文件,请自己修改!如果需要,可以联系本人:QQ442981383
本文首发地址:http://www.abc3210.com/bzzx/ecms/2010-08-23/689.html 【帝国实现文章点击月、周、日排行效果方法】
这里是论坛另外一位牛人写的:http://bbs.phome.net/showthread-13-144999-0.html 他使用的主要是帝国计划任务,我这个是不需要那个~~~
|