CodeIgniter – Bài 3: Xây dựng 1 module Select dữ liệu

Làm thế nào để xây dựng 1 module truy vấn dữ liệu từ Database. Ở bài này mình sẽ hướng dẫn chi tiết cho các bạn.

Hướng dẫn codeigniter – Ở bài trước mình đã hướng dẫn các config cơ bản để có thể chạy app. Bạn đã config Home làm controller mặc định khi tạo app vậy thì. Bạn phải tạo controller tên là Home chứ đúng không?

#1 Controller

Trong folder application\controllers bạn tạo mới 1 file php đặt tên là home.php nội dung của nó gồm những gì

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Home extends CI_Controller {

    function __construct()
    {
        parent::__construct();
         }
}

Rồi bạn chạy thử app của mình xem có gì? Lỗi đúng không. Mặc định khi vào controller nào đó thì CI sẽ chọn index làm phương thức mặc định để trỏ tới. Do đó ta sẽ tạo 1 phương thức tên là index và view cũng tên như vậy. Cho dễ quản lý ha. Còn về nguyên tắc 1 phương thức return về view nào cũng được hết á 🙂

Trong controller mình thêm phương thức index có nội dung như sau:

function index()
{
    $this->load->view('/Home/index');
}

Chúng ta sẽ đến phần view

#2 View

Trong folder application\views tạo 1 folder tên Home (cùng tên với Controller, cũng để cho dễ quản lý)
trong folder Home bạn tạo 1 view tên là index.php
Nội dung của view này là
<h1>Xin chào đây là view Index được gọi từ controller Home</h1>
Xong chạy thử application của bạn xem. Bây giờ nó đã chạy ngon và hiện ra dòng chữ của bạn rồi đấy. Bạn đã viết thành công 1 site thời trang rồi. Yeah!!!!!! ^^
Đùa thôi.. hehe.. Đoạn đường phía sau vẫn còn dài.
Giờ trong đầu bạn nảy lên ý tưởng muốn select dữ liệu từ trong Database  (mình viết tắt là DB cho nhanh nhé.) ra và hiển thị lên view index vừa rồi thì bạn phải làm thế nào? Bây giờ là lúc cần đến anh Model dễ thương rồi. Mà nhiệm vụ của Model là gì ấy nhỉ các bạn? Mình quên rồi? Cho mình giải thích dưới comment với. 🙁

#3 Model

Trong folder application\models tạo 1 model có tên là users_model.php
Cấu trúc của nó model như sau:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Users_model extends CI_Model {

    public function __construct()   {
      $this->load->database();
    }

    public function get_all() {
      $query = $this->db->query('SELECT * FROM users');
      return $query->result();
    }
}

Như đã đề cập ở bài trước. Nếu bạn load library dabase ngay ở autoload.php thì bạn khỏi cần phải load thủ công ở từng Model. Mà do mình chưa load ở đó nên vào trong Model mình phải load trong function Constructor để connect database chứ không lại có lỗi thì ngại lắm :D.

Viết tiếp function get_all() để lấy toàn bộ user ra. Và trong function Index mình sẽ gọi function này để lấy toàn bộ dữ liệu đưa xuống view hiển thị thành Danh sách user.

Trong CodeIgniter (mình viết tắt là CI nhé) thì có rất nhiều cách để viết 1 câu query. Nhưng cách trên là nhanh nhất đối với mình 😀

Vậy là xong chưa? Chạy được chưa? Tất nhiên là chưa rồi ^^

Trong Home controller bạn sửa lại vài chỗ

Trong function Constructor của controller Home bạn phải load Model Users để sử dụng được các phương thức của model đó.

function __construct()
    {
        parent::__construct();
        // Load all need model
        $this->load->model('users_model');
    }

Tron function index của Controller bạn viết thêm

function index()
{
        $data['list_users'] = $this->users_model->get_all();
        $this->load->view('/Home/index',$data);
}

Trong View bạn cũng sửa lại để render là được data gửi từ controller xuống

<h1>Đây là page Index được gọi từ controller Home</h1>

<table>
    <tr>
        <th>Tên đăng nhập</th>
        <th>Active</th>
        <th>Role Id</th>
    </tr>

<?php
    foreach ($list_users as $row)
    { ?>
        <tr>
            <td><?php echo $row->Username; ?></td>
            <td><?php echo $row->IsActive; ?></td>
            <td><?php echo $row->RoleId; ?></td>
        </tr>

   <?php } ?>
</table>

Xong ! Bạn hãy chạy thử chương trình.

F G+ T

tuandph

Khởi đầu với .NET từ năm 2013 đến nay. Hiện tại mình đang làm full-stack developer. Yêu thích lập trình & chia sẽ kiến thức. Thời gian rảnh thường làm những tool vui vui và viết lách kể lệ sự đời.

Leave a Reply

We're glad you have chosen to leave a comment. Your email address is required but will not be published.
  • Không nói tục
  • Không chửi bậy
  • Comment ko hài hước không support