Open Source Web Development Tutorials - Dev Shed
CodeIgniterでブログのコメント機能を追加する
(2009/03/13公開)
「Blogger」コントローラクラスにメソッド追加し、コメントを入力できるようにする
直前の部分で説明したように、ユーザーは簡単なWebフォームを使うことにより、特定のエントリにいくつかコメントをつけることができるようになる。ご想像にたがわず、このWebページの要素はこのブログ用ツールのビジュアル面の一部なので、ビューファイルの中に組み込む必要がある。
コメントを「blogs_comments」という名のMySQLテーブルに挿入するには、コントローラクラスの中にこのタスクを行うための、もう1つのメソッドを組み込む必要がある。
下に変更を加えたコントローラを掲載しておく。「insert_comment()」という名の新たなメソッドが含まれており、ユーザーが投稿したコメントを対応するMySQLテーブルに保存する役割を果たしている。ぜひご覧いただきたい。
class Blogger extends Controller{
function Blogger(){
// load controller parent
parent::Controller();
// load database class and connect to MySQL
$this->load->database();
// load pagination library
$this->load->library('pagination');
// load helper
$this->load->helper('url');
}
// display all blog entries
function blogs(){
$data['title']='Blog Entries Listing';
$data['result']=$this->db->get('blogs',3,$this->uri->segment(3));
// set pagination parameters
$config['base_url']='http://127.0.0.1/codeigniter/index.php/blogger/blogs/';
$config['total_rows']=$this->db->count_all('blogs');
$config['per_page']='3';
$config['full_tag_open']='<div id="paginglinks">';
$config['full_tag_close']='</div>';
$this->pagination->initialize($config);
// create pagination links
$data['links']=$this->pagination->create_links();
// load 'blogs_view' view
$this->load->view('blogs_view',$data);
}
// display all blog comments
function comments(){
$data['title']='Blog Comments Listing';
$this->db->where('blog_id',$this->uri->segment(3));
$data['result']=$this->db->get('blogs_comments');
// load 'blogs_comment_view' view
$this->load->view('blogs_comment_view',$data);
}
// insert new blog comment
function insert_comment(){
$this->db->insert('blogs_comments',$_POST);
redirect('blogger/comments/'.$_POST['blog_id']);
}
}
形は短いが、この「insert_comment()」というメソッドは実に役に立ってくれる。新しいコメントが入ると「blogs_comments」という名のMySQLテーブルに挿入し、挿入の操作が正しく処理されると、次にユーザーをコメントのWebページに移動してくれる。
上にあるように、コメントはPOST HTMLフォームによって収集されている。よって、この場合はデータを該当するデータベーステーブルに送信するためには、$_POSTというPHPのスーパーグローバル配列が使われている。
これで、「Blogger」コントローラ・クラスには、それぞれのブログエントリに新しくコメントがつけられると指定されたMySQLテーブルに保存する能力が付された。しかし、この処理もユーザーが簡単にコメントを送信できるWebフォームの作り方をお見せしなければ、完成とは言えないだろう。
そこで、この記事の最後の部分では、「blogs_comment_view.php」ファイルを組み直して、オンラインフォームを実装する方法をご紹介する。
では、早速次の部分に進もう。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








