掲示板を作ろう その6

データベースへのコメントの挿入も出来たので、コメントを表示させていきます
参照:Active Record クラス : CodeIgniter ユーザガイド 日本語版
参照:クエリ結果の生成 : CodeIgniter ユーザガイド 日本語版

コメントを表示させるメソッドを application/models/boardmodel.php に作成

public function comments() {
    $query = $this->db->get('comments');
    return $query;
}

$this->db->get('comments'); は SELECT * FROM comments; のSQL文と同意。
それを $query に格納して、return文で返すと。

コントローラ側でデータを受け取り、ビューに送る

if($this->form_validation->run() === FALSE) {
    $data['comment'] = $this->boardmodel->comments(); # ここに追加

    $this->load->view('templates/header');
    $this->load->view('form');
    $this->load->view('comment', $data); # ここに追加
    $this->load->view('templates/footer');
} else {

$this->boardmodel->comments() でメソッドを実行。返された値を $data['comment'] に格納
$this->load->view('comment', $data) で $dataをビューに送る

コメント表示ビューを作成

application/views/comment.php

<hr>
<?php foreach($comment->result() as $c): ?>

<dl>
<p>投稿者:<?php echo $c->name; ?>メール:<?php echo $c->email; ?></p>
<dt><p><?php echo $c->comment ?></p></dt>
</dl>
<hr>

<?php endforeach; ?>
foreach($comment->result(), $data)
$comment->result() は $this->db->get() で生成されたクエリの結果の生成。
それをforeach文のショートタグで回すと。

これで一通り掲示板っぽいのは出来たかな!



反省点
  • 作成順序がデータの挿入→表示より、逆の方がよかった。
  • データベースのテーブルひとつでやってるけど、ユーザーとコメントの2つのテーブルにしたい
  • コメント投稿時、投稿成功ページに遷移してるところをページ遷移なしにしたい。
    その場合の二重投稿対策
  • 作成に時間が掛かりすぎ(:D)rz

どんな時モデルを使うかとか、コンストラクタはどういう時に使うかとか
色々と、分からないところがまだまだあるなぁと感じました。