【Codeigniterの基礎】DBから情報を読み込み、ビューに表示する方法
CodeIgniterをDBに接続して、DB内の情報を表示する方法です。
以下のDB設定を例に解説していきます。
DB名:ci_site
テーブル:pageData
∟カラム数:5
∟ id
∟ titile
∟ page
∟ text1
∟ text2
上記が分かりづらい場合は、以下の写真もあわせてご覧ください。
また、DBには以下の写真のようにデータを挿入しておいてください。
尚、当記事のページ構成の理解のため、事前に以下の記事をご確認ください。
【CodeIgniterの基礎】ビューの作成、複数ビューの読み込み設定
それではまとめていきます。
CodeIgniterをDBに接続します
DBとの接続情報を環境にあわせて設定します。
編集ファイル:application/config/database.php
$db['default']['hostname'] = 'localhost'; $db['default']['username'] = 'root'; $db['default']['password'] = 'root'; $db['default']['database'] = 'ci_site';
DBをautoloadで読み込む
// $autoload['libraries'] = array(); $autoload['libraries'] = array("database");
この時点でページ読み込みをして、エラーが出ないか確認しましょう。
DBから情報を引っ張るために、model_get.phpを作成する
ファイル作成場所:application/model/model_get.php
<?php
class Model_get extends CI_Model{
function getData($page){ //取得したデータを『$page』に挿入
$query = $this->get_where("pageData", array("page" => $page));
//pageDataのカラム内にあるpageテーブルから情報を取得する
return $query->result(); //結果を表示する
}
}
サイトコントローラーでDB情報を読み込む
編集ファイル:application/controllers/site.php
public function home(){
$this->load->model("model_get"); //モデルフォルダ内のmodel_getを読み込む
$data["results"] = $this->model_get->getData("home"); //pageDataのカラム内にあるpageテーブルから取得したデータ(home)との紐付けをする。その後、$dataに情報を挿入する。
$this->load->view("site_header");
$this->load->view("site_nav");
// $this->load->view("content_home");
$this->load->view("content_home", $data);
$this->load->view("site_footer");
}
DBから引っ張ってきた情報をページ内に表示する
編集ファイル:application/views/content_home.php
<div id="content">
<?php
foreach($results as $row){
$title = $row->title;
$text1 = $row->text1;
$text2 = $row->text2;
}
echo heading($title, 1, "class=home-h1")
?>
<p><?php echo $text1; ?></p>
<p><?php echo $text2; ?></p>
</div>
content_about.phpも同様に設定していきます
サイトコントローラーでアバウトページのDB情報を読み込みます。
編集ファイル:application/controllers/site.php
public function about(){
$this->load->model("model_get"); //モデルフォルダ内のmodel_getを読み込む
$data["results"] = $this->model_get->getData("about");
//pageDataのカラム内にあるaboutテーブルから情報を取得する
$this->load->view("site_header");
$this->load->view("site_nav");
$this->load->view("content_about", $data);
$this->load->view("site_footer");
}
アバウトページのビュー設定をしていきます。
編集ファイル:application/views/content_about.php
<div id="content">
<?php
foreach($results as $row){
$title = $row->title;
$text1 = $row->text1;
$text2 = $row->text2;
}
echo heading($title, 1, "class=home-h1")
?>
<p><?php echo $text1; ?></p>
<p><?php echo $text2; ?></p>
</div>
以上となります。
これで簡易CMSが完成しました\(^o^)/