欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php统计文章排行示例

程序员文章站 2023-11-30 11:01:28
复制代码 代码如下:

复制代码 代码如下:

<?php
/**
 *
 * 统计软件与文章等月、周、当天排行
 *
 * $field_id(文章id)
 */
//统计月、周、当天排行的方法
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;
*/
?>