MDB2を利用したプログラムのブラッシュアップ
それでは、実際に今まで作成してきたプログラムをブラッシュアップしてみましょう。はじめのステップとして、商品一覧画面と会員登録画面をMDB2を使用したコードに置き換えてみます。
サンプルソースの「STEP1」フォルダの中に、前回作成したitem_list.phpとmember.phpがあります。item_list.phpに関しては既にMDB2に置き換えているので、これを参考に、member.phpをMDB2に置き換えてください。
具体的な手順として、まずはmember.phpにてMDB2を用いてデータベースに接続し、文字コードの指定をしてください。Item_list.phpの
// MDB2 ライブラリの読み込み
require_once("MDB2.php");
の行から、
// 文字コードの指定 $mdb2->setCharset( "utf8" );
の行までがその処理にあたりますので、これをmember.phpに適用します。MDB2を用いない既存のプログラム行は削除しましょう。
次に、それぞれのSQL文をMDB2を使って実行できるようにします。
member.phpでは、条件に応じて3つのSQL文を実行しています。例えば、その1つとして以下のSQL文があります。
$sql = " UPDATE m_customers SET "; $sql .= " customer_code = '" . $_REQUEST['customer_code'] . "',"; $sql .= " pass = '" . $_REQUEST['pass'] . "',"; $sql .= " name = '" . $_REQUEST['name'] . "',"; $sql .= " address = '" . $_REQUEST['address'] . "',"; $sql .= " tel = '" . $_REQUEST['tel'] . "',"; $sql .= " mail = '" . $_REQUEST['mail'] . "'"; $sql .= " WHERE customer_code = '" . $_SESSION['customer_code'] . "'"; $res = mysql_query( $sql );
上記を始めとするすべてのSQL文の$_REQUEST['xxxx']の部分を、?(クエスチョンマーク)に置き換え、MDB2を使用して実行できるようにしてください。編集が終わったら、C:\xampp\htdocs\ec\以下に置き、ブラウザでアクセスして動作を確認しましょう。
うまく動作しましたか? 「STEP1」フォルダの中の「answer」フォルダに解答例がありますので、確認してください。
プログラムを共通化する
それでは、次に「共通化」という作業を行い、プログラムをすっきりと見やすくします。共通化とは、重複する処理を別のファイルに抜き出し、重複をなくすことです。
例えば、これまで作成した商品一覧画面、会員登録画面には、一部同じような処理が書かれています。具体的には、以下の2つの処理が共通しています。
- データベースに接続する処理
- 画面左メニューの「ログイン」機能、「商品検索」機能など
これらの処理は、2つのファイルにまったく同じ内容のプログラムを書いて実装してきましたが、このままでは後々のメンテナンスが大変そうです。
商品検索エリアに「価格」による検索項目が追加になったとしましょう。その場合、2つのファイルの修正が必要になります。下図の黄色の枠の部分は処理に重複がある箇所ですので、この部分に項目の追加などがあると労力がかかります。
これらを共通化し、重複する処理を1カ所にまとめることで、よりスマートにメンテナンスができるようになります。
今回は、データベースに接続する処理を「database.php」というファイルに記述し、ECサイト内の左メニューに関する処理を「left_pane.php」というファイルに記述します。これらのファイルを、詳細画面と会員登録画面それぞれから呼び出して使います。
上記のような構造にすれば、例えば、ECサイトの左メニューに新しい項目を追加したい、といった場合、「left_pane.php」のみを修正すればいいことになります。
具体的な呼び出し方は、PHPのrequire_onceという命令を用います。
require_once("呼び出したいファイル名");
サンプルソースの共通化
それでは、実際に作業をしてみましょう。まず、サンプルソースの「STEP2」フォルダにあるincludeフォルダを丸ごとコピーし、C:\xampp\htdocs\ecの下に配置してください(コピー後のパスはC:\xampp\htdocs\ec\includeとなります)。このフォルダの中には、既にdatabase.phpとleft_pane.phpの完成形が入っています。
次に、item_list.phpとmember.phpを開いてみましょう。それぞれのファイルに星印でコメントしてある部分があるので、指示に従ってrequire_once命令に置き換えてください。
今回は、呼び出すファイルがincludeフォルダ内にあるので、
require_once("include/<呼び出したいファイル名>");
のようにスラッシュ区切りでフォルダ名を指定してください。
うまく動作しましたか? 解答例はサンプルソースの「STEP2」フォルダ内のanswerフォルダの中にありますので、確認してください。
データベース処理ライブラリは、MDB2の他にも「adodb」や「PDO」をはじめ、多くの種類が存在します。今回は、PHPで使われることの多いPEARの使用方法に慣れる目的で、MDB2を採用していますが、興味が湧いた方は、調べてみるといいでしょう。


