1. 程式人生 > >php統計近一週和近30天的使用者資料

php統計近一週和近30天的使用者資料

先上一張效果圖



這邊用的是echarts外掛http://echarts.baidu.com/

上程式碼(小白寫的 別追求什麼屌逼程式碼,就是冗餘的面向過程,不服你來咬我)

<div>
	<button onclick="zhou()" class="btnweek week active" style="margin-left: 300px">按周排</button><button onclick="yue()" class="btnweek month" style="margin-left: 100px">按月排</button>
</div>

		<!-- 為 ECharts 準備一個具備大小(寬高)的 DOM -->
    	<div id="main" style="width: 95%;height:400px;"></div>
    	<script type="text/javascript">
        zhou();
        function zhou() {
        	var myChart = echarts.init(document.getElementById('main'));
			$(".week").attr("class","btnweek week active");
			$(".month").attr("class","btnweek month");
        	$.get('?act=welcome&op=index&get_data=week',function(data){
				myChart.setOption(data);
			},'json');
        }
        function yue(){
        	var myChart = echarts.init(document.getElementById('main'));
        	// 非同步載入資料
			$(".week").attr("class","btnweek week");
			$(".month").attr("class","btnweek month active");
			$.get('?act=welcome&op=index&get_data=month',function(data){
				myChart.setOption(data);
			},'json');
        }
		</script>

這些是html程式碼,需要引入一個erchars.js檔案 可以從上面網址down下來,接下來上統計的程式碼
/*
	* 
	* VIP列表
	*
	*/

	public function indexOp()
	{
		$model_shop = Model('shop');
		$model_admin = Model('admin');
		$model_member = Model('member');
		$model_ap = Model('ap');
		$user=$this->getAdminInfo();
		$admin=$model_admin->getOneAdmin($user["id"]);
		if($admin["admin_area"]){
			$condition["areacode"]=array("in",$admin["admin_area"]);
		}



		//ap
		$shop_id = $model_shop->getShopList($condition, '*');
		$sid=array();
		foreach($shop_id as $shid){
			$sid[]=$shid["id"];
		}
		$condition_ap["shop_id"]=array("in",$sid);
		

		if ($_GET['get_data']=='week') {
			echo $this->get_json_arr(6);
		}else if ($_GET['get_data']=='month') {
			echo $this->get_json_arr(30);
		}else{
			Tpl::showpage('welcome.index');
		}
	}

	public function get_json_arr($num=6){
		$model_shop = Model('shop');
		$model_ap = Model('ap');
		//統計商鋪
		for($i=$num;$i>=0;$i--){
            $daystr=date('Y-m-d', strtotime("-$i day"));
            $searchstr="TO_DAYS(from_unixtime(addtime,'%Y-%m-%d'))=TO_DAYS('".$daystr."')";
            $shopCount=$model_shop->where($searchstr)->count();
            $shopDayCountArray[]=$shopCount;
    	}
    	//統計ap
    	for($i=$num;$i>=0;$i--){
            $daystr=date('Y-m-d', strtotime("-$i day"));
            $searchstr="TO_DAYS(from_unixtime(addtime,'%Y-%m-%d'))=TO_DAYS('".$daystr."')";
            $apCount=$model_ap->where($searchstr)->count();
            $dateArray[]=date('m-d', strtotime("-$i day"));
            $apDayCountArray[]=$apCount;
    	}
    	// echo "<pre>";
		// print_r($dateArray);die;
		if ($num==6) {
			$title='近一週的商鋪和AP的統計';
		}else{
			$title='近一月的商鋪和AP的統計';
		}
    	//處理json包
    	$json_arr = array(
			'title'=>array('text'=>$title),
			'tooltip'=>array('trigger'=>'axis'),
			'legend'=>array('data'=>array('商鋪','AP')),
			'toolbox'=>array(
					'show'=>true,
					'feature'=>array(
							'dataZoom'=>array('yAxisIndex'=>'none'),
							'dataView'=>array('readOnly'=>false),
							'magicType'=>array('type'=>array('line','bar')),
							'restore'=>array(),
							'saveAsImage'=>array()
						),
				),


			'xAxis'=>array('type'=>'category','boundaryGap'=>false,'data'=>$dateArray),
			'yAxis'=>array('type'=>'value','interval'=>1,'min'=>0,'axisLabel'=>array('formatter'=>'{value} 個')),
			'series'=>array(
				array(
					'name'=>'商鋪',
					'type'=>'line',
					'data'=>$shopDayCountArray
					),
				array(
					'name'=>'AP',
					'type'=>'line',
					'data'=>$apDayCountArray
					)
			)
		);
		return json_encode($json_arr);exit;
	}

我能看懂就行,您們湊合看吧 主要就是在for迴圈中查詢的資料。。。=_=!