PHP TOP】【PGSQL TOP
とりあえず拡張してみよう.
継承のしかたはわかったんで実際に拡張してみよう.

大まかな考え方の順序
とりあえず基礎クラスでやった処理以外でよく使いそうな処理を追加することを考えます.
クエリーを実行したら・・当然結果が出ますよね.
ということで以下のようなことが思い浮かぶかと思います.
 
  1. 結果レコードを取り出せるようにしてみよう.
  2. 似たような処理だろうしフィールド名も取り出せるようにしとこう.
 
そこで,まずこの2処理を追加することに決定.
 
”これらの処理,基本的なものなので基礎クラスに組み込んでもいいんじゃない?”
 
とか思われるかもしれませんが,レコードの取り出しとかっていうのは人それぞれやり方に好みがあるかと思われます.
万人がやる処理ではないなら基礎として組み込まない方があとからメンテしやすかったりしますので思い切って分離させちゃいます.その方がクラス作成の練習にもなるし・・.

       ・
       ・
       ・

で,出来上がったのがコレです.
きちんとした説明は・・やっぱり挫折です^^;

現段階ではスクリプトを動かしていませんので実行できるかどうかは保障できません.
最終的にアプリケーションが出来上がった時点でのソースが正しいものになるはずです.

利用した関数
pg_field_name($this -> queryresult,$this -> currentFieldnum); フィールド名を取得します.
第一引数には結果ID
第二引数には先頭からの位置(0から)
戻り値はフィールド名です.
※PHP4.2.0より前では”pg_fieldname()”という関数名でした.
 
pg_fetch_row($this -> queryresult, $this -> currentRownum) レコードを取得します.
第一引数には結果ID
第二引数にはレコード番号(0から)
レコードを配列で返します.

※第二引数は省略可で,省略した場合カレントレコードを返してレコード番号をインクリメントするみたいです.レコードが無い場合は”False”を返すようです.

作成した変数
$currentFieldnum カレントフィールド番号
$currentRownum カレントレコード番号

作成した関数
clear_counts() 変数を初期化するための関数.
変数の初期化は複数の関数で行うため関数としてまとめます.
 
pgsql_query( $_dbname = "",$_dbuser = "") コンストラクタ.
必要ないのかもしれませんが親クラスのコンストラクタをここで呼び出しています.
あと変数の初期化も行います.
 
getfieldname() フィールド名の取り出しを行います.
一回の呼び出しで頭から順に一つのフィールド名を取り出します.手間かもしれませんが,呼び出し側で柔軟な対応ができるのでこういう形にしています.
フィールド名の残りが無い場合は”False”を返します.
  
ここで利用するPostgreSQL関数はPHP4.2.0以降で関数名が変更になったものが使われています.古いバージョンのものについてもコメントとして残してありますのでご利用のバージョンに合わせて利用してください.
 
getrow() レコードの取り出しを行います.
一回の呼び出しで頭から順に一つのレコードを取り出します.
レコードの残りが無い場合は”False”を返します.
 
レコード取得の場合,第二引数が不要なので余分な処理をしていると思われるかもしれませんが,変数の書き換えで指定行に簡単に戻れるのでこういう処理にしています.

目次】【第1回】【第2回】【第3回】【第4回

(c)2002-2003 by misky