CODEIGNITER 3X
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Bài 18: Tìm Hiểu Library Shopping Cart trong Codeigniter

Chào mừng các bạn đã quay trở lại freetuts.net. Như vậy ở bài trước chúng ta đã tìm hiểu xong cách viết ứng dụng Crud add, edit, delete, tuy bài viết chỉ dừng lại ở mức cơ bản nhưng cũng đủ cho các bạn có cái nhìn tổng quan hơn về codeigniter framework. Hôm nay chúng ta sẽ đi đến một library khá là quan trọng, đó là shopping cart. Vì thư viện Shopping Cart trong Codeigniter được tích hợp sẵn Session nên các bạn phải đặt giá trị cho key encryption_key trong file application/config.php nhé.

Trong Codeigniter Shopping Cart được lưu dưới dạng mảng và được mã hóa để lưu vào Session, mà Session trong codeigniter gắn liền với cookie (cookie lưu được 4Kb) nên bạn không thể lưu với dung lượng lớn được. Chính vì thế ta chỉ có thể lưu id sản phẩm và một số thông tin như giá cả chứ không thể lưu toàn bộ thông tin như hình ảnh, tiêu đề, tóm tắt.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cấu hình library shopping cart:

Muốn thao tác với shopping cart trong codeigniter thì trước tiên phải load nó theo cú pháp:

$this->load->library("cart");

Để tiện trong quá trình viết tuts tôi sẽ load thư viện shopping cart ngay tại hàm khởi tạo của controller.

<?php
class Shop extends CI_Controller{
    public function __construct(){
        parent::__construct();
        $this->load->library("cart");
    }
    
}

Vậy là cấu hình thư viện xong, giờ ta tìm hiểu cách sử dụng nó nhé.

Thêm sản phẩm:

Shopping Cart trong Codeigniter lưu dưới dạng mảng và có những key bắt buộc không được sửa như như id, qty, price, name. Ngoài ra nó còn có thêm key options chứa các thông tin con như size, color của sản phẩm đó nên nếu những key này không giống với database của bạn thì hãy xử lý trước khi insert để đồng bộ. Các bạn xem đoạn code dưới đây:

 public function insert(){
        $data=array(
            "id" => "1",
            "name" => "Viet Nam Khong So Trung Quoc",
            "qty" => "1",
            "price" => "100000",
            "option" => array("author" => "freetuts.net"),
        );
        // Them san pham vao gio hang
        if($this->cart->insert($data)){
             echo "Them san pham thanh cong";
        }else{
            echo "Them san pham that bai";
        }
       
}

Trong đoạn code này tôi đã khởi tạo một sản phẩm mới chứa trong mảng $data. Sau đó sử dụng hàm insert của thư viện Shopping Cart để tiến hành thêm sản phẩm vào. Các bạn hãy chạy code và sẽ thấy kết quả thành công hay thất bại.

Show danh sách sản phẩm:

Trong đoạn code show danh sách sản phẩm.Tôi dùng hàm contents trong thư viện shopping cart để tiến hành xem toàn bộ thông tin sản phẩm.

 public function show(){
        //Show thong tin chi tiet gio hang
        $data=$this->cart->contents();
        echo "<pre>";
        print_r($data);
        echo "</pre>";
}


Nếu kết quả như hình xem như chúng ta bước đầu tiếp cận được thao tác insert sản phẩm.

Xóa một sản phẩm:

Muốn xóa một sản phẩm thì chúng ta phải biết được cái rowid của sản phẩm đó. Khi các bạn insert sản phẩm thì trường rowid tự động phát sinh ra, trường này có nhiệm vụ giúp chúng ta phân biệt từng sản phẩm một cách toàn diện.

Muốn có được giá trị rowid thì chúng ta bắt buộc phải sử dụng vòng lặp foreach để xuất dữ liệu. Và có thể xóa được một sản phẩm thì trước tiên chúng ta cần phải có hơn một sản phẩm trong giỏ hàng.

Chúng ta có đoạn code insert mới như sau.

public function insert(){
        $data = array(
            array(
                'id' => '1',
                'name' => 'Viet Nam Khong So Trung Quoc',
                'price' => '10000',
                'qty'   => '1',
                'options' => array('author' =>  'freetuts.net')  
            ),
            array(
                'id' => '2',
                'name' => 'Trung Quoc Vi Pham Chu Quyen Viet Nam',
                'price' => '20000',
                'qty'   => '1',
                'options' => array('author' =>  'freetuts.net')
            ),
            array(
                'id' => '3',
                'name' => 'Tau Trung Quoc Lien Tuc Dam vao Tau Viet Nam',
                'price' => '30000',
                'qty'   => '1',
                'options' => array('author' =>  'freetuts.net')
            ),
            
        );
        // Them san pham vao gio hang
        if($this->cart->insert($data)){
             echo "Them san pham thanh cong";
        }else{
            echo "Them san pham that bai";
        }
       
}

Kết quả:

