Home > PHP

PHP Archive

家計簿作ってみた

  • 2010-06-13 (日)
  • PHP
  • このエントリーを含むはてなブックマーク | はてなブックマーク登録数

ここのところ pChart を試していた理由でもあるのですが、家計簿(みたいなもの)を作ってみました。

以前も家計簿を自作していましたけど、データを CSV から SQLite にして管理の容易さはそのままに扱いやすさが増しました。
SQLite すごい。

■ 入力画面
月額と日額で金額を入力するだけー。

入力画面

■ 統計画面
グラフにするだけー。

統計画面

■ 技術トピック
・ Apache 2.2
・ PHP 5.3
・ SQLite 3
・ Smarty 3
・ pChart 1.27d
on Windows7 64bit

まあ、あんまり厳密なものではなくて、ざっくり把握するには十分かな。
今月は食費が多かったなー、とか。

帰ってきたPHPメモ

  • 2010-06-04 (金)
  • PHP
  • このエントリーを含むはてなブックマーク | はてなブックマーク登録数

久しぶりに PHP を触ったのでどうでもいいメモ。

■ 切り上げ

  1.  <?php
  2.  
  3.  $value = 56789;
  4.  $value = ceil($value / 10000) * 10000;
  5.  var_dump($value); // float(60000)

■ array_shiftの挙動

  1.  <?php
  2.  
  3.  $values = array(
  4.      '00' => 'a',
  5.      '10' => 'b',
  6.      '20' => 'c',
  7.      '30' => 'd',
  8.      '40' => 'e',
  9.  );
  10.  
  11.  // キーが数値っぽかったら振り直される
  12.  array_shift($values);
  13.  
  14.  var_dump($values);
array(4) {
[0]=>
string(1) “b”
[1]=>
string(1) “c”
[2]=>
string(1) “d”
[3]=>
string(1) “e”
}

pChart使ってみた

簡単に見栄えの良いグラフをかけると評判の PHP のグラフライブラリ pChart を試してみました。

pChart | a PHP Charting library

サンプルを見ても結構大変だったので、サンプルを元にコメントを付けたのが以下になります。

■ 確認環境
・ Windows7 64bit
・ PHP5.3.2

■ コード

  1.  <?php
  2.  
  3.  // ライブラリの読み込み
  4.  require("pChart/pData.class");
  5.  require("pChart/pChart.class");
  6.  
  7.  // --------------------------------------
  8.  // データの準備
  9.  // --------------------------------------
  10.  $data = new pData;
  11.  
  12.  $data->AddPoint(array(1,4,3,2,3,3,2,1,0,7,4,3,2,3,3,5,1,0,7),"Serie1");
  13.  $data->AddSerie("Serie1");
  14.  $data->SetSerieName("データその1","Serie1");
  15.  
  16.  $data->AddPoint(array(4,5,6,3,1,4,7,3,1,2,1,4,5,1,2,4,7,1,6),"Serie2");
  17.  $data->AddSerie("Serie2");
  18.  $data->SetSerieName("データその2","Serie2");
  19.  
  20.  // --------------------------------------
  21.  // グラフの初期化
  22.  // --------------------------------------
  23.  $chart = new pChart(700,230);    // グラフの画像サイズ:横,縦
  24.  $chart->setFontProperties("../fonts/meiryo.ttc",10);    // フォント,サイズ
  25.  $chart->setGraphArea(40,30,680,200);    // グラフのキャンバス (x1,y1),(x2,y2)
  26.  $chart->drawGraphArea(252,252,252);    // RGB
  27.  $chart->drawScale($data->GetData(),$data->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2);    // スケール
  28.  $chart->drawGrid(4,TRUE,230,230,230,255);    //グラフ背景のグリッド
  29.  
  30.  // --------------------------------------
  31.  // グラフの描画
  32.  // --------------------------------------
  33.  // 折れ線グラフ
  34.  $chart->drawLineGraph($data->GetData(),$data->GetDataDescription());
  35.  // データのプロット(折れ線グラフの各点)
  36.  $chart->drawPlotGraph($data->GetData(),$data->GetDataDescription(),3,2,255,255,255);    // 外側半径,内側半径,R,G,B
  37.  
  38.  // legendは「凡例」
  39.  $chart->setFontProperties("../fonts/meiryo.ttc",8);
  40.  $chart->drawLegend(45,35,$data->GetDataDescription(),255,255,255);    // 場所, RGB
  41.  // タイトル
  42.  $chart->setFontProperties("../fonts/meiryo.ttc",10);
  43.  $chart->drawTitle(60,22," グラフを書いてみたよ",50,50,50,585);    // 場所, RGB
  44.  
  45.  
  46.  $chart->Render("test.png"); // ファイルに書き出す

■ 作成されたグラフ
pChart_test

※クリックで最大化します。

■ その他
・ UTF-8じゃないとグラフの日本語が文字化けしてしまいました。

・ php.iniのGDを有効にしておく必要があります。

extension=php_gd2.dll

・ バグレポートにあるとおり、そのままだと notice が出てしまいます。

SourceForge.net: pChart: Topic: Bug with pData.class.php

気になる方は notice を無視するか、pData.class:55 あたりに以下の修正を入れると OK です。

  1.  <?php
  2.  // -----------------------------------
  3.  // notice対応
  4.       $this->Data = array();
  5.       //$this->Data                         = "";
  6.  // -----------------------------------

pChartは素晴らしいグラフライブラリなのですが、更新が途絶えて久しいのが気になりますね。
Forumを有効に利用すると良いかもです。

Smarty3 RCを使ってみた

  • 2010-05-30 (日)
  • PHP
  • このエントリーを含むはてなブックマーク | はてなブックマーク登録数

久しぶりに PHP でコードを書こうと思ったら、Smarty3 が RC になってた。
2.xと同じような感覚で使ってみたら、deprecated と言われたのでメモ。
まだマニュアルないのかなー。

  1.  <?php
  2.  
  3.  $view = new Smarty();
  4.  
  5.  // 2.xでの書き方
  6.  //$view->register_modifier("number_format","number_format");
  7.  
  8.  // 3での書き方
  9.  $view->registered_plugins['number_format'];

※ 追記:上のコードはうそうそです。なんかもうダメダメだな・・。

ついでにコードをブログ用に整形するツールを PHP5.3 にそのまま持ってきたら deprecated 言われてる。。
はわわー。

新標準SQLite (オープンソースRDBMSシリーズ)
新標準SQLite (オープンソースRDBMSシリーズ)

titleにsetできない件@CakePHP

実際に CakePHP を使ってみたので、つまづいたところを中心にメモ。

■ title に set できない
Bake した後、適当に見出しを変更しようと思って index.ctp の h2 タグを修正してみました。

  1.  <h2><?php echo $title ?></h2>

Controller で set しておきます。

  1.  <?php
  2.   $this->set(’title‘, ‘CakePHP を使ってみたよ!’);
  3.  ?>

これが表示できない。そんな変数しらないよ。って怒られる。
理由は Controller#set にありました。

  1.  <?php
  2.  if ($name === title) {
  3.      $this->pageTitle = $value;
  4.  } else {
  5.      if ($two === null && is_array($one)) {
  6.          $this->viewVars[Inflector::variable($name)] = $value;
  7.      } else {
  8.          $this->viewVars[$name] = $value;
  9.      }
  10.  }
  11.  ?>

‘title’だけ特別扱いしてる。
‘title’に set すると pageTitle に値を入れてくれるんだねー、って誰が言った?

少なくともマニュアルの「4.5.4 コントローラのメソッド」の set の項には書いていないし、API にも書かれていない。
pageTitle への値の設定はマニュアルにも

$this->pageTitle = “hogehoge”;

となっているし、個人的にもこの set の挙動は不可解。

ホーム > PHP

Search
Feeds
Link
あわせて読みたいブログパーツ
Meta

Return to page top