pear

  • 以前、Mail_Queueを使ってメールを送る時、本文内の特定の文字から文字化けすることがあると書いたが、同様にメールのタイトル(Subject)が文字化けすることがある。

    本文同様、きちんとコード変換して渡しているのに文字化けする場合、Mail_Queue のBody.phpが原因になっていることがある。

    具体的には、Mail/Queue/Body.phpの284行目あたりにある(前回のちょっと上)
    function getHeaders()
    ここのstripslashesを外す。

    $tmp_headers[$key] = stripslashes($value);

    となっている行を

    $tmp_headers[$key] = $value;

    としてやるだけでいい。

    タイトルの文字化けで悩んだ時はお試しを。

  • Mail_Queueで文字化けするとき

    ·

    Mail_Queueを使ってメールを送る時、特定の文字から文字化けすることがある。

    きちんとコード変換して渡しているのに文字化けする場合、Mail_Queue のBody.phpが原因になっていることがある。

    具体的には、Mail/Queue/Body.phpの300行目あたりにある
    function getBody()
    ここのstripslashesを外す。

    return stripslashes($this->body);

    となっている行を

    return $this->body;

    としてやるだけでいい。

    文字化けで悩んだ時はお試しを。

  • qolplus.gif

    Digital Gateで運営している、車椅子やバギー、福祉製品を選ぶためのクチコミ情報&製品比較サイト『QOL+(Quality of Life Plus)』では「快適性」「耐久性」「価格」「操作性」「デザイン」の5つの項目のクチコミ評価をグラフで表示させている。

    使用しているライブラリは以前紹介した『PHP/SWF Charts』

    設定は折れ線グラフや棒グラフと同様

    $chart[‘chart_type’] = “polar”;

    としてやるだけでいい。

  • データセットの方法

    $Dataset =& Image_Graph::factory('random', array(31, 0, 10, false));

    ランダム発生

    $img_text = mb_convert_encoding('とあるサイト',"UTF-8","euc");
    $Dataset->setName($img_text);

    凡例

    $Line =& Image_Graph::factory('Image_Graph_Line_Solid', "red");

    線グラフの線オブジェクトを生成(赤い実線)

    Line->setThickness(1);

    線の太さ1ピクセル

    $Marker =& Image_Graph::factory('Image_Graph_Marker_Array');

    マーカーオブジェクト(線上の印)

    $BoxMarker =& Image_Graph::factory('Image_Graph_Marker_Box');

    マーカー生成

    $BoxMarker->setSize(3);

    マーカー/サイズ

    $BoxMarker->setLineColor("red");

    マーカー/枠色

    $BoxMarker->setFillColor("red");

    マーカー/中色

    $Marker->add($BoxMarker);
    $Plot =& $Plotarea->addNew('line', array(&$Dataset));

    エリアにラインとして描画

    $Plot->setLineStyle($Line);

    線のスタイルは上の設定($Line)

    $Plot->setMarker($Marker);

    $Markerオブジェクトをセット。

    別の方法

    $Dataset2 =& Image_Graph::factory('dataset');
    $Dataset2->addPoint('1', 3);
    $Dataset2->addPoint('2', 10);
    $Dataset2->addPoint('3', 12);
    $Dataset2->addPoint('4', 10);
    $Dataset2->addPoint('5', 15);
    $Dataset2->addPoint('6', 16);
    $Dataset2->addPoint('7', 20);
    $Dataset2->addPoint('8', 15);
    $Dataset2->addPoint('9', 9);
    $Dataset2->addPoint('10', 16);

    データを作成

    $img_text = mb_convert_encoding('別のサイト',"UTF-8","euc");
    $Dataset2->setName($img_text);

    凡例

    $Line2 =& Image_Graph::factory('Image_Graph_Line_Solid', "blue");

    線グラフの線オブジェクトを生成(青い実線)

    $Line2->setThickness(1);

    線の太さ1ピクセル

    $Plot2 =& $Plotarea->addNew('line', array(&$Dataset2));

    エリアにラインとして描画

    $Plot2->setLineStyle($Line2);

     

  • PEARのライブラリを使うと折れ線グラフも簡単に作ることができる。

    使い方は簡単。

    require_once 'Image/Graph.php';

    ライブラリ読み込み

    $w = 600;
    $h = 300;

    画像サイズを設定

    $Graph =& Image_Graph::factory('graph', array($w, $h));

    これがキャンバスになる

    ■日本語フォントを使いたい時は、フリーの日本語フォントをサーバー上に置いて指定する。

    $Font =& $Graph->addNew('font', '../../font/ipam.ttf');

    フォントオブジェクトを作成

    $Font->setSize(10);

    フォントサイズも指定できる(10ピクセル)

    $Graph->setFont($Font);

    キャンバスにフォントを適用

    ■タイトルとグラフを作成するエリアを設定

    $img_text = mb_convert_encoding('日別推移',"UTF-8","euc");

    日本語を使う時はUTF-8にするのがポイント

    コンバートしてあげればいい

    $Graph->add(
        Image_Graph::vertical(
            Image_Graph::factory('title', array($img_text, 12)),
            タイトルエリアは上グラフ関連エリア下
            文字サイズ12ピクセル
            Image_Graph::vertical(
    
            $Plotarea = Image_Graph::factory('plotarea'),
            グラフエリアは上
    
            $Legend = Image_Graph::factory('legend'),
            凡例エリアは下
    
             90
             グラフの占める縦のパーセンテージ
            ),
            20
            タイトルが占める縦のパーセンテージ
        )
    );
    $Plotarea->setPadding(array("top"=>1,"right"=>2,"bottom"=>2,"left"=>2));

    グラフ描画エリアのpadding設定はこんな感じ

    $Legend->setPlotarea($Plotarea);

    データと凡例の関係付け

    $Legend->setPadding(0);

    Legend の padding

    $Plotarea->setFillColor('gray@0.05');

    グラフエリアの背景色/透明度

    $GridY =& $Plotarea->addNew('line_grid', null, IMAGE_GRAPH_AXIS_Y);
    $GridY->setLineColor('gray@0.1');
    $GridX =& $Plotarea->addNew('bar_grid', null, IMAGE_GRAPH_AXIS_X);
    $GridX->setLineColor('gray@0.1');

    升目のグリッド指定

    サンプル

    http://digital-gate.com/graph/image_graph.php

  • file_put_contentsをPHP4環境で使う

    ·

    PHP4のサポートは既に終了しており、全面的にPHP5に移項することが望ましいが、
    環境によってはPHP4のままの場所も存在する。

    php5になりfile_put_contentsという関数が用意され、
    ファイルの保存にとても便利になった。

    この関数をPHP4の環境下で使いたい場合、
    PEAR のPHP/Compat.phpライブラリを使用すると簡単。

    具体的にはPHP/Compat.phpをセットし、読み込むだけでいい。

    こんな感じ。

    require_once ‘PHP/Compat.php’;
    PHP_Compat::loadFunction(‘file_put_contents’);

  • 行数の取得
    mysql_num_rows($rst)

    $rst->numRows()

    カラム数の取得
    mysql_num_fields($rst)

    $rst->numCols()

  • quoteSmartが削除されていることはいろいろなサイトで紹介されているが、

    autoCommit()メソッドも削除されているので注意。
    トランザクションを利用するときは「begenTransaction()」を利用する。
    (要use_transactionsオプション)

  • DBからMDB2へ移行するとき

    ·

    一件のデータを取得する場合

    $row = $db->getRow($sql);

    $row = $db->queryRow($sql);

  • 調べてみると、多くのサイトで、http://go-pear.org/からgo-pear.phpをダウンロードして使うように書いてあるが、実際にアクセスしてみるとドメインが売りに出ているようで見つからない。

    さらに探していると、以下のURLで手にいれることが分かった。

    http://pear.php.net/go-pear

    このURLで表示されたものをgo-pear.phpの名前で保存する。
    その際、漢字コードをUTF8、改行コードをLFにすること。

    適当なフォルダを作成し、(例:install)FTPでこのファイルをアップ。
    インストール用のフォルダを作成し、(例:go_pear)パーミッションを777にする。

    ブラウザでアクセス
    http://www.hoge.co.jp/install/go-pear.php