Array
(
    [c4ca4238a0b923820dcc509a6f75849b] => Array
        (
            [rowid] => c4ca4238a0b923820dcc509a6f75849b
            [id] => 1
            [name] => Viet Nam Khong So Trung Quoc
            [qty] => 1
            [price] => 100000
            [option] => Array
                (
                    [author] => freetuts.net
                )

            [subtotal] => 100000
        )

    [fbc6319f8c21a565917b59536f5d803a] => Array
        (
            [rowid] => fbc6319f8c21a565917b59536f5d803a
            [id] => 1
            [name] => Viet Nam Khong So Trung Quoc
            [price] => 10000
            [qty] => 1
            [options] => Array
                (
                    [author] => freetuts.net
                )

            [subtotal] => 10000
        )

    [72ea95e2650aca6c0707014d757b7ce4] => Array
        (
            [rowid] => 72ea95e2650aca6c0707014d757b7ce4
            [id] => 2
            [name] => Trung Quoc Vi Pham Chu Quyen Viet Nam
            [price] => 20000
            [qty] => 1
            [options] => Array
                (
                    [author] => freetuts.net
                )

            [subtotal] => 20000
        )

    [9acc658922ae3040b17a5ddaf35a4dbf] => Array
        (
            [rowid] => 9acc658922ae3040b17a5ddaf35a4dbf
            [id] => 3
            [name] => Tau Trung Quoc Lien Tuc Dam vao Tau Viet Nam
            [price] => 30000
            [qty] => 1
            [options] => Array
                (
                    [author] => freetuts.net
                )

            [subtotal] => 30000
        )

)

Để xóa sản phẩm nào thì ta thiết lập qty = 0, ví dụ tôi muốn xóa sản phẩm có id là 1 thì việc trước tiên tôi phải lấy được rowid của sản phẩm đó bằng cách sử dụng vòng lặp foreach để lấy giá trị rowid. Sau đó trường rowid sẽ ứng với phần tử rowid mà chúng ta vừa lấy được.

Các bạn xem đoạn code xóa một sản phẩm.

public function deleteOne(){
       $data=$this->cart->contents();
        foreach($data as $item){
            if($item['id'] == "1"){
                $item['qty'] = 0;
                $delOne = array("rowid" => $item['rowid'], "qty" => $item['qty']);
            }
        }
        if($this->cart->update($delOne)){
            echo "Xoa san pham thanh cong";
        }else{
            echo "Xoa san pham that bai";
        }
 }

Xóa hết sản phẩm:

Hàm xóa hết sản phẩm của Shopping Cart trong codeigniter giống với hàm hủy toàn bộ session. Tôi dùng hàm destroy để xóa hết toàn bộ sản phẩm tồn tại trong giỏ hàng.

public function del(){
        $this->cart->destroy();
        echo "Done";
 }

Cập nhật sản phẩm:

Giống như thao tác xóa một sản phẩm thì để có thể cập nhật một sản phẩm thì chúng ta cần phải có được rowid của sản phẩm đó. rowid giúp chúng ta xác định 9 xác sản phẩm cần cập nhật.

Để cập nhật sản phẩm có id là 2 thì chúng ta sẽ thiết lập qty cho nó lớn hơn 0 , trường rowid sẽ nhận lấy giá trị phần tử rowid mà chúng ta vừa lấy được thông qua vòng lặp.

Các bạn xem đoạn code cập nhật sản phẩm.

public function update(){
        $data=$this->cart->contents();
        foreach($data as $item){
            if($item['id'] == "2"){
                $item['qty'] = 10;
                $update = array("rowid" => $item['rowid'], "qty" => $item['qty']);
            }
        }
        if($this->cart->update($update)){
            echo "Update san pham thanh cong";
        }else{
            echo "Update san pham that bai";
        }
}

Các hàm khác:

Hàm đếm tổng số sản phẩm trong giỏ hàng là hàm total_items.

 public function total(){
        echo 'Hien tai co '.$this->cart->total_items().' san pham trong gio hang';
 }


Hàm đêm tống số tiền có trong giỏ hàng là hàm total.

 public function totalmoney(){
          echo 'Tong tien '.$this->cart->total().'$ trong gio hang';
}


Hàm has_options(key) dùng để kiểm tra rowid có tồn tại hay không nếu tồn tại mới lấy được các thông số ở bên trong. Hàm này thường được dùng chung với hàm product_options(key) có nhiệm vụ lấy ra các giá trị bên trong trường options. Cả 2 hàm đều phải thông qua vòng lặp foreach mới xuất dữ liệu đươc.

public function product(){
        $data=$this->cart->contents();
        foreach($data as $item){
            if($this->cart->has_options($item['rowid'])){
                foreach($this->cart->product_options($item['rowid']) as $option_name => $option_value){
                    echo "<b>$option_name</b>: $option_value</br />";
                }
            }
        }
}

Kết thúc bài học:

Thông qua bài viết này hy vọng các bạn có thể phần nào nắm được các thao tác cơ bản trong việc sử dụng library shopping cart thao tác thêm, cập nhật sản phẩm.Tuy nó có rất nhiều nhược điểm nhưng nếu các bạn chỉ dùng để xây dựng các website có quy mô nhỏ & vừa thì nó hoàn toàn đáp ứng được hết nhé .Ở bài tiếp theo chúng ta sẽ tìm hiểu thao tác csdl trong shopping cart nó ra sao. Chào thân ái và quyết thắng.

Cùng chuyên mục:

Chia sẻ theme web blog mobile đơn giản (Theme FMB1)

Chia sẻ theme web blog mobile đơn giản (Theme FMB1)

Freetuts Mobile Blog được code trên nền tảng PHP và MySQL, sử dụng Codeigniter Framework.

Bài 19: Rewrite URL trong Codeigniter

Bài 19: Rewrite URL trong Codeigniter

Sau một khoảng thời gian không đụng tới Codeigniter thì hôm nay lại có dịp…

Tìm hiểu quy trình load model trong codeigniter

Tìm hiểu quy trình load model trong codeigniter

Việc load model rất quen thuộc với những bạn sử dụng framwork codeigniter nhưng đôi…

Tự tạo thư viện load widget trong codeigniter

Tự tạo thư viện load widget trong codeigniter

Như các bạn biết mặc định hệ thống của Codeigniter hoạt động theo mô hình…

Hướng dẫn custom bộ core codeigniter

Hướng dẫn custom bộ core codeigniter

Có khi nào bạn đặt câu hỏi có nên sửa các file nằm trong bộ…

Bài 17: Xây dựng crud add - update - edit user

Bài 17: Xây dựng crud add - update - edit user

Crud là một thuật ngữ không hề xa lạ với dân lập trình, nó là…

Bài 16: Kỹ thuật master layout trong codeigniter

Bài 16: Kỹ thuật master layout trong codeigniter

Đây là một vấn đề mở rộng mà CI không đề cập trong user guide,…

Bài 15: Tìm Hiểu Helper Language Trong Codeigniter

Bài 15: Tìm Hiểu Helper Language Trong Codeigniter

Trong bài viết này , chúng ta chỉ tìm hiểu ở khái niệm cơ bản…

Bài 14: Tìm Hiểu Helper Text Trong Codeigniter

Bài 14: Tìm Hiểu Helper Text Trong Codeigniter

Nhìn tiêu đề, hẳn các bạn đã đoán ra hôm nay chúng ta sẽ tìm…

Bài 13: Tìm Hiểu Helper Date Trong Codeigniter

Bài 13: Tìm Hiểu Helper Date Trong Codeigniter

Hôm nay chúng ta sẽ tiếp tục tìm hiểu sâu hơn về các helper mà…

Bài 12: Đóng dấu watermark image trong codeigniter

Bài 12: Đóng dấu watermark image trong codeigniter

Đầu tiên xin gửi lời cảm ơn các bạn đã quan tâm và theo dõi…

Bài 11: Tìm Hiểu Library Image Trong Codeigniter

Bài 11: Tìm Hiểu Library Image Trong Codeigniter

Kết thúc bài trước, chúng ta đã hoàn thành khá xuất sắc phần upload hình…

Bài 10: Tìm hiểu library upload trong codeigniter

Bài 10: Tìm hiểu library upload trong codeigniter

Chào mừng các bạn đã quay trở lại freetuts.net, đã lâu rồi tôi không viết…

Bài 9: Tìm Hiểu Library Form Validation

Bài 9: Tìm Hiểu Library Form Validation

Cho tới bài viết này, chắc hẵn các bạn đều đã biết rõ cách load…

Bài 8: Tìm hiểu Helper Url Và Form Trong Codeigniter

Bài 8: Tìm hiểu Helper Url Và Form Trong Codeigniter

Trong Codeigniter Framework nó chia ra 2 khái niệm đó là helper & library, vậy…

Bài 7: Load Library Pagination Trong Codeigniter

Bài 7: Load Library Pagination Trong Codeigniter

Đây là một library cũng khá là phổ biến, hay được sử dụng trong quá…

Bài 6: Load Library Database Trong Codeigniter

Bài 6: Load Library Database Trong Codeigniter

Tôi sẽ không giới thiệu về library này mà sẽ xoáy sâu vào các thao…

Bài 5: Load Library Session Trong Codeigniter

Bài 5: Load Library Session Trong Codeigniter

Đây là một thư viện khá là quan trọng , trong framework CI (Codeigniter) .…

Bài 4: Load Model Trong Codeigniter

Bài 4: Load Model Trong Codeigniter

Trong Codeigniter để kết nối với Database chúng ta phải cấu hình thông tin cho…

Bài 3: Load View Trong Codeigniter

Bài 3: Load View Trong Codeigniter

Trong Codeigniter tất cả các Views đều được đặt trong thư mục application/views. Các bạn…

Top