PHP のデバッグが楽になる?変数の情報を見やすく表示する dBug

comments(0) | trackback(4)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  http://dbug.ospinto.com/

  リンク先の説明には var_dump() と比較したみたいに書いてあるが,実際は print_r() を見やすくした感じ.

  以前紹介した PHP 用のデバッグライブラリ Tulpes PHP4 Debug Helper (debuglib.php) と基本的には同じ.
  開発時にはもっぱら debuglib.php のお世話になっているが,dBug も使ってみた.

  サポートされている変数の型は

  • 配列
  • クラス/オブジェクト
  • データベースリソース
  • XML リソース
  • イメージリソース

  実際の表示はどうなるかというと

$variable = array(
    "first"=>"1",
    "second",
    "third"=>array(
        "inner third 1",
        "inner third 2"=>"yeah"),
    "fourth");


  このような配列があった場合

new dBug($variable);


  このように dBug を呼び出すと以下のような表示になる.

  dBug

  便利なのは,上記の画像の場合緑色の部分や薄い緑色の部分をクリックすると,以下のようにその部分が隠れること.
  大きな配列を表示していて目的の部分を見失いそうなときには便利.

  dBug

  また,データベースリソースが扱えるのも便利なところ.
  以下は,mysql_query() の戻り値のリソース型を表示したところ.

  dBug

  大量のデータを扱う場合には向かないと思うがちょっとしたデータを表示したい場合は便利.
  ただし,MySQL のデータベースリソースしかテストしていないようで,SQLite のリソース型は表示できなかった.

  また,PEAR::DB を使った場合はというと,

<?php
require_once 'DB.php';
require_once 'dBug.php';

define('DSN', 'mysql://userid:passwd@localhost/test');

$dbh = DB::connect(DSN);
$sql = 'SELECT * FROM empinfo';
$result = $dbh->query($sql);

new dBug($result->result);
?>


  dBug

  きちんと表示できた.


タグ: [PHP][MySQL][Code]

SQLite で auto-increment なフィールドを作成する方法

comments(3) | trackback(2)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  PHP のマニュアルの sqlite_last_insert_rowid の項目を見ていたら

Tip: You can create auto-increment fields in SQLite by declaring them as INTEGER PRIMARY KEY in your table schema.

  つまり,SQLite で auto-increment なフィールドを作りたければ,

INTEGER PRIMARY KEY

  を指定してあげればいいらしい.

  このような記述を見つけたのでテストしてみた.

- SQLite 2.x の場合

$ sqlite test.db
SQLite version 2.8.16
Enter ".help" for instructions
sqlite> CREATE TABLE a (a INTEGER PRIMARY KEY, b TEXT);
sqlite> INSERT INTO a VALUES (NULL, 'test');
sqlite> INSERT INTO a VALUES (NULL, 'test2');
sqlite> INSERT INTO a VALUES (NULL, 'test3');
sqlite> SELECT * FROM a;
a           b
----------  ----------
1           test
2           test2
3           test3

  SQLite 2.8.16 ではうまくいった.
  では,INTEGER PRIMARY KEY に NOT NULL を指定するとどうなるか.

sqlite> CREATE TABLE b (a INTEGER NOT NULL PRIMARY KEY, b TEXT);
sqlite> INSERT INTO b VALUES (NULL, 'test');
sqlite> INSERT INTO b VALUES (NULL, 'test2');
sqlite> INSERT INTO b VALUES (NULL, 'test3');
sqlite> SELECT * FROM b;
a           b
----------  ----------
1           test
2           test2
3           test3

sqlite> INSERT INTO b (b) VALUES ('test4');
sqlite> SELECT * FROM b;
a           b
----------  ----------
1           test
2           test2
3           test3
4           test4

  これもうまくいく.

- SQLite 3.x の場合

$ sqlite3 test.db3
SQLite version 3.1.3
Enter ".help" for instructions
sqlite> CREATE TABLE a (a INTEGER PRIMARY KEY, b TEXT);
sqlite> INSERT INTO a VALUES (NULL, 'test');
sqlite> INSERT INTO a VALUES (NULL, 'test2');
sqlite> INSERT INTO a VALUES (NULL, 'test3');
sqlite> SELECT * FROM a;
a           b
----------  ----------
1           test
2           test2
3           test3

  SQLite 3.1.3 の場合も 2.x と同様にうまくいく.
  INTEGER PRIMARY KEY に NOT NULL を指定するとどうなるか.

sqlite> CREATE TABLE b (a INTEGER NOT NULL PRIMARY KEY, b TEXT);
sqlite> INSERT INTO b VALUES (NULL, 'test');
sqlite> INSERT INTO b VALUES (NULL, 'test2');
sqlite> INSERT INTO b VALUES (NULL, 'test3');
sqlite> SELECT * FROM b;
a           b
----------  ----------
1           test
2           test2
3           test3

