php统计文章排行示例,代码可以用在dedemcs上按月、周、当天统计文章。 代码:
- <php
- /**
- *
- * 统计软件与文章等月、周、当天排行
- *
- * $field_id(文章ID)
- */ www.
- //统计月、周、当天排行的方法
- require_once(dirname(__FILE__)."/../include/common.inc.php");
- function countdown($field_id){
- date_default_timezone_set('Asia/Shanghai'); //设置默认时区
- global $dsql;
- $re_total = 1;
- $tableName = '#@__tongji';
- $nowDateArray = getdate(time());
- $sql_tongji = "select * from `$tableName` where aid=$field_id";
- $rs = $dsql->ExecuteNoneQuery2($sql_tongji);
- //如果不存在此篇文章信息,则新插入一条
- if($rs <= 0){
- //获取栏目ID值
- $sql_typeid = "select typeid from `#@__archives` where id=$field_id";
- $t_row = $dsql->GetOne($sql_typeid);
- $query = " INSERT INTO `$tableName` VALUES($field_id,$t_row[typeid],1,1,1,1,$nowDateArray[0]); ";
- $dsql->ExecNoneQuery($query);
- }else{
- $result = $dsql->GetOne($sql_tongji);
- $oldTimeStamp = $result['lasttime']; //最后点击时间
- $m_total = $result['m_total']; //月点击
- $w_total = $result['w_total']; //周点击
- $d_total = $result['d_total']; //日点击
- $t_total = $result['t_total']; //总点击
- $oldDateArray = getdate($oldTimeStamp);
- //统计当月
- if($nowDateArray["year"] == $oldDateArray["year"] && $nowDateArray["mon"] == $oldDateArray["mon"]){
- $m_total++;
- }else{
- $m_total = 1;
- }
- //统计本周
- $tmpStartDate = mktime(0,0,0,$nowDateArray[ "mon"],$nowDateArray[ "mday"],$nowDateArray[ "year"]) - ($nowDateArray[ "wday "] * 86400);
- $tmpEndDate = mktime(23,59,59,$nowDateArray[ "mon"],$nowDateArray[ "mday"],$nowDateArray[ "year"]) + ((6 - $nowDateArray[ "wday"]) * 86400);
- if($oldTimeStamp >= $tmpStartDate && $oldTimeStamp <= $tmpEndDate){
- $w_total++;
- }else{
- $w_total = 1;
- }
- //统计今日
- $dayStart =mktime(0,0,0,$nowDateArray[ "mon"],$nowDateArray[ "mday"],$nowDateArray[ "year"]); //当天开始时间戳
- $dayEnd =mktime(23,59,59,$nowDateArray[ "mon"],$nowDateArray[ "mday"],$nowDateArray[ "year"]); //当天结束时间戳
- if($oldTimeStamp >= $dayStart && $oldTimeStamp <= $dayEnd){
- $d_total++;
- }else{
- $d_total = 1;
- }
- $t_total++;
- //更新统计数
- $dsql->ExecuteNoneQuery("update $tableName set m_total=$m_total,w_total=$w_total,d_total=$d_total,t_total=$t_total,lasttime=$nowDateArray[0] where aid=$field_id");
- $dsql->ExecuteNoneQuery("update dede_archives set click=$t_total where id=$field_id");
- $re_total = $t_total;
- }
- return $re_total;
- }
- countdown($aid); //方法调用
- /*
- //mysql表结构
- CREATE TABLE IF NOT EXISTS `dede_tongji` (
- `aid` int(11) NOT NULL,
- `cid` smallint(5) NOT NULL,
- `tid` smallint(5) NOT NULL,
- `m_total` int(11) NOT NULL DEFAULT '1',
- `w_total` int(11) NOT NULL DEFAULT '1',
- `d_total` int(11) NOT NULL DEFAULT '1',
- `t_total` int(11) NOT NULL DEFAULT '1',
- `lasttime` int(12) NOT NULL,
- PRIMARY KEY (`aid`)
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
- */
- >
|