Các bài viết trên website cùng chủ đề nên nhóm lại cùng nhau như vậy sẽ rất tốt cho người đọc. Đồng thời khi hiển thị bài liên quan sẽ giữ chân người đọc rất tốt. Bài viết này sẽ hướng dẫn bạn cách tạo chuyên mục cho bài viết một cách dễ dàng.

Trước khi thực hiện bạn cần hiểu về quy trình hoạt động:

Sẽ có 2 bảng khác nhau đó là một bảng posts và categories. Đầu tiên chúng ta sẽ thêm chuyên mục vào trong categories trước. Sau đó khi thêm bài viết mới sẽ dùng SELECT để lựa chọn chuyên mục. Chuyên mục được chọn là cột của id trong bảng categories.

Sau đó chúng ta ghi vào trong bảng posts.

Tạo chức năng thêm chuyên mục

Bước 1: Tạo bảng categories

CREATE TABLE IF NOT EXISTS `categories` (
`cat_id` int(11) NOT NULL AUTO_INCREMENT,
`cat_name` varchar(100) NOT NULL,
`cat_content` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1 ;

Bước 2: Tạo CatModel.php để Insert dữ liệu

<?php
class CatModel extends CI_Model
{
function save($cat_name,$cat_content)
{ 
$query="insert into categories values('','$cat_name','$cat_content')";
$this->db->query($query);
}

}

Bước 3: Tạo CatController.php

<?php 
class CatController extends CI_Controller 
{
public function __construct()
{
parent::__construct();
$this->load->database();

$this->load->model('CatModel');
}
public function savedata()
{
$this->load->view('insert');

if($this->input->post('add_cat'))
{

$cat_name=$this->input->post('cat_name');
$cat_content=$this->input->post('cat_content');

$this->CatModel->save($cat_name,$cat_content);
echo '<script language="javascript">alert("Thêm chuyên mục thành công!");</script>';
}
}

}
?>

Bước 4: Tạo file insert.php tại View

<!DOCTYPE html>  
<html>
<head>
<title>Add Categories Codeigniter</title>
</head>
  
<body>
    <form method="post">
        <table width="600" border="1" cellspacing="5" cellpadding="5">
  <tr>
    <td>Tên chuyên mục </td>
    <td><input type="text" name="cat_name"/></td>
  </tr>
  <tr>
    <td>Mô tả </td>
    <td><input type="text" name="cat_content"/></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" name="add_cat" value="Lưu dữ liệu"/></td>
  </tr>
</table>
  
    </form>
</body>
</html>

Bước 5: Thêm một đường dẫn trong routes

$route['add-cat'] = 'CatController/savedata';

Tuy cập vào http://localhost/codeigniter/add-cat thêm các chuyên mục mà bạn muốn.

them-chuyen-muc-bai-viet-codeigniter

Mở bảng categories trên Phpmyadmin ra xem kết quả như thế này là được

them-chuyen-muc-bai-viet-codeigniter-1

Chức năng thêm bài viết lựa chọn chuyên mục

Sau khi đã có chuyên mục rồi thì chúng ta sẽ thêm chức năng thêm bài viết Select các chuyên mục đó.

Xem lại bài viết: Tạo chức năng thêm bài viết bằng Codeigniter

Bước 1: Tại Post_Model.php mình sẽ thêm một function mới là get_category

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

Bạn sẽ bê nguyên ở file Post_Model.php mình đã viết ở bài thức 5 sang và thêm function get_category vào.

Tiếp theo mình cũng sẽ thêm một funtion nữa ở bên dưới

function save_post($title, $cat_id){
            $data = array(
            	'title' => $title,
                'cat_id' => $cat_id
            );
            $this->db->insert('posts',$data);
    	}

Bước 2: Thêm một function vào trong file Post_Controller.php ở bài thứ 5

// Thêm mới chuyên mục
        public function add_new(){
            $data['category'] = $this->Post_Model->get_category()->result();
            $this->load->view('new_post', $data);
        }
        //Lưu bài viết vào database
        public function save_posts(){
            $title   = $this->input->post('title',TRUE);
            $cat_id    = $this->input->post('cat_id',TRUE);
            $this->Post_Model->save_post($title,$cat_id);
            redirect('add_new');
        }

them-chuyen-muc-bai-viet-codeigniter-3

Bước 3: Thêm file new_post.php tại View

<!DOCTYPE html>
<html>
<head>
    <title>Thêm chuyêm mục</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
</head>
<body>
    <div class="container">
 
      <div class="row justify-content-md-center">
        <div class="col col-lg-6">
            <form action="save_post" method="post">
 
                <div class="form-group">
                    <label>Tiêu đề bài viết</label>
                    <input type="text" class="form-control" name="title" placeholder="Nhập tiêu đề" required>
                </div>
 
                <div class="form-group">
                    <label>Category</label>
                    <select class="form-control" name="cat_id" id="category" required>
                        <option value="">No Selected</option>
                        <?php foreach($category as $row):?>
                        <option value="<?php echo $row->cat_id;?>"><?php echo $row->cat_name;?></option>
                        <?php endforeach;?>
                    </select>
                </div>
 
                <button class="btn btn-success" type="submit">Lưu lại</button>
 
            </form>
        </div>
      </div>
 
    </div>
</body>
</html>

Bước 4: Định tuyến route với dòng lệnh

$route['add_new'] = 'Post_Controller/add_new';
$route['save_post'] = 'Post_Controller/save_posts';

Cuối cùng bạn sẽ truy cập vào đường dẫn http://localhost/codeigniter/index.php/new_post để thêm bài viết.

them-chuyen-muc-bai-viet-codeigniter-4

Sau khi thêm xong bạn sẽ mở bảng posts trên Database ra xem kết quả

Kết luận: Bài viết này hơi phức tạp nên bạn hãy học theo series từ bài 1 cho tới bài này sẽ dễ hiểu hơn. Cách thức hoạt động của nó là bạn sẽ tạo ra 2 bảng khác nhau sau đó dùng SELECT OPTIONS lựa chọn. Nó sẽ ghi id của chuyên mục vào bảng posts.

Cùng chủ đề

Bình luận!

Xin lưu ý rằng tất cả các bình luận đều được kiểm duyệt theo chính sách bảo mật và tất cả các liên kết đều là nofollow. KHÔNG sử dụng từ khóa trong trường tên. Hãy để lại một cuộc trò chuyện cá nhân và ý nghĩa. *