sqlite> INSERT INTO b (b) VALUES ('test4');
sqlite> SELECT * FROM b;
a           b
----------  ----------
1           test
2           test2
3           test3
4           test4

  こちらもうまくいく.

- まとめ

INTEGER NOT NULL PRIMARY KEY

  でも

INTEGER PRIMARY KEY

  どちらでも OK.

- sqlite_last_insert_rowid
  http://www.php.net/sqlite_last_insert_rowid

- 追記
  2.8.16 の場合を修正.NOT NULL を指定してもうまくいった.

タグ: [SQLite][PHP][MySQL]

PHP Phrasebook,Essential Code and Commands (Developer's Library)

comments(0) | trackback(0)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  0672328178
  amazon.co.jp 詳細ページへ
  Christian Wenz (著)
  Sams
  ISBN: 0672328178
  2005/09/02
  1,866 円

タグ: [Books][PHP]

Ajax と PHP を使ったチャレンジ & レスポンス方式のログイン認証

comments(0) | trackback(0)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  http://www.jamesdam.com/ajax_login/login.html

  何もログイン認証まで Ajax を使わなくてもと個人的には思っているのだけど,
  これは,チャレンジ & レスポンスの部分でうまく Ajax を使っている.

  チャレンジコードをサーバから Ajax で取得してパスワードとの md5 ハッシュ値をサーバに送ることによって
  認証をしている.このため,パスワードそのものがネットワーク上に流れない仕組み.

- via: phpspot開発日誌
  http://phpspot.org/blog/archives/2006/02/ajaxphp_1.html

タグ: [PHP][JavaScript][Ajax][Security]

PHP 用 YAML パーサ spyc

comments(0) | trackback(0)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  http://spyc.sourceforge.net/

  RoR 風味な PHP5 フレームワーク symfony でも採用されていて実績はありそう.
  YAML の読み込みと書き込みをサポート.よさげ.

タグ: [PHP]

Ajax と PHP を使ったチャット Shoutbox

comments(0) | trackback(0)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  http://www.codepost.org/view/96

  これは面白い.
  入室,退室,リロードなどが全部 Ajax で実装されている.
  DB には MySQL を使っている.

- via: phpspot開発日誌
  http://phpspot.org/blog/archives/2006/02/ajaxphp_shoutbo.html

タグ: [PHP][Ajax][JavaScript][MySQL]

Michael J. Radwin による Yahoo! でカスタマイズされた Apache や PHP の資料

comments(0) | trackback(0)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  http://public.yahoo.com/~radwin/

  Yahoo! でカスタマイズされたアプリケーションについての資料.
  PDF や PPT などでダウンロードできる.

  まとめは以下のリンクがおすすめ.PHP は Apache ほどカスタマイズされていない印象を受ける.

- Yahoo でカスタマイズされた apache のまとめ
  http://blog.bz2.jp/archives/2006/01/yahoo_apache.html

- Yahoo でカスタマイズされた PHP のまとめ
  http://blog.bz2.jp/archives/2006/01/yahoo_php.html

タグ: [PHP]

CAPTCHA (文字を歪ませた画像) を生成する PEAR パッケージ Text_CAPTCHA

comments(0) | trackback(0)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  http://pear.php.net/package/Text_CAPTCHA

  オンラインのサービスなんかでよく見かける

この画像に表示されている文字を入力してください

  の画像を生成する PEAR パッケージ

  CAPTCHA

  このような画像を生成することが出来る.

  もちろん生成するだけでなく,入力した文字と画像に表示された文字が一致しているかも確認できる.
  仕組みはセッションを使っている.

  画像の背景色や文字の色などを変える方法は,パッケージをいじらなければいけないみたいなのでいまいち.
  alpha バージョンなので今後に期待しよう

タグ: [PHP]

フリーで読める PHP,Perl,XML,Web Services,LIPS,.NET などのオンライン書籍

comments(0) | trackback(0)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  http://apress.com/free/

  • A Programmer's Introduction to PHP 4.0
  • Writing Perl Modules for CPAN
  • Google, Amazon, and Beyond: Creating and Consuming Web Services

  などが PDF で公開されている.

タグ: [PHP][Perl]

アップロードの進捗状況をプログレスバーでみることができる Mega Upload Progress Bar

comments(0) | trackback(0)

はてなブックマークに追加 はてなブックマーク数 del.icio.us に追加 livedoor クリップに追加 livedoor クリップ数 Yahoo!ブックマークに追加

  http://www.raditha.com/php/upload.php

  PHP,Perl,JSP から使うことができるファイル・アップローダ.
  ライセンスは Mozilla Public License 1.0 (MPL).

  Firefox で Tab Mix Plus などでウィンドウを常にタブで表示させている場合は挙動がおかしい.
  あと,インストールが面倒くさい.

- 進捗状況
  Mega Upload Progress Bar

- アップロード完了
  Mega Upload Progress Bar

タグ: [PHP][Perl][JavaScript]