Mysql trong codeigniter

Ở phần 4 này, chúng ta cùng tìm hiểu về việc bổ sung dữ liệu thông qua FORM. Phần này cũng là phần kết thúc để Seri hướng dẫn tạo một ứng dụng Web với PHP và CodeIgniter

Ở phần trước, chúng ta có thể đọc dữ liệu từ cơ sở dữ liệu bằng các lệnh Query Builder trong CodeIgniter. Bạn cũng có thể tạo Cơ sở dữ liệu và Bảng thông qua phpMyadmin. Tương tự, bạn cũng đã thêm các bản ghi (bản ghi) vào trong Bảng thông qua phpMyadmin. Trong phần này, chúng ta sẽ tìm hiểu thêm một bản ghi thông qua dữ liệu bổ sung từ FORM

Create a FORM input data

Trong phần này, chúng ta sẽ tạo một biểu mẫu nhập liệu để thêm bản ghi vào Bảng tin tức. Bảng này chúng ta đã tạo ở bài Cách tạo ứng dụng Web với PHP và CodeIgniter – Phần 3

Sau đây là cấu trúc của bảng tin tức

Tables news. id, tiêu đề, sên & văn bản

  • Tôi. Sẽ được tạo tự động khi chúng ta thêm dữ liệu mới vào bảng. Do đó, bạn không cần thêm dữ liệu từ FORM input;
  • tiêu đề văn bản. Chúng ta cần nhập 2 trường này từ FORM input;
  • sên. Trường này sẽ lấy thông tin từ Model, vì vậy bạn cũng không cần nhập dữ liệu cho trường dữ liệu này;

Create file input cho tin tức (FORM file)

Để tạo một biểu mẫu nhập liệu, cấm tạo tệp mới tạo. php in thư mục ứng dụng/lượt xem/tin tức. Sau đó sao chép đoạn mã dưới đây vào tệp tạo. php

<h2><?php echo $title; ?></h2>

<?php echo validation_errors(); ?>

<?php echo form_open('news/create'); ?>

    <label for="title">Title</label>
    <input type="text" name="title" /><br />

    <label for="text">Text</label>
    <textarea name="text"></textarea><br />

    <input type="submit" name="submit" value="Create news item" />

</form>

Chú ý rằng, bạn đang sử dụng hàm verify_errors để báo cáo các lỗi liên quan đến việc xác thực nội dung dữ liệu. Ngoài ra, chúng ta còn sử dụng hàm form_open để gọi đường dẫn xử lý dữ liệu cho Form nhập liệu này với đường dẫn base_url() được khởi tạo trong tệp application/config/config. php. Đồng thời, thêm trường ngăn chặn CSRF phương thức giúp bạn xử lý dữ liệu đầu vào của bạn một cách an toàn để bảo mật phần mềm

Thêm phương thức khởi tạo trong News controller

Trong phần trước bạn đã tạo tệp Bộ điều khiển tin tức (application/controllers/news. php). Chúng ta cùng xem lại tập tin nội dung này

<?php
class News extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model('news_model');
        $this->load->helper('url_helper');
    }

    public function index()
    {
        $data['news'] = $this->news_model->get_news();
        $data['title'] = 'News archive';


        $this->load->view('news/index', $data);
    }

    public function view($slug = NULL)
    {
        $data['news_item'] = $this->news_model->get_news($slug);

        if (empty($data['news_item'])) {
            show_404();
        }

        $data['title'] = $data['news_item']['title'];

        $this->load->view('news/view', $data);
    }
}

Bây giờ, bạn hay tạo một phương thức khởi động có tên được tạo trong News controller. Content code as after

public function create()
{
    $this->load->helper('form');
    $this->load->library('form_validation');

    $data['title'] = 'Create a news item';

    $this->form_validation->set_rules('title', 'Title', 'required');
    $this->form_validation->set_rules('text', 'Text', 'required');

    if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('templates/header', $data);
        $this->load->view('news/create');
        $this->load->view('templates/footer');

    }
    else
    {
        $this->news_model->set_news();
        $this->load->view('news/success');
    }
}

Sau khi thêm phương thức khởi tạo. Nội dung file News controller (application/controllers/news. php) as after

<?php
class News extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model('news_model');
        $this->load->helper('url_helper');
    }

    public function index()
    {
        $data['news'] = $this->news_model->get_news();
        $data['title'] = 'News archive';


        $this->load->view('news/index', $data);
    }

    public function view($slug = NULL)
    {
        $data['news_item'] = $this->news_model->get_news($slug);

        if (empty($data['news_item'])) {
            show_404();
        }

        $data['title'] = $data['news_item']['title'];

        $this->load->view('news/view', $data);
    }

    public function create()
    {
        $this->load->helper('form');
        $this->load->library('form_validation');

        $data['title'] = 'Create a news item';

        $this->form_validation->set_rules('title', 'Title', 'required');
        $this->form_validation->set_rules('text', 'Text', 'required');

        if ($this->form_validation->run() === FALSE) {
            $this->load->view('news/create', $data);
        } else {
            $this->news_model->set_news();
            $this->load->view('news/success');
        }
    }
}

