zoukankan      html  css  js  c++  java
  • PHP-Open Flash Chart报表生成

    下载:

      http://www.cnblogs.com/huangcong/archive/2013/01/27/2878650.html

    安装:

      解压ZIP包, 将open-flash-chart.swf以及swfobject.js三个文件拷贝到您的服务器根目录下, 当然你也可以自由放置这三个文件的位置, 但是一定要确保文件路径的正确调用。

    使用:

      1.使用静态数据:

       此处index.html、open-flash-chart.swf、swfobject.js以及data.txt在同一文件加下, 自己制定也可以;

      以下为index.html内容:

    1 <div id="chart"></div>
    2 
    3 <script type="text/javascript" src="swfobject.js"></script>
    4 <script type="text/javascript">
    5     var flashvars = {"data-file":"data.txt"}; //这里是数据源 静态数据
    6     var params = {menu: "false",scale: "noScale",wmode:"opaque"}; 
    7     swfobject.embedSWF("open-flash-chart.swf", "chart", "550px", "350px", "9.0.0","expressInstall.swf", flashvars,params); 
    8 </script>

      注意: flashvars是设置的数据源, 该数据位JOSN格式数据, 本例提供了一个txt的JOSN数据源, 接下来会用PHP来生成JOSN数据, 然后用OFC调用渲染出图表的案例。
      params是设置FLASH输出的菜单、比例、窗口模式等属性。 最后载入flash文件, 注意“chart”是页面中的一个HTML元素的ID值, 就是用这个ID来装入图表。接着就是设置元素的大小, 很简单吧。

      以下为data.txt内容:

     1 {
     2     "title": {
     3         "text": "Many data lines",
     4         "style": "{font-size: 20px; color:#0000ff; font-family: Verdana; text-align: center;}"
     5     },
     6 
     7     "y_legend":{
     8         "text": "Open Flash Chart",
     9         "style": "{color: #736AFF; font-size: 12px;}"
    10     },
    11 
    12     "elements":[
    13         {
    14             "type": "bar_glass",
    15             "alpha": 0.5,
    16             "colour": "#9933CC",
    17             "text--": "Page views",
    18             "font-size--": 10,
    19             "values": [9,6,7,9,5,{"top":7,"colour":"#FF0000", "tip": "Mooo#val#"},6,9,7]
    20         }
    21     ],
    22 
    23     "x_axis":{
    24         "stroke": 1,
    25         "tick_height": 10,
    26         "colour": "#d000d0",
    27         "grid_colour": "#00ff00",
    28         "labels": {
    29             "labels": ["January","February","March","April","May","June","July","August","Spetember"]
    30         }
    31     },
    32 
    33     "y_axis":{
    34         "stroke": 4,
    35         "tick_length": 3,
    36         "colour": "#d000d0",
    37         "grid_colour": "#00ff00",
    38         "offset": 0,
    39         "max": 20
    40     },
    41 
    42     "tooltip": {
    43         "text": "My Tipval=#val#, top=#top#"
    44     }
    45 }

      结果如图:

      

      2.使用动态数据

      此处index.html、open-flash-chart.swf、swfobject.js以及apra_pie.php在同一文件加下, 自己制定也可以;

      index.html内容

    1 <div id="chart"></div>
    2 
    3 <script type="text/javascript" src="js/swfobject.js"></script> 
    4 <script type="text/javascript"> 
    5     var flashvars = {"data-file":"area_pie.php"}; //这里是数据源  
    6     var params = {menu: "false",scale: "noScale",wmode:"opaque"};  
    7     swfobject.embedSWF("open-flash-chart.swf", "chart", "550px", "350px",  "9.0.0","expressInstall.swf", flashvars,params);  
    8 </script> 

      注意:与上一张不同的是我们使用的数据源文件area_pie.php, 该文件就是用来将MYSQL数据生成JSON数据的。

      准备OFC库

      我们知道OFC提供了各种接口程序, 包括PHP/PHP5、Pear、Python、Java、Dotnet。
      我们将从官网上下载的压缩包文件解压后发现有一个名为php-ofc-library文件夹, 这里放的就是PHP接口的所有库文件, 不用管里面的文件, 只需把整个文件夹复制到你的项目的根目录下并改名为ofc。

      读取MySQL生成JSON数据

      这是关键部分, 调用mysql数据库接口的部分代码大家可以自己写下, 限于篇幅, 本文就没有将其附上。

      area_pie.php代码如下:

      

     1 include_once ('global.php');  //调用数据库 
     2 include_once ('ofc/open-flash-chart.php'); //调用OFC库文件 
     3 //设置图表标题 
     4 $title = new title( '各区域单位场所数量分布图'.date('Y-m-d') ); 
     5 $title->set_style("font-size:12px; font-weight:bold;"); 
     6 $pie = new pie(); 
     7 $pie->set_alpha(0.6); 
     8 $pie->set_start_angle( 32 ); 
     9 $pie->add_animation( new pie_fade() ); 
    10 $pie->set_tooltip( '#val# of #total##percent# of 100%' ); 
    11 $pie->set_colours( array('#1C9E05','#FF368D','#0099cc','#d853ce','#ff7400','#006e2e', 
    12 '#d15600','#4096ee','#c79810') ); 
    13 //读取各区域信息 
    14 $sql="select sum(total) as num from ".$prefix."district"; 
    15 $query=$db->query($sql); 
    16 $rs=$db->fetch_array($query); 
    17 $t=$rs[num]; 
    18 $sql="select name,total from ".$prefix."district"; 
    19 $query=$db->query($sql); 
    20 while($row=$db->fetch_array($query)){ 
    21     $total=$row[total]; 
    22     if(!empty($t)){ 
    23         $v=round($total/$t,4)*100; 
    24     }else{ 
    25         $v=0; 
    26     } 
    27     $dis[]=array("name"=>$row[name],"total"=>$row[total],"v"=>$v); 
    28 } 
    29 $len_dis=count($dis); 
    30 for($i=0;$i<$len_dis;$i++){ 
    31     $dis_value[]=new pie_value(intval($dis[$i][total]),$dis[$i][name]."(".$dis[$i][v]."%)"); 
    32 } 
    33 $pie->set_values($dis_value); 
    34  
    35 $chart = new open_flash_chart(); 
    36 $chart->set_title( $title ); 
    37 $chart->add_element( $pie ); 
    38 $chart->x_axis = null; 
    39 echo $chart->toPrettyString(); //生成json数据

      参考http://www.helloweba.com/view-blog-40.html

  • 相关阅读:
    Supported orientations has no common orientation with the application, and [UIAlertController shouldAutorotate] is returning YES
    软件工程学习进度第一周暨暑期学习进度之第一周汇总
    软件分享大会之Bonny使用感想
    ios开发的技巧
    Xcode修改项目名称
    ios--NavigationViewController跳转、返回传值
    数组的重复排序
    判断时间差
    比较全的表单提交页面对电话邮箱判断
    coreData的使用
  • 原文地址:https://www.cnblogs.com/JohnABC/p/3365692.html
Copyright © 2011-2022 走看看