Monthly Archives: 7月 2008 - Page 2

ZendでSQLのログを出力

ZendでSQLのログを出力する | mono-blog

Zend_Dbにprofilerが付いているので、それを使って最後に使ったクエリーをログに書き出す、といったことをやられています。
これは便利ですね。

Profilerもあったのは覚えてても、こういう具体的な使い方は思いつかない・・(^_^;)
でも、これでもう忘れません!たぶん!活用します!

WordPress の PDO 化と SQLite 対応

鵺的:想空間 » Blog Archive » WordPress の PDO 化と SQLite 対応(挑戦編)

WordPressでSQLite を使用できないかと挑戦されています。
SQLiteに日付型が無いために、ちょっと苦労しそうです。。SQLiteは数字と文字という扱いしかないですよね。PHPさえ入っていれば使えるというのは利点なんですが。。

Zend FrameworkでFlexigrid習作

Flexigrid

Jqueryベースのテーブル修飾script、FlexigridをZend Frameworkで使ってみよう、という習作です。

マイコミの記事を参考にしながら作ってみました。

テーブルデータは
id,title,description,date
のありがちな感じで。

とりあえずは、テンプレート。Smartyで作ってありますが、HTMLそのままですから、他のテンプレートでも問題ないでしょう。

[smarty]










[/smarty]

確かjqueryは$(){~だけで、ready()の効果があるような気がしたけど、とりえあず。
Flexigrid本体は、ダウンロード>解凍したものを、ルート/js/flexigrid/の中に直接放り込んであります。今回はjqueryだけ、別途用意したものを読み込んでいますので、pathにご注意ください。
このテンプレートを/flexigrid/index.tplとして保存。

次は、コントローラ部。
上記、ajax部で、/flexigrid/json/を呼んでいますので、jsonActionを内包したコントローラとなります。

[php]
class FlexigridController extends Zend_Controller_Action
{
public function indexAction()
{
}

public function jsonAction()
{
// 出力にテンプレートを使わないので、NoRender。
$this->_helper->viewRenderer->setNoRender();

// postリクエスト以外には応対しない。
if (!$this->_request->isPost()) {
return;
}

// リクエストのフィルタリング。
$f = new Zend_Filter_StripTags();

$qtype = $f->filter($this->_request->getPost(‘qtype’));
$query = $f->filter($this->_request->getPost(‘query’));
$page = $f->filter($this->_request->getPost(‘page’,1));
$rp = $f->filter($this->_request->getPost(‘rp’,10));
$sortname = $f->filter($this->_request->getPost(‘sortname’, ‘id’));
$sortorder = $f->filter($this->_request->getPost(‘sortorder’, ‘desc’));

// 該当テーブルの読込。
$table = new Table();

// レコードの総数を求める。(もっと良い方法ありませんか?(^_^;)
// いつもはテーブルクラス側にcount()メソッドを作ってsqlを走らせてます)
$count = $table->select()->from($table, ‘count(id)’)
->query()->fetchColumn();

// クエリ。
$select = $table->select();
$select->limitPage($page, $rp)->order(“$sortname DESC”);
if ($qtype && $query) {
$select->where($qtype . ‘ like ?’, $query);
}
$rows = $select->query()->fetchAll();

// jsonの作成。
$json = array
(
‘page’ => (int) $page,
‘total’ => (int) $count,
);
foreach ($rows as $row) {
$tmp = array();
$tmp[] = $row['id'];
$tmp[] = $row['title'];
$tmp[] = $row['description'];
$tmp[] = $row['date'];
$json['rows'][] = array(‘cell’ => $tmp);
}
echo json_encode($json);
}
}
[/php]

最後、array $jsonに放り込んでいるところは、array_valuesでもっとスマートにいくんじゃないかな。
前提条件として、Zend_Db_Table_Abstractを継承した、`table`クラスがあるとしています。
こんな感じで

[php]
class Table Extends Zend_Db_Table_Abstract
{
}
[/php]

特に何もいりませんが。

無事、動作しましたでしょうか?
prototypeよりjqueryという方は、flexigrid、良いと思います。

インタラクティブなコマンドラインプログラム

【PHP TIPS】 91. インタラクティブなコマンドラインプログラム:ITpro

PHPで対話的なプログラムを組む時の例です。
いつか使う時のメモ。
しかしexecなどで済ますことは出来ないんですかね。

「Perlメモ」の排他制御ロジックをPHPに移植

「Perlメモ」の排他制御ロジックをPHPに移植してみた – 岩本隆史の日記帳

おお、これは。

PHPにおける排他制御のベストプラクティスが分からなかったので、定評のありそうな「Perlメモ」の「排他制御(ファイルロック)をする」を移植してみました。

Perlを使ってた時はお世話になりました。
Amazonへのアクセスを待つ場合は、単純にctimeを見るだけに留めていましたが。。

アプリを作りだす前に

第34回PHP勉強会資料 アプリを作りだす前に – docune(ドキュン)
第34回PHP勉強会で発表された「アプリを作りだす前に」の資料なのですが、
svn co & rsync で本番環境にあげる、とあります。
テスト環境にcoして、rsyncで本番環境に、ということなのですね。
テスト環境を用意できれば、確かに「動いている」ものだけを確実にあげることができますね。
私はよく、本番環境にもcoしてしまいますので。。。
動かないリビジョンになっていたら怖いですよね。

高機能グラフ作成ソフト – JpGraph

高機能なグラフ作成ソフト、JpGraph

高機能グラフ作成ソフト – JpGraph | アシアル株式会社

こいつは何だかすごそうだ。

[php]
include ("../jpgraph.php");
include ("../jpgraph_bar.php");

$datay=array(12,8,19,3,10,5);

// Create the graph. These two calls are always required
$graph = new Graph(300,200,"auto");
$graph->SetScale(“textlin”);

// Add a drop shadow
$graph->SetShadow();

// Adjust the margin a bit to make more room for titles
$graph->img->SetMargin(40,30,20,40);

// Create a bar pot
$bplot = new BarPlot($datay);
$graph->Add($bplot);

// Setup the titles
$graph->title->Set(“A simple bar graph”);
$graph->xaxis->title->Set(“X-title”);
$graph->yaxis->title->Set(“Y-title”);

$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

// Display the graph
$graph->Stroke();
?>
[/php]

簡単な棒グラフなら、こんな感じみたいです。よさそう!

mb_encode_mimeheaderの検証

mb_encode_mimeheaderの都市伝説を検証する – CPA-LABテクニカル
mb_encode_mimeheaderを詳しく検証し、正しいバッドノウハウ(^_^;) を解明されています。
素晴らしくわかりやすい記事ですね。参考になります!

メールフォームにCaptchaを設置

メールフォームにCaptchaを導入。 – NOBODY:PLACE – MUTTER
SPAM対策で、メールフォームにCaptchaを導入されています。
Captchaもお手軽に使えるようになりましたね。

少年よ大志を抱け: PHP: use_trans_sidの注意点

少年よ大志を抱け: PHP: use_trans_sidの注意点
記事中で、session.use_trans_sidをonにした際、どのようなリンクだとセッションIDが付与されるか試しておられます。
中でも、

foo.php?param:abc=1というリンクでも付与されない。。。パラメータ名にコロンてあまりない気がするけど、使わないように考えておく必要はある。

というのは、非常に興味深いですね。確かに、パラメータ名でコロンはあまり使わないでしょうが。。
知らなかったらハマりそうです。