Trong Trình điều khiển tin tức, chúng tôi tải vào 02 trình trợ giúp biểu mẫu thư viện và xác thực biểu mẫu. Với Trình trợ giúp biểu mẫu giúp chúng ta tạo một biểu mẫu nhập dữ liệu trong khi tạo tệp. php mà chúng ta tạo ở trên (application/views/news/create. php). Thư viện Form Validation sẽ thực hiện xác nhận biểu mẫu của chúng tôi

Với Xác thực mẫu thư viện, chúng ta chỉ cần đặt các quy tắc xác thực cho biểu mẫu. Trong đoạn mã trên, chúng ta đang sử dụng hàm set_rules để đặt quy tắc bắt buộc đối với các trường tiêu đề và nội dung trong biểu mẫu nhập liệu

Tiếp theo, nếu tất cả các quy tắc đều vượt qua. Chúng ta sẽ gọi phương thức set_news từ News model. Chúng ta sẽ tạo phương thức set_news tại thời điểm này. Sau đó chúng ta sẽ tạo một thông báo thành công trên trình duyệt. Giờ chúng ta đi tạo thông báo đó

Tạo một trang thông báo thành công

Tạo tệp thành công. php in thư mục ứng dụng/lượt xem/tin tức. Và viết nội dung thông báo thành công trong tập tin này. Tại đây, tôi thêm dòng “Một Tin mới được thêm. ”

Add an new method set_news into News model of you

Ở phần trước, bạn có một tệp Mô hình tin tức với nội dung sau

<?php
class News_model extends CI_Model
{

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

    public function get_news($slug = FALSE)
    {
        if ($slug === FALSE) {
            $query = $this->db->get('news');
            return $query->result_array();
        }

        $query = $this->db->get_where('news', array('slug' => $slug));
        return $query->row_array();
    }
}

Bây giờ, bạn hãy thêm một mã phương thức set_news giống đoạn mã dưới đây vào mô hình Tin tức (application/models/News_model. php)

public function set_news()
{
    $this->load->helper('url');

    $slug = url_title($this->input->post('title'), 'dash', TRUE);

    $data = array(
        'title' => $this->input->post('title'),
        'slug' => $slug,
        'text' => $this->input->post('text')
    );

    return $this->db->insert('news', $data);
}

Lưu ý. Chúng ta phải tải thư viện  trợ giúp URL để sử dụng phương thức  url_title để lấy $slug từ tiêu đề dữ liệu

Tiếp theo, chúng ta đưa toàn bộ dữ liệu cần ghi vào cơ sở dữ liệu vào một mảng có tên là $data

Chúng ta sử dụng phương thức post() trong thư viện input library. Để đảm bảo dữ liệu của bạn được làm sạch và bảo vệ bạn khỏi các cuộc tấn công của tin tặc. Thư viện Thư viện đầu vào được tải vào một định dạng mặc định nên bạn không cần phải làm gì nữa

Cuối cùng, chúng ta đưa một mảng dữ liệu $data vào cơ sở dữ liệu thông qua các class Query Builder

Định tuyến (Routing)

Trước khi nhập dữ liệu làm việc vào trang, bạn phải thêm một số nguyên tắc mở rộng vào tệp “application/config/routes. php“

Vui lòng thêm đoạn mã dưới đây vào tệp route. php

// News routing
$route['news/create'] = 'news/create';

// We add these news routing earlier
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';

// default routing
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Attempt add data from new FORM nhé

Bây giờ bạn hãy vào trình duyệt của mình, nhập đường dẫn base_url() của bạn và thêm “chỉ mục. php/news/create”  vào đường dẫn nhé. Đây là hình thức nhập dữ liệu hình ảnh mà tôi tạo ra được

Mysql trong codeigniter
Mysql trong codeigniter

Tổng kết

Trên đây là một loạt hướng dẫn cơ bản để bạn tạo ra một ứng dụng web đơn giản với CodeIgniter và PHP

Nếu bạn theo dõi loạt bài viết về CodeIgniter, bạn sẽ biết được việc xem tất cả các mục tin mới, xem bản tin định dạng mới nhất, thêm dữ liệu cho bản tin và thao tác dữ liệu từ cơ sở dữ liệu bằng các lớp Query Builder