PHP・MySQL

以前、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 の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

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');


PHP/SWF Charts http://www.maani.us/charts/index.php

PHP/SWF ChartsはFLASHでグラフを出力するライブラリ
視覚的に見栄えのするグラフが簡単に作れる。
スクリプトはPHPを使用。

上記サイトからライブラリをダウンロード
charts.zip他3種類から好きなものを選択。

解凍するとcharts Folderというフォルダができる。
この中にある
charts.swf
charts.php
charts_library(フォルダ)
が必要なので、charts Folderを「charts」などに変えてそのままサーバーにアップするといい。



行数の取得
mysql_num_rows($rst)

$rst->numRows()

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

$rst->numCols()
テーブル内で1つのカラムに対しての最大値や最小値が欲しい場合、
max(カラム名)やmin(カラム名)として得ることは多い。

では、1つのレコードに対し、カラム1,カラム3,カラム3の中の最大値が欲しい場合はどうするか。

この場合、3つの値を取得してから比較することもできるが、
GREATESTを使うとそのまま最大値を得ることができる。

ちなみに、最小値はLEASTで得られる。
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

PHPでプログラムを書いたり運用している時、エラー表示は便利なものだが、デバッグのたびにエラー表示を書いたりコメントアウトするのは煩雑で何よりミスの原因にもなる。
そこでお薦めするのが、PEARパッケージのLogを使う方法。

まずは以下から入手
http://pear.php.net/package/Log/download

ログの出力先として、ブラウザ、ファイル、データベースと選べるが、ここではデータベースへの方法を紹介。

テーブルの作成
CREATE TABLE dg_log_table (
id INT NOT NULL,
logtime TIMESTAMP NOT NULL,
ident CHAR(16) NOT NULL,
priority INT NOT NULL,
message VARCHAR(200),
);
idを主キーとする


任意のURLで公開されているRSSを、サイトに表示させる。
もちろん、自分のサイトで発信しているRSSを表示させることも可能。

RSSの取得にはlastRSSを使うのが簡単。
http://lastrss.oslab.net/

設置は簡単。キャッシュ用のディレクトリを作成することくらい。

次に、取得したデータを表示させるPHPを作成。

lastRSS.phpを読み込み
include 'lastRSS.php';

設定(キャッシュ等)
$rss = new lastRSS;
$rss->cache_dir = './cache';
$rss->cache_time = 3600;

$rs = $rss->get($url);
↑$urlに取得したいRSSのアドレスを渡してやれば、$rsにRSSの配列が取得できる。


動作サンプル



MacOSX server を使っていて、いままで問題なく使えていたのにソフトウェアアップデートをかけた途端、GDが使えなくなったら、PHPをダウンロードしてきて、改めてコンパイル&インストールし直すといい。

http://www.php.net/downloads.php
ここからPHPの最新版をダウンロード。

※現時点でのPHP4の最新版はphp-4.4.7.tar.gz

サーバーに置いたら
ターミナルから

tar zxvf php-4.4.7.tar.gz

参考までにconfigureは、こんな感じ。

./configure  --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --with-apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --enable-trans-sid --with-xml --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-dbx --enable-sockets --with-iodbc=/usr --with-curl=/usr --with-config-file-path=/etc --sysconfdir=/private/etc --with-mysql=/usr --with-mysql-sock=/var/mysql/mysql.sock --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-pear

問題無く進めたら

make && sudo make install

でインストール。

終わったら、apacheを再起動。

apachectl graceful
Apple Store(Japan)

このアーカイブについて

このページには、過去に書かれた記事のうちPHP・MySQLカテゴリに属しているものが含まれています。

前のカテゴリはHTML・XMLです。

次のカテゴリはアイコンです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

NEW!!

RECOMMEND