Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();

  • カテゴリー

  • Ranking

  • PHP Arrayを簡単にグラフに

    amchartsの続きですがw

    http://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;
       }
      }
     }
    }


    Leave a Reply

    2008/07/05 03:31:32