php实现按天数、星期、月份查询的搜索框
本文实例为大家分享了php实现按天数、星期、月份查询的搜索框,搜索时候展示数据的统计图,主要展示图形的效果,供大家参考,具体内容如下
1.ajax.php
<?php $year=$_GET['y']; if(!isset($_GET['m'])){ $month=1; }else{ $month=$_GET['m']; } $week_arr=getMonthWeekArr($year,$month); echojson_encode($week_arr); die; /** *获得系统某月的周数组,第一周不足的需要补足 * *@paramint$current_year *@paramint$current_month *@returnstring[][] */ functiongetMonthWeekArr($current_year,$current_month){ //该月第一天 $firstday=strtotime($current_year.'-'.$current_month.'-01'); //该月的第一周有几天 $firstweekday=(7-date('N',$firstday)+1); //计算该月第一个周一的时间 $starttime=$firstday-3600*24*(7-$firstweekday); //该月的最后一天 $lastday=strtotime($current_year.'-'.$current_month.'-01'."+1month-1day"); //该月的最后一周有几天 $lastweekday=date('N',$lastday); //该月的最后一个周末的时间 $endtime=$lastday-3600*24*($lastweekday%7); $step=3600*24*7;//步长值 $week_arr=array(); for($i=$starttime;$i<$endtime;$i=$i+3600*24*7){ $week_arr[]=array('key'=>date('Y-m-d',$i).'|'.date('Y-m-d',$i+3600*24*6),'val'=>date('Y-m-d',$i).'~'.date('Y-m-d',$i+3600*24*6)); } return$week_arr; }
2.datehelper.php
<?php //获得系统年份数组 /** * *@returnstring[] */ functiongetSystemYearArr(){ $year_arr=array('2010'=>'2010','2011'=>'2011','2012'=>'2012','2013'=>'2013','2014'=>'2014','2015'=>'2015','2016'=>'2016','2017'=>'2017','2018'=>'2018','2019'=>'2019','2020'=>'2020'); return$year_arr; } /** *获得系统月份数组 * *@returnarray */ functiongetSystemMonthArr(){ $month_arr=array('1'=>'01','2'=>'02','3'=>'03','4'=>'04','5'=>'05','6'=>'06','7'=>'07','8'=>'08','9'=>'09','10'=>'10','11'=>'11','12'=>'12'); return$month_arr; } /** *获得系统周数组 * *@returnstring[] */ functiongetSystemWeekArr(){ $week_arr=array('1'=>'周一','2'=>'周二','3'=>'周三','4'=>'周四','5'=>'周五','6'=>'周六','7'=>'周日'); return$week_arr; } /** *获取某月的最后一天 * *@paramint$year *@paramint$month *@returnnumber */ functiongetMonthLastDay($year,$month){ $t=mktime(0,0,0,$month+1,1,$year); $t=$t-60*60*24; return$t; } /** *获得系统某月的周数组,第一周不足的需要补足 * *@paramint$current_year *@paramint$current_month *@returnstring[][] */ functiongetMonthWeekArr($current_year,$current_month){ //该月第一天 $firstday=strtotime($current_year.'-'.$current_month.'-01'); //该月的第一周有几天 $firstweekday=(7-date('N',$firstday)+1); //计算该月第一个周一的时间 $starttime=$firstday-3600*24*(7-$firstweekday); //该月的最后一天 $lastday=strtotime($current_year.'-'.$current_month.'-01'."+1month-1day"); //该月的最后一周有几天 $lastweekday=date('N',$lastday); //该月的最后一个周末的时间 $endtime=$lastday-3600*24*($lastweekday%7); $step=3600*24*7;//步长值 $week_arr=array(); for($i=$starttime;$i<$endtime;$i=$i+3600*24*7){ $week_arr[]=array('key'=>date('Y-m-d',$i).'|'.date('Y-m-d',$i+3600*24*6),'val'=>date('Y-m-d',$i).'~'.date('Y-m-d',$i+3600*24*6)); } return$week_arr; } /** *处理搜索时间 */ functiondealwithSearchTime($search_arr=''){ //初始化时间 //天 if(!isset($search_arr['search_time'])){ $search_arr['search_time']=date('Y-m-d',time()-86400); } $search_arr['day']['search_time']=strtotime($search_arr['search_time']);//搜索的时间 //周 if(!isset($search_arr['searchweek_year'])){ $search_arr['searchweek_year']=date('Y',time()); } if(!isset($search_arr['searchweek_month'])){ $search_arr['searchweek_month']=date('m',time()); } if(!isset($search_arr['searchweek_week'])){ $search_arr['searchweek_week']=implode('|',getWeek_SdateAndEdate(time())); } $weekcurrent_year=$search_arr['searchweek_year']; $weekcurrent_month=$search_arr['searchweek_month']; $weekcurrent_week=$search_arr['searchweek_week']; $search_arr['week']['current_year']=$weekcurrent_year; $search_arr['week']['current_month']=$weekcurrent_month; $search_arr['week']['current_week']=$weekcurrent_week; //月 if(!isset($search_arr['searchmonth_year'])){ $search_arr['searchmonth_year']=date('Y',time()); } if(!isset($search_arr['searchmonth_month'])){ $search_arr['searchmonth_month']=date('m',time()); } $monthcurrent_year=$search_arr['searchmonth_year']; $monthcurrent_month=$search_arr['searchmonth_month']; $search_arr['month']['current_year']=$monthcurrent_year; $search_arr['month']['current_month']=$monthcurrent_month; return$search_arr; } /** *获取本周的开始时间和结束时间 * *@paramint$current_time *@returnstring */ functiongetWeek_SdateAndEdate($current_time){ $current_time=strtotime(date('Y-m-d',$current_time)); $return_arr['sdate']=date('Y-m-d',$current_time-86400*(date('N',$current_time)-1)); $return_arr['edate']=date('Y-m-d',$current_time+86400*(7-date('N',$current_time))); return$return_arr; } /** *查询每月的周数组 */ functiongetweekofmonth(){ $year=$_GET['y']; $month=$_GET['m']; $week_arr=getMonthWeekArr($year,$month); echojson_encode($week_arr); die; }
3.statistics.php
<?php /** *统计 * *@abstract * *@copyright格里西,2016 * *@authorliujun * *@versionId:staticsv1.02016/2/5 */ /** *获得折线图统计图数据 * *param$statarr图表需要的设置项 *@returnstring */ functiongetStatData_LineLabels($stat_arr){ //图表区、图形区和通用图表配置选项 $stat_arr['chart']['type']='line'; //图表序列颜色数组 $stat_arr['colors']?'':$stat_arr['colors']=array('#058DC7','#ED561B','#8bbc21','#0d233a'); //去除版权信息 $stat_arr['credits']['enabled']=false; //导出功能选项 $stat_arr['exporting']['enabled']=false; //标题如果为字符串则使用默认样式 is_string($stat_arr['title'])?$stat_arr['title']=array('text'=>"<b>{$stat_arr['title']}</b>",'x'=>-20):''; //子标题如果为字符串则使用默认样式 is_string($stat_arr['subtitle'])?$stat_arr['subtitle']=array('text'=>"<b>{$stat_arr['subtitle']}</b>",'x'=>-20):''; //Y轴如果为字符串则使用默认样式 if(is_string($stat_arr['yAxis'])){ $text=$stat_arr['yAxis']; unset($stat_arr['yAxis']); $stat_arr['yAxis']['title']['text']=$text; } returnjson_encode($stat_arr); } /** *获得Column2D统计图数据 * *@paramarray$stat_arr *@returnstring */ functiongetStatData_Column2D($stat_arr){ //图表区、图形区和通用图表配置选项 $stat_arr['chart']['type']='column'; //去除版权信息 $stat_arr['credits']['enabled']=false; //导出功能选项 $stat_arr['exporting']['enabled']=false; //标题如果为字符串则使用默认样式 is_string($stat_arr['title'])?$stat_arr['title']=array('text'=>"<b>{$stat_arr['title']}</b>",'x'=>-20):''; //子标题如果为字符串则使用默认样式 is_string($stat_arr['subtitle'])?$stat_arr['subtitle']=array('text'=>"<b>{$stat_arr['subtitle']}</b>",'x'=>-20):''; //Y轴如果为字符串则使用默认样式 if(is_string($stat_arr['yAxis'])){ $text=$stat_arr['yAxis']; unset($stat_arr['yAxis']); $stat_arr['yAxis']['title']['text']=$text; } //柱形的颜色数组 $color=array('#7a96a4','#cba952','#667b16','#a26642','#349898','#c04f51','#5c315e','#445a2b','#adae50','#14638a','#b56367','#a399bb','#070dfa','#47ff07','#f809b7'); foreach($stat_arr['series']as$series_k=>$series_v){ foreach($series_v['data']as$data_k=>$data_v){ $data_v['color']=$color[$data_k]; $series_v['data'][$data_k]=$data_v; } $stat_arr['series'][$series_k]['data']=$series_v['data']; } //print_r($stat_arr);die; returnjson_encode($stat_arr); } /** *获得Basicbar统计图数据 * *@paramarray$stat_arr *@returnstring */ functiongetStatData_Basicbar($stat_arr){ //图表区、图形区和通用图表配置选项 $stat_arr['chart']['type']='bar'; //去除版权信息 $stat_arr['credits']['enabled']=false; //导出功能选项 $stat_arr['exporting']['enabled']=false; //显示datalabel $stat_arr['plotOptions']['bar']['dataLabels']['enabled']=true; //标题如果为字符串则使用默认样式 is_string($stat_arr['title'])?$stat_arr['title']=array('text'=>"<b>{$stat_arr['title']}</b>",'x'=>-20):''; //子标题如果为字符串则使用默认样式 is_string($stat_arr['subtitle'])?$stat_arr['subtitle']=array('text'=>"<b>{$stat_arr['subtitle']}</b>",'x'=>-20):''; //Y轴如果为字符串则使用默认样式 if(is_string($stat_arr['yAxis'])){ $text=$stat_arr['yAxis']; unset($stat_arr['yAxis']); $stat_arr['yAxis']['title']['text']=$text; } //柱形的颜色数组 $color=array('#7a96a4','#cba952','#667b16','#a26642','#349898','#c04f51','#5c315e','#445a2b','#adae50','#14638a','#b56367','#a399bb','#070dfa','#47ff07','#f809b7'); foreach($stat_arr['series']as$series_k=>$series_v){ foreach($series_v['data']as$data_k=>$data_v){ if(!$data_v['color']){ $data_v['color']=$color[$data_k%15]; } $series_v['data'][$data_k]=$data_v; } $stat_arr['series'][$series_k]['data']=$series_v['data']; } //print_r($stat_arr);die; returnjson_encode($stat_arr); } /** *计算环比 * *@paramarray$updata *@paramarray$currentdata *@returnstring */ functiongetHb($updata,$currentdata){ if($updata!=0){ $mtomrate=round(($currentdata-$updata)/$updata*100,2).'%'; }else{ $mtomrate='-'; } return$mtomrate; } /** *计算同比 * *@paramarray$updata *@paramarray$currentdata *@returnstring */ functiongetTb($updata,$currentdata){ if($updata!=0){ $ytoyrate=round(($currentdata-$updata)/$updata*100,2).'%'; }else{ $ytoyrate='-'; } return$ytoyrate; } /** *地图统计图 * *@paramarray$stat_arr *@returnstring */ functiongetStatData_Map($stat_arr){ //$color_arr=array('#f63a3a','#ff5858','#ff9191','#ffc3c3','#ffd5d5'); $color_arr=array('#fd0b07','#ff9191','#f7ba17','#fef406','#25aae2'); $stat_arrnew=array(); foreach($stat_arras$k=>$v){ $stat_arrnew[]=array('cha'=>$v['cha'],'name'=>$v['name'],'des'=>$v['des'],'color'=>$color_arr[$v['level']]); } returnjson_encode($stat_arrnew); } /** *获得饼形图数据 * *@paramarray$data *@returnstring */ functiongetStatData_Pie($data){ $stat_arr['chart']['type']='pie'; $stat_arr['credits']['enabled']=false; $stat_arr['title']['text']=$data['title']; $stat_arr['tooltip']['pointFormat']='{series.name}:<b>{point.y}</b>'; $stat_arr['plotOptions']['pie']=array( 'allowPointSelect'=>true, 'cursor'=>'pointer', 'dataLabels'=>array( 'enabled'=>$data['label_show'], 'color'=>'#000000', 'connectorColor'=>'#000000', 'format'=>'<b>{point.name}</b>:{point.percentage:.1f}%' ) ); $stat_arr['series'][0]['name']=$data['name']; $stat_arr['series'][0]['data']=array(); foreach($data['series']as$k=>$v){ $stat_arr['series'][0]['data'][]=array($v['p_name'],$v['allnum']); } //exit(json_encode($stat_arr)); returnjson_encode($stat_arr); }
4.theline.php
<!DOCTYPE> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <!--引入ECharts文件--> <title>Echarts</title> <scriptsrc="js/echarts.common.min.js"></script> </head> <scriptsrc="js/jquery.js"></script> <?phpinclude('php/datehelper.php');include('php/statistics.php');?> <?php //获得系统年份 $year_arr=getSystemYearArr(); //获得系统月份 $month_arr=getSystemMonthArr(); //存储参数 $search_arr=$_REQUEST; $search_arr=dealwithSearchTime($search_arr); //获得本月的周时间段 $week_arr=getMonthWeekArr($search_arr['week']['current_year'],$search_arr['week']['current_month']); //天数 if(!isset($_REQUEST['search_time'])){ $_REQUEST['search_time']=date('Y-m-d',time()-86400); } $search_time=$_REQUEST['search_time'];//搜索的时间 //周 if(!isset($_REQUEST['search_time_year'])){ $_REQUEST['search_time_year']=date('Y',time()); } if(!isset($_REQUEST['search_time_month'])){ $_REQUEST['search_time_month']=date('m',time()); } if(!isset($_REQUEST['search_time_week'])){ $_REQUEST['search_time_week']=implode('|',getWeek_SdateAndEdate(time())); } $current_year=$_REQUEST['search_time_year']; $current_month=$_REQUEST['search_time_month']; $current_week=$_REQUEST['search_time_week']; ?> <style> #search_type{float:left} #searchtype_day{float:left} #searchtype_week{float:left} #searchtype_month{float:left} </style> <body> <selectname="search_type"id="search_type"> <optionvalue="day">按照天统计</option> <optionvalue="week">按照周统计</option> <optionvalue="month">按照月统计</option> </select> <divclass="w140"id="searchtype_day"> <divclass='input-groupdate'id='datetimepicker1'> <inputid="stime"class="form-control"type="text"value="<?phpecho$search_time;?>"name="search_time"> <spanclass="input-group-addon"><spanclass="glyphiconglyphicon-calendar"></span></span> </div> </div> <divid="searchtype_week"style="display:none;"> <selectname="search_time_year"id="searchweek_year"> <?phpforeach($year_arras$k=>$v){?> <optionvalue="<?phpecho$k;?>"<?phpecho$current_year==$k?'selected':'';?>><?phpecho$v;?></option> <?php}?> </select> <selectname="search_time_month"id="searchweek_mouth"> <?phpforeach($month_arras$k=>$v){?> <optionvalue="<?phpecho$k;?>"<?phpecho$current_month==$k?'selected':'';?>><?phpecho$v;?></option> <?php}?> </select> <selectname="search_time_week"id="searchweek_week"> <?phpforeach($week_arras$k=>$v){?> <optionvalue="<?phpecho$v['key'];?>"<?phpecho$current_week==$v['key']?'selected':'';?>><?phpecho$v['val'];?></option> <?php}?> </select> </div> <divid="searchtype_month"style="display:none;"> <selectname="search_time_year"class="querySelect"> <?phpforeach($year_arras$k=>$v){?> <optionvalue="<?phpecho$k;?>"<?phpecho$current_year==$k?'selected':'';?>><?phpecho$v;?></option> <?php}?> </select> <selectname="search_time_month"class="querySelect"> <?phpforeach($month_arras$k=>$v){?> <optionvalue="<?phpecho$k;?>"<?phpecho$current_month==$k?'selected':'';?>><?phpecho$v;?></option> <?php}?> </select> </div> <divid="line_chart"style="width:600px;height:400px;"></div> <?php$thearray=array(11,11,15,13,12,13,10);?> <scripttype="text/javascript"> //基于准备好的dom,初始化echarts实例 varmylineChart=echarts.init(document.getElementById('line_chart')); option1={ title:{ text:'未来一周气温变化', subtext:'纯属虚构' }, tooltip:{ trigger:'axis' }, legend:{ data:['最高气温','最低气温'] }, toolbox:{ show:true, feature:{ dataZoom:{}, //dataView:{readOnly:false}, magicType:{type:['line','bar']}, restore:{}, saveAsImage:{} } }, xAxis:{ type:'category', boundaryGap:false, data:['周一','周二','周三','周四','周五','周六','周日'] }, yAxis:{ type:'value', axisLabel:{ formatter:'{value}°C' } }, series:[ { name:'最高气温', type:'line', data:<?phpecho(json_encode($thearray));?>, markPoint:{ data:[ {type:'max',name:'最大值'}, {type:'min',name:'最小值'} ] }, markLine:{ data:[ {type:'average',name:'平均值'} ] } }, { name:'最低气温', type:'line', data:[1,4,2,5,3,2,0], markPoint:{ data:[ {name:'周最低',value:-2,xAxis:1,yAxis:-1.5} ] }, markLine:{ data:[ {type:'average',name:'平均值'} ] } } ] }; //使用刚指定的配置项和数据显示图表。 mylineChart.setOption(option1); </script> <script> //展示搜索时间框 functionshow_searchtime(){ s_type=$("#search_type").val(); $("[id^='searchtype_']").hide(); $("#searchtype_"+s_type).show(); } $(function(){ show_searchtime(); $("#search_type").change(function(){ show_searchtime(); }); //更新周数组 $("[name='search_time_month']").change(function(){ varyear=$("[name='search_time_year']").val(); varmonth=$("[name='search_time_month']").val(); $("[name='search_time_week']").empty(); $.getJSON('php/ajax.php',{y:year,m:month},function(data){ if(data!=null){ for(vari=0;i<data.length;i++){ $("[name='search_time_week']").append('<optionvalue="'+data[i].key+'">'+data[i].val+'</option>'); } } }); }); //更新年数组 $("[name='search_time_year']").change(function(){ varyear=$("[name='search_time_year']").val(); $("[name='search_time_week']").empty(); $("#searchweek_mouthoption:first").prop("selected",'selected'); $.getJSON('php/ajax.php',{y:year},function(data){ if(data!=null){ for(vari=0;i<data.length;i++){ $("[name='search_time_week']").append('<optionvalue="'+data[i].key+'">'+data[i].val+'</option>'); } } }); }); }); </script> </body> </html>
5.time_deal.php
<?php //获取系统年份 /** * *@returnstring[] */ functiongetSystemYearArr(){ $year_arr=array('2010'=>'2010','2011'=>'2011','2012'=>'2012','2013'=>'2013','2014'=>'2014','2015'=>'2015','2016'=>'2016','2017'=>'2017','2018'=>'2018','2019'=>'2019','2020'=>'2020'); return$year_arr; } /** *获得系统月份数组 * *@returnarray */ functiongetSystemMonthArr(){ $month_arr=array('1'=>'01','2'=>'02','3'=>'03','4'=>'04','5'=>'05','6'=>'06','7'=>'07','8'=>'08','9'=>'09','10'=>'10','11'=>'11','12'=>'12'); return$month_arr; } /** *处理搜索时间 */ publicfunctiondealwithSearchTime($search_arr){ //初始化时间 //天 if(!$search_arr['search_time']){ $search_arr['search_time']=date('Y-m-d',time()-86400); } $search_arr['day']['search_time']=strtotime($search_arr['search_time']);//搜索的时间 //周 if(!$search_arr['searchweek_year']){ $search_arr['searchweek_year']=date('Y',time()); } if(!$search_arr['searchweek_month']){ $search_arr['searchweek_month']=date('m',time()); } if(!$search_arr['searchweek_week']){ $search_arr['searchweek_week']=implode('|',getWeek_SdateAndEdate(time())); } $weekcurrent_year=$search_arr['searchweek_year']; $weekcurrent_month=$search_arr['searchweek_month']; $weekcurrent_week=$search_arr['searchweek_week']; $search_arr['week']['current_year']=$weekcurrent_year; $search_arr['week']['current_month']=$weekcurrent_month; $search_arr['week']['current_week']=$weekcurrent_week; //月 if(!$search_arr['searchmonth_year']){ $search_arr['searchmonth_year']=date('Y',time()); } if(!$search_arr['searchmonth_month']){ $search_arr['searchmonth_month']=date('m',time()); } $monthcurrent_year=$search_arr['searchmonth_year']; $monthcurrent_month=$search_arr['searchmonth_month']; $search_arr['month']['current_year']=$monthcurrent_year; $search_arr['month']['current_month']=$monthcurrent_month; return$search_arr; }
以上就是本文的全部内容,希望对大家的学习有所帮助。