こんにちは!
ナビゲータのEVEです。
昨日の問題点を受けて、本日Prototype EVEシステムの仕様について再検討を行いました。
[仕様の再検討]
昨日、New Prototype EVEをの仕様の再検討をするという話をしましたが、そちらは、しなくていいようです。仕様の再検討が必要なのは、Prototype EVEの方・・・。
再検討の結果としては、
「1つのインスタンスで処理を完結する」
DB関連クラスの中には、データベースに関する基本的な機能が全て入っています。そのため、一度インスタンスを作成すれば、そのインスタンスでデータベースに関する操作を一通りすることができます。そのインスタンスを、昨日お話しした通り、サーバーサイト変数に設定し、プログラム内で共有します。
以上の考えに則って作成したのが、下記のプログラムです。本日は、Insertだけ作成してみました。もしかして、考えが変わった、足りないなどがあったら、本日中に追加・修正します。もし、考えに変わりがなければ、トランザクション、コミット、ロールバック関数を作成後、明日から試験に入りたいと思います。
/*************************************************
*【メソッド名】DBinsert 関数(Prototype EVE)
*【 引 数 】
* p_sub 種別
* p_table テーブル名
* p_item 項目名(配列)
* p_data 入力データ(配列)
*【返 却 値】
* 正常時:""
* 異常時:""以外
*【製 造 者】EVE
*【製造年月日】2005年02月20日
*【更新年月日】2023年03月29日
*【リリース日】
*【バージョン】
*【 概 要 】
* [2023/03/29]
* レコードを追加する
*************************************************/
function gb_dbinsert($p_table,$p_item,$p_data ) {
//変数定義
$rtn = ""; //返却値
$db = ""; //コネクトインスタンス
//引数の入力データチェック
//テーブル名を確認する
if ( $p_table != "" ) {
//テーブル名が設定されていない場合
return "テーブル名が設定されていません。";
}
//項目数とデータの数を比較する
if ( count($p_item) != count( $p_data ) ) {
//違いがあった場合エラーメッセージを返却地にセットする
return "カラムとデータに不整合があります。";
}
//サーバーサイト変数の判定を行う
if (session_id()) {
//セッションIDが設定されている場合
//コネクトインスタンスを取得する
$db = $_SESSION['db'] ) {
} else {
//セッションIDが設定されていない場合
//セッションを開始する
session_start();
}
//コネクトインスタンスの判定を行う
if ( $db == "" ) {
//コネクトインスタンスが設定されていない場合
//インスタンス作成
$db = new getInfDB(db,host,'utf8',user,pass);
}
//データベースの登録の初期設定を行う
//SQLを実行する
$rtn = $db->recInsert($p_table,$p_item,$p_data);
//返却値を設定する
if ( $rtn == false ) {
//サーバーサイト変数を削除する
unset($_SESSION("db"));
//返却値が異常の場合
$rtn = $db->getErrorMessage();
} else {
//インスタンスをサーバーサイト変数として設定する
$_SESSION['db'] = $db;
}
//返却値の返却
return $rtn;
}
以上のプログラムは、テキストエディタでプログラミングしたばかりのもので、デバックも何もしていません。多分、動かないと思います。こんな感じで作成してるんだな〜♪っぐらいに見てください。
[あとがき]
やっと、頭の中がすっきりしました。方針がほぼきまり、いけそうだといった印象を持つことができました。
方針が決まらないと、もんもんとしてしまい、なかなか、他の作業が手がつかないので、ひと段落です。ただ、デバックしてみないと最終的にはわかりませんが(笑)。
うまくいくといいな〜♪
では、また!!!
タグ:php
【このカテゴリーの最新記事】