编程爱好者之家

aljax添加文章日,周,月访问量

2018-03-02 10:42:29 478

//添加文章访问量
var add_visit_url =  "/Home/Ajax/addArticleVisit";
$(function(){
   var id = 20180302103653;
   var hit_day = 20180302;
   $.ajax({
      type:"post",
      url:add_visit_url,
      data:{id:id,hit_day:hit_day},
      success:function(data) {

      }
   })
})

php代码如下

public function addVisitCount(){

    $id =  I('id');
    $hits_day = I("hit_day");

    $tmpdate = date('Ymd');
    $lastweek = LastWeekday(); //上周日期
    $nextweek = NextWeekday(); //下周日期
    $preMonth = date("Ymd", strtotime("-1 month"));
    $nextMonth = date("Ymd", strtotime("+1 month"));

    if ($hits_day == $tmpdate){
        $strQuery = "day_hits=day_hits+1 ,";
    }else{
        $strQuery = "day_hits=1 ,";
    }
    if (($hits_day >= $lastweek) && ($hits_day <= $nextweek)){
        $strQuery .= "week_hits=week_hits+1, ";
    }else{
        $strQuery .= " week_hits=1 ,";
    }

    if (($hits_day >= $preMonth) && ($hits_day <= $nextMonth)){
        $strQuery .= "month_hits=month_hits+1 ";
    }else{
        $strQuery .= "month_hits=1 ";
    }
    $sql = " UPDATE  blog_article SET hits=hits+1,hit_day='$tmpdate',";
    $sql .= $strQuery;
    $sql .= " WHERE `id` =$id";

    $this->_article -> execute($sql);
}
function LastWeekday(){
    $tmpyear = date('Y');
    $tmpmonth = date('m');
    $tmpday = date('d');
    $temp = date('w'); // the day of the week
    if ($temp == 0) $temp = 7; // 0 is sunday
    // 每个星期以星期1为开始,星期天为结束,所以是为了获得所在这个星期的开始和结束
    if ($tmpday < $temp){ // 那就是说上个开始肯定是上个月的,比如今天是1号却是星期天,那上个开始肯定是上个月
        $lastmonth = $tmpmonth - 1;
        if ($lastmonth < 1){ // 也就是说上个月是12月咯~
            $lastmonth = 12;
            $lastyear = $tmpyear - 1; //这里就不再处理了~
        }else{
            $lastmonth = sprintf("%02d", $lastmonth); //
            $lastyear = $tmpyear;
        }

        $lastmonthdays = monthdays($lastmonth, $lastyear);
        $lastday = $lastmonthdays + $tmpday - $temp + 1; // 比如今天是8月2号,星期5,然后31+2-5 + 1 = 29 也就是说上个月29是星期1
        // 再比如2002.9.1是星期天,那么31+1-7+1 = 26~~:)
    }else{ // 那上个开始肯定就是这个月的咯,如果都是7的话就是第一天咯~比如今天是1号是星期1,那今天就是开始
        $lastmonth = sprintf("%02d", $tmpmonth); //
        $lastyear = $tmpyear;
        $lastday = $tmpday - $temp + 1; //比如9.2是星期1,那么2-1+1 = 2 就是今天咯~
    }
    $lastday = sprintf("%02d", $lastday);
    $lastweek = "$lastyear$lastmonth$lastday";
    return $lastweek;
}
function NextWeekday(){
    $tmpyear = date('Y');
    $tmpmonth = date('m');
    $tmpday = date('d');
    $temp = date('w'); // the day of the week
    if ($temp == 0) $temp = 7; // 0 is sunday
    // 那今天离这个星期的结束还有天数
    $temp2 = 7 - $temp;
    $nextday = $tmpday + $temp2;
    $monthdays = monthdays($tmpmonth, $tmpyear); //这个月的天数
    if ($nextday > $monthdays){ // 也就是说在下个月
        $nextmonth = $tmpmonth + 1;
        if ($nextmonth > 12){
            $nextmonth = sprintf("%02d", 1);
            $nextyear = $tmpyear + 1;
        }else{
            $nextmonth = sprintf("%02d", $nextmonth);
            $nextyear = $tmpyear;
        }
        $nextday = $nextday - $monthdays; // 如8.30是星期5,那32-31 = 1
    }else{ // 也就是说在这个月
        $nextyear = $tmpyear;
        $nextmonth = sprintf("%02d", $tmpmonth);
        $nextday = $nextday; // 如8.20是星期2,那就是25
    }
    $nextday = sprintf("%02d", $nextday);
    $nextweek = "$nextyear$nextmonth$nextday";
    return $nextweek;
}
function monthdays($month, $year){
    if ($month == 1 or $month == 3 or $month == 5 or $month == 7 or $month == 8 or $month == 10 or $month == 12){
        $days = 31;
    }elseif ($month == 4 or $month == 6 or $month == 9 or $month == 11){
        $days = 30;
    }elseif ($month == 2){
        if (($year-1980) % 4 == 0){ // ^-^
            $days = 29;
        }else{
            $days = 28;
        }
    }
    return $days;
}


同类文章