Skip to content

PHP Cart Class untuk WebShop

May 11, 2011

E-CommerceDidalam sebuah webshop atau yang biasa dikenal dengan e-commerce, biasanya akan ada sebuah cart untuk menampung atau menyimpan sementara setiap pesanan yang dibuat oleh pengunjung web.

Apakah pernah terpikir oleh kita, bagaimana cara sebuah web menyimpan setiap pesanan yang kita buat. Apakah pesanan kita itu disimpan ke dalam database? Jika disimpan kedalam database, tentu akan membuat database cepat penuh dan tentunya akses yang berat jika kita akan mengedit (tambah, hapus, ubah qty) pesanan kita.Jadi singkatnya, semua itu menggunakan session. Bagi yang belum mengetahui apa itu session, silahkan buka buku PHP nya dan baca lagi :)

Berikut adalah code cart class untuk memudahkan kita membuat, menghapus, mengedit content cart yang disimpan dalam session.

<?php

/*
Based on WebForceCart
*/

class ShoppingCart {
	var $total = 0;
	var $itemcount = 0;
	var $items = array();
	var $itemprices = array();
	var $itemqtys = array();
	var $iteminfo = array();

// Untuk dapetin content
	function get_contents() {
		$items = array();
		foreach($this->items as $tmp_item)
		{
			$item = FALSE;
			$item['id'] = $tmp_item;
			$item['qty'] = $this->itemqtys[$tmp_item];
			$item['price'] = $this->itemprices[$tmp_item];
			$item['info'] = $this->iteminfo[$tmp_item];
			$item['subtotal'] = $item['qty'] * $item['price'];
			$items[] = $item;
		}
		return $items;
	}

// Contoh : add_item(idproduk, 1, harga, deskripsi barang);
// add_item(10, 1, 50000, "FlashDisk Kingstone");
	function add_item($itemid,$qty=1,$price = FALSE, $info = FALSE)	{
// Gak Penting, selama loe masukin harga dan infonya --<
          if(!$price) {
 		    $price = get_price($itemid,$qty);
 		}
         if(!$info) {
             $info = get_info($itemid);
 		} // >--
		if($this->itemqtys[$itemid] > 0) {
			$this->itemqtys[$itemid] = $qty + $this->itemqtys[$itemid];
			$this->_update_total();
		} else {
			$this->items[]=$itemid;
			$this->itemqtys[$itemid] = $qty;
			$this->itemprices[$itemid] = $price;
			$this->iteminfo[$itemid] = $info;
		}
		$this->_update_total();
	}

//Contoh:  edit_item(10. 2);
	function edit_item($itemid,$qty) {
		if($qty < 1) {
 			$this->del_item($itemid);
		} else {
			$this->itemqtys[$itemid] = $qty;
		}
		$this->_update_total();
	}

// Contoh: del_item(10);
	function del_item($itemid) {
		$ti = array();
		$this->itemqtys[$itemid] = 0;
		foreach($this->items as $item)
		{
			if($item != $itemid)
			{
				$ti[] = $item;
			}
		}
		$this->items = $ti;
		$this->_update_total();
	}

// Buat ngosongin cart... delete abiiiss....
    function empty_cart() {
            $this->total = 0;
	        $this->itemcount = 0;
	        $this->items = array();
	        $this->itemprices = array();
	        $this->itemqtys = array();
	        $this->iteminfo = array();
	}

// update totalnya
	function _update_total() {
	    $this->itemcount = 0;
		$this->total = 0;
		if(sizeof($this->items > 0)) {
                        foreach($this->items as $item) {
                                $this->total = $this->total + ($this->itemprices[$item] * $this->itemqtys[$item]);
				$this->itemcount++;
			}
		}
	}

}

?>

Jangan lupa di phpnya tambahin ini untuk koneksi ke class yang tadi kita buat:

$cart =& $_SESSION['ShoppingCart'];
if(!is_object($cart)) $cart = new ShoppingCart();

Okey, gan…. gw anggap loe semua udah paham…. klo ada pertanyaan, masukkan, atau makian bisa dishare disini…

Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.