Membuat Shopping Cart Dengan CodeIgniter

Membuat shopping cart tidaklah begitu sulit, terlebih jika anda menggunakan framework CodeIgniter.

CodeIgniter telah menyediakan suatu pustaka untuk mempermudah anda membuat shopping cart.


Mari kita membuat shopping cart dengan CodeIgniter.

Langkah awal membuat Database dan kita lanjutkan membuat table sederhana untuk menampung barang yang akan kita jual.

CREATE TABLE `products` (
    `id` int NOT NULL AUTO_INCREMENT,
    `name` varchar(100) NOT NULL,
    `price` int NOT NULL,
    PRIMARY KEY  (`id`)
);

dan isi sebagian data untuk apliaksi


INSERT INTO products` (`id` ,`name` ,`price`)
VALUES 
(NULL , 'ayam goreng', '8000'),
(NULL , 'bebek panggang', '12000');

Sebelum memulai aplikasi ini, ada beberapa konfigurasi yang harus kita ubah dalam CodeIgniter.


Konfigurasi database (config/database.php)

$db['default']['hostname'] = "localhost";  
$db['default']['username'] = "root";  
$db['default']['password'] = "";  
$db['default']['database'] = "sesuaiNamaDatabaseAnda";  
$db['default']['dbdriver'] = "mysql";

Konfigurasi aplikasi (config/config.php)
Ubah base url ini ke localhost atau url yang anda inginkan.
Konfigurasi aplikasi (config/config.php)

Ubah base url ini ke localhost atau url yang anda inginkan.

$config['base_url'] = "http://localhost/NamaAplikasi/";


Konfigurasi autoload (config/autoload.php)
Untuk pustaka yang sering kita pakai, pastikan dimasukan secara auto.


$autoload['libraries'] = array('cart', 'database');


Juga helper yang sering kita pakai, untuk contoh ini adalah URL helper.

$autoload['helper'] = array('url');

Model
didalam folder Model buatlah kode seperti dibawah ini

<?php   
 
class Model_Product extends Model {
 
    function get_all($limit = NULL, $offset = NULL) {  
        $query = $this->db->get('products', $limit, $offset); 
        return $query->result();
    }             
 
    function get($id) {
        $query = $this->db->get_where('products', array('id'=>$id)); 
        return $query->row();
    }  
}
controller
Pertama kita membuat controller product yang berfungsi untuk menampilkan daftar barang yang sedang dijual dan beri nama product.php

<?php
 
class Products extends Controller {
 
    function Products() {
        parent::Controller();
        $this->load->model('model_product');
    }
 
    function index() {
 
        $data['product_list'] = $this->model_product->get_all(); 
        $this->load->view('product/index', $data);

    }
}


Controller cart berfungsi untuk menambahkan product ke dalam cart, dan menampilkan isi cart tersebut. dan beri nama cart.php

<?php
 
class Cart extends Controller {
 
    function Cart() {
        parent::Controller();
        $this->load->model('model_product');
    }
 
    function add($id) {
        $product = $this->model_product->get($id);
 
        $data = array(
            'id'      => $product->id,
            'qty'     => 1,
            'price'   => $product->price,
            'name'    => $product->name,
        );
        $this->cart->insert($data);
        redirect("cart");
    }
 
    function index($offset = 0) {
 
        $data['cart_list'] = $this->cart->contents();        
        $this->load->view('cart/index', $data);
    }
}

View

Ada dua view yang harus kita buat, yaitu view untuk menampilkan daftar barang yang dijual dan view untuk menampilkan barang yang ada di shopping cart.

Berikut view untuk menampilkan daftar barang 

<html>
    <head>
        <title>Membuat Shopping Cart Dengan CodeIgniter</html>    
    </head>
 
    <h1>Daftar barang </h1>
    <? if (!empty($product_list)): ?>
    <ul>
        <? foreach($product_list as $product): ?>
        <li>
        <? echo $product->name ?> (<? echo $product->price ?>) - 
        <a href='<? echo site_url("cart/add/$product->id") ?>' >beli</a>
        </li>
        <? endforeach ?>
    </ul>
    <? else : ?>
    <p>Produk kosong.</p>
    <? endif ?>
</html>

Berikut view untuk menampilkan daftar barang dalam shopping cart cart.php

<html>
    <head>
        <title>Membuat Shopping Cart Dengan CodeIgniter</html>    
        <style>
        .number {
            text-align:right;
        }
        </style>
    </head>
    <h1>Shopping cart anda</h1>
    <? if (!empty($cart_list)): ?>
    <table>
        <tr>
            <th>Jumlah</th>
            <th>Nama barang</th>
            <th>Harga</th>
            <th>Jumlah</th>
        </tr>
        <? foreach($cart_list as $product): ?>
        <tr>
            <td class="number"><? echo $product['qty'] ?></td>
            <td><? echo $product['name'] ?></td>
            <td class="number"><? echo $product['price'] ?></td>
            <td class="number"><? echo $product['qty'] * $product['price'] ?></td>
        </tr>
        <? endforeach ?>
        <tr>
            <td colspan="3">Total</td>
            <td class="number"><?= $this->cart->total(); ?></td>
        </tr>
    </table>
    <? else : ?>
    <p>Produk kosong.</p>
    <? endif ?>
    <a href="<? echo site_url('products') ?>">Kembali</a>
</html>

Comments