




q群交流,tony推荐用Highcharts,百度百科的介绍:Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。目前HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。
下载一看,果然是好东西,做报表统计、曲线图之类的功能完美、强大
最终效果图:

yii,c中的代码:
//x 轴
$day_30 = strtotime(date('Y-m-d',strtotime('-29 day'))); //最近三十天的时间戳
$day_arr = array(); //最近30天日期数组
$tmp_day_30 = $day_30;
for($i=1;$i<=30;$i++){
if($i==1){
$day_arr[] = date('m-d',$tmp_day_30);
}else{
$tmp_day_30 = $tmp_day_30+24*3600;
$day_arr[] = date('m-d',$tmp_day_30);
}
}
// end x 轴
// y 轴
$db = Yii::app()->db;
//所有的订单
$sql = "select date_format(FROM_UNIXTIME(created),'%m-%d') as created,count(goods_name) as c
from tb_order_info where created>='$day_30'
group by date_format(FROM_UNIXTIME(created),'%m-%d')";
$order = $db->createCommand($sql)->queryAll();
$order_arr = $this->_createY($day_arr,$order);
//各个产品的
$every_arr = array();
$allGoods = Goods::model()->findAll();
foreach($allGoods as $v){
$sql_1 = "select date_format(FROM_UNIXTIME(created),'%m-%d') as created,count(goods_name) as c
from tb_order_info where created>='$day_30' and goods_id='{$v->id}'
group by date_format(FROM_UNIXTIME(created),'%m-%d')";
$every_arr[$v->id] = $this->_createY($day_arr,$db->createCommand($sql_1)->queryAll());
}
//end Y 轴
$this->render('chart',array(
'order_list'=>json_encode($order_arr),
'day_list'=>json_encode($day_arr),
'every_arr'=>$every_arr,
'allGoods'=>$allGoods,
));/**
* 生成Y轴
* @param array $day_arr X 轴 日期
* @param array $order 订单
* @return array
*/
private function _createY($day_arr, $order){
$order_arr = array();
foreach($day_arr as $v){
$order_arr[$v] = 0;
foreach($order as $v2){
if($v==$v2['created']){
$order_arr[$v] = intval($v2['c']);
}
}
}
return array_values($order_arr);
}
按照时间的顺序,排好三十天内每天的下单数量
view的代码:
<?php
/* @var $this OrderInfoController */
/* @var $day_list x轴时间 */
/* @var $order_list Y轴数量 */
/* @var $every_arr 各个产品的Y轴数量 */
/* @var $allGoods 所有产品 */
Yii::app()->clientScript->registerCoreScript('jquery');
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/js/highcharts/highcharts.js');
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/js/highcharts/modules/exporting.js');
?>
<script type="text/javascript">
$(function () {
$('#order').highcharts({
chart: {
type: 'line',
marginRight: 130,
marginBottom: 50
},
title: {
text: '最近30天下单统计',
x: -20 //center
},
subtitle: {
text: '',
x: -20
},
xAxis: {
categories: <?=$day_list?>
},
yAxis: {
title: {
text: '数量'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
valueSuffix: '个'
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 100,
borderWidth: 0
},
series: [
{
name: '所有产品',
data: <?=$order_list?>
},
<?php foreach($allGoods as $v): ?>
{
name: '<?=$v->title?>',
data: <?=json_encode($every_arr[$v->id])?>
},
<?php endforeach; ?>
]
});
});
</script>
<div id="order"></div>
浙公网安备 33010602011771号