Lọc dữ liệu trong CodeIgniter 3x

Bài này giúp các bạn viết code lọc dữ liệu trong CodeIgniter 3x theo các biến get được truyền tham số trên url
  • 11:10 10/10/2016
  • Kỳ Nhân
  • 0 Bình luận
  • 947

Để viết code lọc dữ liệu trong CodeIgniter 3x đầu tiên các bạn vào application/views/admin/groups/list.php thêm form search vào. như bên dưới

<?php defined('BASEPATH') OR exit('No direct script access allowed');?>
<div class="container">
    <h1>Danh sách nhóm</h1>
    <div class="text-right"><a class="btn btn-success" href="<?=site_url('admin/groups/create'); ?>" title="Thêm">Thêm nhóm</a></div>
    <hr>
    <div>
        <form method="get" action="<?=site_url('admin/groups'); ?>" id="form-search">
            <div class="form-group">
                <input name="key" type="text" class="form-control" placeholder="Nhập từ khóa">
                <button class="btn btn-primary" type="submit">Tìm</button>
            </div>            
        </form>
    </div>
    <hr>
    <div class="table-responsive">
        <table class="table table-bordered table-hover table-list">
            <thead>
                <tr>
                    <th class="w50">#</th>
                    <th class="w50">STT</th>
                    <th>Hình Ảnh</th>
                    <th>Tên</th>
                    <th class="w100">Ẩn | Hiện</th>
                    <th class="w100">Hành động</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($model as $i => $item) { ?>                    
                <tr>
                    <td class="w50"><?=$i+1?></td>
                    <td><input type="text" value="<?=$item->stt?>" class="stt w50" data-url="<?=base_url('admin/groups/stt')?>" data-id="<?=$item->id?>"></td>
                    <td>
                    <?php if($item->picture!='') { ?>
                    <img src="<?=base_url()?>uploads/<?=$item->picture?>" height="80">
                    <?php } ?>
                    </td>
                    <td><?=$item->title?></td>
                    <td class="w100 a-hide">
                        <span class="glyphicon glyphicon-ok-circle iconfa-show hide1<?=$item->id?> <?php if($item->hide==0) echo 'hide'; ?>" data-id="<?=$item->id?>" data-hide="0" data-url="<?=base_url('admin/groups/hide')?>"></span>
                        <span class="glyphicon glyphicon-remove-circle iconfa-hide hide0<?=$item->id?> <?php if($item->hide==1) echo 'hide'; ?>" data-id="<?=$item->id?>" data-hide="1" data-url="<?=base_url('admin/groups/hide')?>"></span>
                    </td>
                    <td class="w100 act">
                        <a href="<?=site_url('admin/groups/edit/'.$item->id); ?>" ><span class="glyphicon glyphicon-pencil"></span></a>
                        <a class="delete-confirm" href="<?=site_url('admin/groups/delete/'.$item->id); ?>"><span class="glyphicon glyphicon-trash"></span></a>                                
                    </td>
                </tr>
                <?php } ?>
            </tbody>
        </table>
    </div>
    <div class="clearfix"></div>
    <div class="pagination-page"><?=$this->pagination->create_links();?></div>
</div>

Sau đó các bạn nhập từ khóa vào và bấm submit. Đã thấy từ khóa đươc đưa lên url bằng phương pháp GET. để tiến hành lọc dữ liệu, các bạn chỉ cần GET biến trên url xuống và cho vào câu truy vấn là được.

Hàm lấy biến GET trên url sẽ là $this->input->get('ten_bien')

Giờ vào application/controllers/admin/Groups.php sửa lại function index() như sau:

public function index() {
        $where = "";
        $suffix = "";
        if($this->input->get()) {
            $key=$this->input->get('key');        
            if($key!='') {
                $where.=" where title like '%$key%'";
            }
            $suffix = "?".$_SERVER['QUERY_STRING'];
        }
        $config['base_url'] = base_url('admin/groups');
        $config['total_rows'] = $this->db->query("select id from groups $where")->num_rows();
        $config['per_page'] = 2;
        $config['use_page_numbers'] = true;
        $config['suffix'] = '.html'.$suffix;
        $config['first_url'] = site_url('admin/groups').$suffix;
        $config['first_link'] = 'Trang đầu';
        $config['last_link'] = 'Trang cuối';
        $this->pagination->initialize($config);
        $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 1;
        $start = $page*$config['per_page']-$config['per_page'];
        $limit = $start.",".$config['per_page'];
        $this->data['model'] = $this->db->query("select * from groups $where order by stt asc, id desc limit $limit")->result();
        $this->render('admin/groups/list');
    }

Giờ tiến hành search và kiểm tra thôi