/ / Codeigniter / Comment (0)

Library Shopping Cart trong Codeigniter

Như ở bài trước mình đã hướng dẫn các bạn tìm hiểu về thư viện upload và thực hiện chức năng upload nhiều file trong CodeIgniter.Sang bài này mình sẽ hướng dẫn cho các bạn 1 thư viện nữa đó chính là thư viện giỏ hàng (Cart).Đây là thư viện rất quan trọng nếu như bạn đang làm 1 website bán sản phẩm,và đây là chức năng không thể nào thiếu được trong 1 website bán hàng.
– Thư viện cart trong Codeigniter cho phép chúng ta có thể lưu các sản phẩm vào trong giỏ hàng 1 cách dễ dàng.
– 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é.

Sử dụng library cart

– Cũng như các thư viện khác trong CodeIgniter,các bạn muốn sử dụng thư viện nào thì phải load thư viện đó ra:

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

Thông tin giỏ hàng

– Các thông tin cần lưu sản phẩm trong giỏ hàng là:

  1. id : Khóa chính của sản phẩm
  2. qty: Số lượng sản phẩm thêm vào giỏ
  3. price: Giá sản phẩm
  4. name: Tên sản phẩm

Và thông tin lưu vào trong giỏ hàng sẽ phải lưu dưới dạng mảng, ví dụ:

$cart = array('id'    => 8,
              'qty'   => 1,
              'price' => 50000,     
              'name'  => 'san pham 01'                        
        );

Các phương thức trong thư viện Cart

– Phương thức insert() thêm sản phẩm vào giỏ hàng,ví dụ:

     /*
     * Phuong thuc them san pham vao gio hang
     */
     public function add()
     {
         //du lieu luu vao gio hang
        $cart = array(
                     array ('id'    => 8,
                            'qty'   => 1,
                            'price' => 50000,      
                            'name'  => 'san pham 01') ,
                     array ('id'    => 9,
                            'qty'   => 2,
                            'price' => 60000,      
                            'name'  => 'san pham 02')                        
        );
        //goi phương thức thêm vào giỏ hàng
        $this->cart->insert($cart);
     }

Trong đó thì $cart chính là mảng các thông tin cần lưu trong giỏ hàng

– Phương thức contents() Lấy toàn bộ dữ liệu trong giỏ hàng,Ví dụ:

$cart = $this->cart->contents();
print_r($cart);

Sau khi thực hiện thêm sản phẩm vào giỏ hàng như ví dụ ở trên,ta sẽ lấy toàn bộ thông tin trong giỏ hàng thông qua phương thức contents() và kết quả sẽ như sau:

Array
(
    [c9f0f895fb98ab9159f51fd0297e236d] => Array
        (
            [rowid] => c9f0f895fb98ab9159f51fd0297e236d
            [id] => 8
            [qty] => 1
            [price] => 50000
            [name] => san pham 01
            [subtotal] => 50000
        )

    [45c48cce2e2d7fbdea1afc51c7c6ad26] => Array
        (
            [rowid] => 45c48cce2e2d7fbdea1afc51c7c6ad26
            [id] => 9
            [qty] => 2
            [price] => 60000
            [name] => san pham 02
            [subtotal] => 120000
        )

)

Như các bạn thấy ngoài các thông tin chúng ta lưu vào giỏ hàng thì thư viện này còn tự động sinh ra cho chúng ta thêm 2 biến nữa, rowid mỗi 1 sản phẩm khi thêmn vào giỏ hàng sẽ được tự động sinh ra 1 chuỗi mã ngẫu nhiên,subtotal đây chính là tổng số tiền cần thanh toán cho sản phẩm này,biến này sẽ tự động được tính như sau subtotal = qty*price

– Phương thức update() cập nhât giỏ hàng,Ví dụ:

      /*
      * Phuong thuc cap nhat so luong san pham trong gio
      */
     public function update()
     {
         //buoc1: Lay toan bo san pham trong gio hang
         $carts = $this->cart->contents();
         //Bước 2: lay id cua san pham muốn cập nhật
         $id = '8';
         foreach ($carts as $key => $value)
         {
              //Kiểm tra nếu id của sản phẩm trong giỏ hàng = id sản phẩm muốn cập nhật
              if($value['id'] == $id)
              {
                 $data = array(
                       'rowid' => $key,
                       'qty'   => '3'
                 );
                 //cap nhat lai gio hang
                 $this->cart->update($data);
                 break;
              }
         }

     }

Ở ví dụ trên các bạn thấy trong thông tin giỏ hàng có sản phẩm id = 8 và số lượng là 1,bây giờ chúng ta muốn cập nhật cho sản phẩm này có số lượng thành 3,và sau khi cập nhật xong các bạn lại in các thông tin trong giỏ hàng sẽ được như sau:

Array
(
    [c9f0f895fb98ab9159f51fd0297e236d] => Array
        (
            [rowid] => c9f0f895fb98ab9159f51fd0297e236d
            [id] => 8
            [qty] => 3
            [price] => 50000
            [name] => san pham 01
            [subtotal] => 150000
        )

    [45c48cce2e2d7fbdea1afc51c7c6ad26] => Array
        (
            [rowid] => 45c48cce2e2d7fbdea1afc51c7c6ad26
            [id] => 9
            [qty] => 2
            [price] => 60000
            [name] => san pham 02
            [subtotal] => 120000
        )

)

