FusionCharts在PHP开发中的使用

    FusionCharts可以很好地展示统计数据,如柱形图,饼图,折线图,下面记录一下在PHP开发者FusionCharts的简单实用过程。

    第一步:将相应的SWF文件导入web项目,此处用到的是饼图,将charts目录下的MSColumn2D.swf文件引入

    第二步:在html文件中引入FusionCharts.js,并且添加一个div,具体代码如下所示:

   

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="../../js/laydate.js"></script>
<script type="text/javascript" src="xsezb.js"></script>
<script type="text/javascript" src="../../FusionCharts/FusionCharts.js"></script>  
<title>Insert title here</title>
</head>
<body>
<div style="padding-left: 150px;padding-top: 20px">
<label>商品种类:</label>
<select name="type">
<option value="1">日常百货</option>
<option value="2">家用电器</option>
<option value="3">油盐酱醋</option>
<option value="4">蔬菜专场</option>
<option value="5">床上用品</option>
<option value="6">首饰饰品 </option>
<option value="7">饮食天下</option>
</select>
<label>查询时间起:</label><input class="laydate-icon" id="demoq" name="dateq" value="<?php echo date("Y-m-d",strtotime("-8 day"))?>"> 
<label>查询时间止:</label><input class="laydate-icon" id="demoz" name="datez" value="<?php echo date("Y-m-d",strtotime("0 day"));?>">
 <script type="text/javascript">
!function(){
	laydate.skin('molv');//切换皮肤,请查看skins下面皮肤库
	laydate({elem: '#demoq'});//绑定元素
	laydate({elem: '#demoz'});
}();
</script>
<button οnclick="txfx();">查询</button>
</div>
<br>
<hr>
<div id="chartdiv1" align="center"></div>
</body>
</html>
第三步 :给查询按钮加监听,在xsezb.js通过ajax异步重载id 为“chartdiv1”的div,具体代码如下:

function txfx(){
//	var myChart = new FusionCharts("../FusionCharts/Doughnut3D.swf", "myChartId_02", "600", "500");
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	 {
	 alert ("Browser does not support HTTP Request")
	 return
	 }
	 var name_com=document.getElementsByName("comm_name")[0].value;
		var sjq=document.getElementsByName("dateq")[0].value;
		var sjz=document.getElementsByName("datez")[0].value;
		var url="../../PHP/sjtj/xszb.php"
		url=url+"?comm_name="+name_com+"&rqq="+sjq+"&rqz="+sjz;
		url=url+"&sid="+Math.random()
	xmlHttp.onreadystatechange=stateChanged 
	xmlHttp.open("GET",url,true)
	xmlHttp.send(null)
	}

	function stateChanged() 
	{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	 { 
		var myChart = new FusionCharts("../../FusionCharts/MSColumn2D.swf", "chartdiv3", "800", "400");
		myChart.setDataXML(xmlHttp.responseText);
		myChart.render("chartdiv1");
		
	 } 
	}

	function GetXmlHttpObject()
	{
	var xmlHttp=null;
	try
	 {
	 xmlHttp=new XMLHttpRequest();
	 }
	catch (e)
	 {
	 //Internet Explorer
	 try
	  {
	  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	  }
	 catch (e)
	  {
	  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
	 }
	return xmlHttp;
	}
  第四步:在 xszb.php连接数据库并查询出相关数据,并输出字符串

<?php
include '../daconnect.php';
include 'xszbfun.php';
$comm_name=$_GET['comm_name'];
$rqq=$_GET['rqq'];
$rqz=$_GET['rqz'];
$sql="SELECT sell_detail.mc_id,m_commodity.mc_name,count(sell_detail.cid),time FROM `sell_detail`,m_commodity where m_commodity.mc_id=sell_detail.mc_id and sell_detail.time between '$rqq' and '$rqz' and  m_commodity.mc_name LIKE '%$comm_name%' group by sell_detail.mc_id,time";
$sql_comm="SELECT * FROM `m_commodity` where mc_name LIKE '%$comm_name%'";
$str="<chart xAxisName='产品销售情况' yAxisName='销售数量' caption='商品销售情况统计图' baseFontSize='12' shownames='1' showvalues='1' useRoundEdges='1'> <categories> ";
$dataset="";
$dt_start = strtotime($rqq);
$dt_end = strtotime($rqz);
$darry=array();
$i=0;
while ($dt_start<=$dt_end){	
	$lable=date('Y-m-d',$dt_start);
	$str=$str."<category label='$lable'/> ";
	$darry[$i]=$lable;
	$i++;
	$dt_start = strtotime('+1 day',$dt_start);
}
$str=$str."</categories> ";

$list=mysqli_query($con, $sql_comm);
while ($comm_list=mysqli_fetch_row($list)){
// 	$color=00FFFF+FF;
    $color=randColor();
	$dataset=$dataset."<dataset seriesName='$comm_list[1]' color='$color'>";
	    for ($i=0;$i<count($darry);$i++){
	    	$num=datanum($darry[$i],$comm_list[1]);
	    	$dataset=$dataset."<set value='$num'/>";
	    }
	 $dataset=$dataset."</dataset>";
}
echo $str.$dataset."</chart>";
  注释:其中daconnect.php用于连接数据库,xszbfun.php代码如下

<?php
function datanum($time,$name){
	include '../daconnect.php';
	$sql="SELECT count(*) FROM `sell_detail`,m_commodity where m_commodity.mc_id=sell_detail.mc_id and sell_detail.time ='$time'  and m_commodity.mc_name LIKE '$name'";
	$result=mysqli_query($con, $sql);
	if($r=mysqli_fetch_row($result)){
	  return  $r[0];
	}	
}
function randColor(){
	$colors = array();
	for($i = 0;$i<6;$i++){
		$colors[] = dechex(rand(0,15));
	}
	return implode('',$colors);
}
效果 图如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值