PHP Arrayを簡単にグラフに

amchartsの続きですがw

http://dev.neoinspire.net/archives/58
で紹介した amcharts を結構使いまくっていて、
ついでにと簡単に使えるクラスを作ったので上げときます。

Class.CreateGraph.php

追記:200711/07
改良してる方がいらっしゃったので一緒に載せておきます
http://d.hatena.ne.jp/pirokyun/20071104/1194161217#c

使い方

*PHP部分
1:amchartsをダウンロードしてアップする。
2:Class.CreateGraph.phpをインクルードする。
3:グラフ用の配列を作る
 ->キー値がそのまま属性に、データがそのままデータになります。
 例:$array[‘japan’]=”5″
   $array[‘america’]=”5″
  なら japan が5(50%) america が5(50%)でグラフを作ります。
4:new して終わり。

以下例:

$ar[‘test1’] = 1;
$ar[‘test2’] = 2;
$ar[‘test3’] = 5;
$ar[‘test4’] = 10;
$graph = new CreateGraph($ar);
//test1=5.56% test2=11.11% test3=27.78% test4=55.56% となります。

*HTML部分
amcharts をインクルード

<script type=’text/javascript’ src=’./ampie/swfobject.js’></script>

以上

その他

必須な引数は第一引数のグラフ作成用・データのみです。

後はこんなかんじ
var $filename; //データXMLのファイル名を指定
var $foldername; //データXMLの入ってるフォルダ名を指定
var $width; //グラフの幅を指定
var $height; //グラフの高さを指定
var $setting; //セッティングファイルの名前を指定

全部やるとこんなかんじ。

$graph = new CreateGraph($array,”./ampie/”,”array.xml”,”400″,”300″,”./ampie/ampie_settings.xml”);

あと注意点としては元のflashファイルがUTF-8らしくて
UTF-8以外では動きません。
なのでPHPファイルもUTF-8で作ってください。

ファイルはこちら
Class.CreateGraph.php

もしくは以下コピペしてUTF-8で保存(全角スペースになってるので注意)

Class CreateGraph{
 
 var $array;   //Graph Data
 var $filename;  //Xml File Name
 var $foldername; //XML Folder Name
 var $width;   //Graph Width
 var $height;  //Graph height
 var $setting;  //Graph Setting File

 /*
  Construct
 */
 function CreateGraph($array,$foldername=’./ampie/’,$filename=’array.xml’,$width=”400″,$height=”300″,$setting=”./ampie/ampie_settings.xml”){
  $this->array = $array;
  $this->filename = $filename;
  $this->foldername = $foldername;
  $this->width = $width;
  $this->height = $height;
  $this->setting = $setting;
  
  $this->_ViewGraph();
  $this->_PrintOut();
 }
 
 /*
  Create Xml Data
 */
 function _ViewGraph(){
  $xml = ‘‘;
   foreach($this->array as $key=>$value){
    $xml.= ‘‘.$value.’‘;
   }
  $xml .= ‘
‘;
  $write = $this->_file_put_contents($this->foldername.$this->filename,$xml);
 }
 
 /*
  Print html&javascript codes
 */
 function _PrintOut(){
  print ”
   <script type=’text/javascript’>
   window.onload=function(){
    var so = new SWFObject(‘”.$this->foldername.”ampie.swf’, ‘ampie’, ‘”.$this->width.”‘, ‘”.$this->height.”‘, ‘8’);
    so.addVariable(‘path’, ‘ampie/’);
    so.addVariable(‘settings_file’, escape(‘”.$this->setting.”‘));
    so.addVariable(‘data_file’, escape(‘”.$this->foldername.$this->filename.”‘));
    so.write(‘”.$this->filename.”‘);
   }
   </script>
   <div id='”.$this->filename.”‘>
    <strong>You need to upgrade your Flash Player</strong>
   </div>
  ”;
 }

 /*
  Create Xml Files
 */
 function _file_put_contents($fileName, $data) {
  $res = fopen($fileName, ‘w+b’);
  if($res){
   $write = fwrite($res, $data);
   if($write === false){
    return false;
   }else{
    return $write;
   }
  }
 }
}