Quản lý thành viên trong CodeIgniter 3x

Bài trước các bạn đã tạo được nhóm, phần này mình hướng dẫn tạo controller quản lý thành viên, quản lý user, thêm, xóa, sửa thành viên, ứng dụng các hàm xây dựng bên models
  • 09:46 16/11/2016
  • Kỳ Nhân
  • 0 Bình luận
  • 1010

- Để tạo được Controller với mục đích quản lý thành viên, quản lý user trong CodeIgniter 3x, các bạn cần trải qua các bước sau như: xây dựng database cho thành viên, viết Controller Users, viết view cho Controller Users..

- Đầu tiên các bạn cần tạo Controller tên là Users. Cách tạo thì giống như tạo Controllser Groups, cách nhanh nhất là copy từ Controller Groups ra và sửa nội dung thành Users thôi.

- Bước đầu tiên khởi tạo database cho thành viên. Hàm bên dưới sử dụng trong phpmyadmin nha các bạn, trước tiên insert sẵn 2 thành viên để test cho dễ

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `stt` int(11) NOT NULL,
  `hide` int(11) NOT NULL,
  `name` text COLLATE utf8_unicode_ci NOT NULL,
  `email` text COLLATE utf8_unicode_ci NOT NULL,
  `phone` text COLLATE utf8_unicode_ci NOT NULL,
  `address` text COLLATE utf8_unicode_ci NOT NULL,
  `picture` text COLLATE utf8_unicode_ci NOT NULL,
  `birthday` text COLLATE utf8_unicode_ci NOT NULL,
  `gender` int(11) NOT NULL,
  `username` text COLLATE utf8_unicode_ci NOT NULL,
  `user_token` text COLLATE utf8_unicode_ci NOT NULL,
  `pass_token` text COLLATE utf8_unicode_ci NOT NULL,
  `group_id` int(11) NOT NULL,
  `create_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

INSERT INTO `users` (`id`, `stt`, `hide`, `name`, `email`, `phone`, `address`, `picture`, `birthday`, `gender`, `username`, `user_token`, `pass_token`, `group_id`, `create_at`) VALUES
(1, 1, 1, 'Kỳ Nhân', 'hnhoanghien@gmail.com', '01264852058', 'Dĩ An, Bình Dương', '', '575312400', 1, 'admin', 'af7e0928fcba501d8ed0385c794e690fe151bf16', 'd880a324d5e62fe8d64a7cf642b4a9984a9c97d3', 1, 1461686251),
(2, 0, 1, 'hoang hien', 'hnhoanghien88@gmail.com', '32423423', 'Dĩ An Bình Dương', '', '1247522400', 1, 'hoanghien', 'e2b24e4599de14a6901ea4d21fc166baacb13a51', 'fcacf366e100ec0f419f6a2c3999047df8328a4c', 2, 1471869038);

- Sau khi database đã tạo xong, bước tiếp theo là tạo Controller Users. Vào application/controllers/admin tạo file Users.php với nội dung

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Users extends Admin_Controller {
    function __construct() {
        parent::__construct();
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['remove_spaces'] = true;
        $config['file_ext_tolower'] = true;        
        $this->load->library('upload', $config);
    }
    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/users');
        $config['total_rows'] = $this->db->query("select id from users $where")->num_rows();
        $config['per_page'] = 2;
        $config['use_page_numbers'] = true;
        $config['suffix'] = '.html'.$suffix;
        $config['first_url'] = site_url('admin/users').$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 users $where order by stt asc, id desc limit $limit")->result();
        $this->render('admin/users/list');
    }
    public function stt() {
        $id = $this->input->post('id');
        $model = array(
            'stt' => $this->input->post('stt'),
        );
        if($id !== null) {    
            $this->db->update('users', $model, array('id' => $id));
        } 
    }
    public function hide() {
        $id = $this->input->post('id');
        $model = array(
            'hide' => $this->input->post('hide'),
        );
        if($id !== null) {    
            $this->db->update('users', $model, array('id' => $id));
            $output = array(
                'hide' => $model['hide'],
            );
            $this->output->set_content_type('application/json')->set_output(json_encode($output));
        } 
    }
}
?>

Hàm trên giống Controller Groups chỉ khác là sửa groups thành users thôi. Các function hide, stt giống nhau nên giữ lại sài đỡ tốn thời gian viết lại

- Tạo View cho Controller User, cũng giống trên copy view groups sang rồi đổi tên thành users thôi. Vào application/views/admin tạo folder users, Trong folder users tạo file list.php với nội dung:

<?php defined('BASEPATH') OR exit('No direct script access allowed');?>
<div class="container">
    <h1>Danh sách users</h1>
    <div class="text-right"><a class="btn btn-success" href="<?=site_url('admin/users/create'); ?>" title="Thêm">Thêm users</a></div>
    <hr>
    <div>
        <form method="get" action="<?=site_url('admin/users'); ?>" 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ài khoản</th>
                    <th>Email</th>
                    <th>Nhóm</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/users/stt')?>" data-id="<?=$item->id?>"></td>
                    <td>
                    <?php if($item->picture!='') { ?>
                    <img src="<?=base_url()?>uploads/<?=$item->picture?>" height="80">
                    <?php } ?>
                    </td>
                    <td><?=$item->username?></td>
                    <td><?=$item->email?></td>
                    <td><?=$item->group_id?></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/users/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/users/hide')?>"></span>
                    </td>
                    <td class="w100 act">
                        <a href="<?=site_url('admin/users/edit/'.$item->id); ?>" ><span class="glyphicon glyphicon-pencil"></span></a>
                        <a class="delete-confirm" href="<?=site_url('admin/users/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 một hồi copy và chỉnh sửa các bạn vào đường dẫn localhost/ci/admin/users.html thấy hiện giống hình bên dưới là ok

- Test thử thay đổi số thứ tự, ẩn hiện, nếu không bị lỗi là đã hoàn thành bước đầu tiên của mục đích quản lý thành viên, quản lý user trong codeigniter 3x rồi.

- Phần thêm, xóa, sửa thành viên theo dõi tiếp bài sau nha các bạn.