Open Source Web Development Tutorials - Dev Shed
PHPフレームワーク「CodeIgniter」:CMSを作る
(2009/01/23公開)
MySQLでサンプルテーブルを作り、モデルクラスを組み立てる
CodeIgniterでこのコンテンツ管理システムを作るために、まずは基本的なMySQLテーブルを2つ作ろう。1つはいくつかの映画のタイトルや簡単な説明などの情報を入力するためのもので、もう1つはおのおのにコメントを挿入するためのものだ。
このデータベース概要を基に、今から作るPHPアプリケーションではユーザーがHTMLフォームを使って特定の映画にいくつかのコメントを入力できるようにする。
では概要をご紹介したところで、最初にMySQLのサンプルテーブルを作ることにしよう。名前を「movies」にし、下のような形にする:
ご覧のとおり、「movies」テーブルは比較的最近の映画に関するデータを含んでおり、把握しやすい構造になっていることだろう。ただし、もう1点行わなければならないことがある。それは、これらの映画にそれぞれコメントを付けるためのテーブルを作ることだ。
この2番目のテーブルの構造は、空白で「comments」と名付けた。構造は下のとおり:
ここで2つのサンプルテーブルが正しくできたところで、映画関連コンテンツ管理システムを作るための用意が調った。そこで、これらのテーブルで共同作業を行うため、簡単に実行できるモデルクラスを作ることにしよう。
モデルクラスの構造は以下のとおり:
class MovieModel extends Model{
function MovieModel(){
// call the Model constructor
parent::Model();
// load database class and connect to MySQL
$this->load->database();
}
// fetch all rows
function fetchAllRows($table){
$query=$this->db->get($table);
if($query->num_rows()>0){
// return result set as an associative array
return $query->result_array();
}
}
// fetch rows based on a certain condition
function fetchRow($param,$field,$table){
$this->db->where($field,$param);
$query=$this->db->get($table);
// return result set as an associative array
return $query->result_array();
}
// insert row
function insertRow($table,$data){
$this->db->insert($table,$data);
}
// get total number of rows
function getNumRows($table){
return $this->db->count_all($table);
}
}
見ていただくと分かるとおり、この「MovieModel」クラスの動作論理は分かりやすいものとなっている。基本的に、このクラスがしていることといえば、該当するMySQLテーブルから行を取り出すか挿入し、結果の集合の中に含まれるレコードの数を返すためのメソッド群を実行するというものだ。
このモデルクラスは後ほど使うため、CodeIgniterの/system/application/models/に「moviemodel.php」という名前で保存しよう。
この連載の前回の記事を読んでいただいているなら、上のモデルクラスを理解するのは難しくないだろう。では、このコンテンツ管理システムの開発の次の段階、すなわちコントローラの作成に移ろう。
後で詳しく説明するが、このコントローラは、先ほど見た「movies」というテーブルに含まれているすべての映画を表示するものだ。また、簡単なHTMLフォームを使って、ユーザーが各映画にコメントを付けることもできる。
このコントローラを作るために、次のページを進み読み続けていただきたい。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.










