こんにちは!
ナビゲータのEVEです。
本日は、昨日ご紹介した、Prototype EVEをインターフェース用プログラムに編集しました。編集した結果、機能自体がインターフェースだけになるため、短くなるのでは?っと想定していましたが、ステップ数は逆に長くなりました・・・???
難しかったというか、時間がかかったところが、検索結果の件数をカウントするところ・・・。使ったことがなかったということもあるのですが、サイトにより記述がまちまち・・・。検索、追加、更新、削除した結果の返却値を利用しているサイトもあれば、インスタンスを作成した後、プリシアードステートメントを設定した時のオブジェクトを使用しているものがあったりして、いろいろ試した結果、後者で件数をカウントすることができました。Fetchした結果は、プリシアードステートメントを設定後のオブジェクトを使用しないと検索結果はとれないようです。
[Prototype EVE、EVEシステムインターフェース]
以下が、本日作成したプログラムです。
/*************************************************
*【メソッド名】DB検索関数(新)
*【 引 数 】
* p_sql :Sql文
* p_count:想定取得レコード件数
*【返 却 値】
* 正常時:検索結果
* 異常時:異常メッセージ
*【製 造 者】EVE
*【製造年月日】2005年2月20日
*【更新年月日】2023年3月15日
*【リリース日】
*【バージョン】
*【 概 要 】
*************************************************/
function gb_dbselect($p_sql,$p_check ) {
//❶変数定義
$rtn = ""; //返却値
$ans = ""; //Fetch結果
$Bind = array(); //バインド変数配列
$db; //データベース検索格納オブジェクト
$count = 0; //件数カウント
$array = array();//編集結果格納オブジェクト
$i = 0; //編集用インデックス
//❷インスタンス作成
$db = new getDB(db,host,'utf8',user,pass);
//❸Fetchメソッドを実行する
$ans = $db->selectFetch(1,$p_sql,$Bind);
//❹返却値の判定を行う
if ( $ans == false ) {
//Fetchメソッドでエラーが発生した場合、
//返却値を設定し呼び出し元へ制御を移す
return db->$processMessage;
}
//❺件数をカウントする
try {
//件数をカウントする
$count = $db->stmt->rowCount();
} catch (PDOException $e) {
//❻例外メッセージを格納する
$db->processMessage = $e->getMessage();
//返却値を設定し呼び出し元へ制御を移す
return false;
}
//❼チェックフラグが"on"の場合、件数チェックを行う。
if (( $count == $p_check ) || ( $p_check == NULL )) {
} else {
//予想外の結果だった場合返却値を設定し呼び出し元へ制御を移す
return "Count Error";
}
//❽件数カウントの結果0件の場合呼び出し元へ制御を戻す
if ( $count == 0 ) {
//取得結果が0件だった場合、件数カウントをセットし呼び出し元へ制御を移す
return $count;
} else {
//オブジェクトの編集
//❾取得データ終了まで以下の処理を実行する
foreach ($ans as $row0) {
//❿カラム終了まで以下の処理を実行する
foreach ($row0 as $row1 => $value) {
//⓫返却値オブジェクトへ毛策結果をセットする
$array[$i][$row1] = $value;
}
//⓬行数カウンタに1加算する
$i++;
}
}
//⓭検索結果を返却値に設定し呼び出し元へ制御を移す
return $array;
}
本日は、デバックがきちんとできていないので、これから精査、デバックしてから、明日正式なプログラムソースを用いて、解説をします。
[あとがき]
事前にこのプログラムのアウトプット⓫について説明すると、右の図のような配列を作成することを目的としています。この編集により、HTMLのテーブル等に出力するときに、行数とカラム名を指定すれば、出力したい行の出力したいカラムを出力することができます。性能は悪くなるのは分かっていますが、これにより、HTML画面の生産性が飛躍的に上がります。
明日の解説の前にこのプログラムで何を実現したいのか、事前に解説をさせていただきました。
このブログを書いているうちに、件数カウントの部分、メソッドに出したほうがいいかななんて気がしてきまして、ちょっと、外に出してみました。うまく動いたら、上記プログラムを修正し、ご紹介します。
では、また!
【このカテゴリーの最新記事】