Các bạn đã thấy số lượng sản phẩm có id = 8 đã tăng lên 3 và subtotal cũng tăng theo.Thường chức năng cập nhật giỏ hàng thì chúng ta sẽ tạo ra 1 form cho phép khách hàng ghi số lượng cần cập nhật và submit form để cập nhật số lượng.

– Phương thức destroy() Xóa cả giỏ hàng,Cú pháp:

$this->cart->destroy();

Nếu bạn muốn xóa từng sản phẩm trong giỏ hàng thì chỉ cần cập nhật lại số lượng sản phẩm đó trong giỏ = 0 (qty = 0)
– Vi dụ
+ xóa sản phẩm có id = 8 trong giỏ hàng:

         /*
	 * xoa 1 sản phẩm trong gio hang
	 */
	 public function del()
	 {
	     //Bước 1: lay id cua san pham muốn xóa
	     $id = '8';
	     //buoc2: Lay toan bo san pham trong gio hang
	     $carts = $this->cart->contents();
	     foreach ($carts as $key => $value)
	     {
	     	 //Kiểm tra nếu id của sản phẩm trong giỏ hàng = id sản phẩm muốn xóa
	         if($value['id'] == $id)
	         {
		         $data = array(
		               'rowid' => $key,
		               'qty'   => 0,//cập nhật số lượng = 0
		         );
		         //cap nhat lai gio hang
		         $this->cart->update($data);
		         //thoát khỏi vòng lặp
		         break;
	         }
	     }
	 }

Và cuối cùng chúng ta sẽ xây dựng được 1 file controller cart.php với nội dung như sau:

<?php
class Cart extends MY_Controller
{
     /*
     * Ham khoi tao
     */
	 public function __construct()
	 {
	 	 //ke thua
	     parent::__construct();
	     //load thu vien cart
	     $this->load->library('cart');
	 }

	 /*
	 * Phuong thuc them san pham vao gio hang
	 */
	 public function add()
	 {
	 	//du lieu luu vao gio hang
	    $cart = array(
	                 array ('id'    => 8,
		                    'qty'   => 1,
		                    'price' => 50000,
		                    'name'  => 'san pham 01') ,
	                 array ('id'    => 9,
		                    'qty'   => 2,
		                    'price' => 60000,
		                    'name'  => 'san pham 02')
        );
        //goi phương thức thêm vào giỏ hàng
        $this->cart->insert($cart);
	 }

	 /*
	  * Phuong thức hiển thị danh sách gio hang
	  */
	 public function view()
	 {
	     //buoc1: Lay toan bo san pham trong gio hang
	     $carts = $this->cart->contents();
	     //buoc2: tong so san pham trong gio hang
	     $total = $this->cart->total_items();
	     //in thu cau truc cua gio hang
	     echo 'Tong so san pham tron gio hang la: '.$total;
	     echo "<pre>";
	     print_r($carts);
	     echo "</pre>";
	 }

	 /*
	  * Phuong thuc cap nhat so luong san pham trong gio
	  */
	 public function update()
	 {
	     //buoc1: Lay toan bo san pham trong gio hang
	     $carts = $this->cart->contents();
	     //Bước 2: lay id cua san pham muốn cập nhật
	     $id = '8';
	     foreach ($carts as $key => $value)
	     {
	     	 //Kiểm tra nếu id của sản phẩm trong giỏ hàng = id sản phẩm muốn cập nhật
	     	 if($value['id'] == $id)
	     	 {
		         $data = array(
		               'rowid' => $key,
		               'qty'   => '3'
		         );
		         //cap nhat lai gio hang
		         $this->cart->update($data);
		         break;
	     	 }
	     }

	 }

	 /*
	 * xoa 1 sản phẩm trong gio hang
	 */
	 public function del()
	 {
	     //lay id cua san pham muốn xóa
	     $id = '8';
	     //buoc1: Lay toan bo san pham trong gio hang
	     $carts = $this->cart->contents();
	     foreach ($carts as $key => $value)
	     {
	     	 //Kiểm tra nếu id của sản phẩm trong giỏ hàng = id sản phẩm muốn xóa
	         if($value['id'] == $id)
	         {
		         $data = array(
		               'rowid' => $key,
		               'qty'   => 0,//cập nhật số lượng = 0
		         );
		         //cap nhat lai gio hang
		         $this->cart->update($data);
		         //thoát khỏi vòng lặp
		         break;
	         }
	     }
	 }

	  /*
	  * xoa cả gio hang
	  */
	 public function empty_cart()
	 {
	 	 //hàm xóa cả giỏ hàng
	 	 $this->cart->destroy();
	 }
}

Kết thúc bài viết: Qua bài này các bạn có thể hiểu cách sử dụng thư viện giỏ hàng (Cart) trong CodeIgniter rồi phải không nào.Dựa vào đó các bạn có thể tữ xây dựng cho mình chức năng thêm sản phẩm vào trong giỏ hàng.



06/09/2014
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL