14. Kasus 7. Membuat Shopping Cart Sederhana

Jika anda ingin membangun toko online, salah satu fitur yang hampir pasti ada yaitu shopping cart (keranjang belanja). Membuat shopping cart tidaklah begitu sulit, terlebih jika anda menggunakan framework CodeIgniter. CodeIgniter telah menyediakan suatu library/pustaka untuk mempermudah anda membuat shopping cart.

Library cart membutuhkan library session, tetapi kita tidak perlu meload library tersebut secara manual. Untuk menggunakannya anda bisa memanggil dengan library loader atau menambahkannya di konfigurasi autoload


$this->load->library(‘cart’);


Penggunaannya juga tidak sulit, untuk menambah item di cart kita bisa menggunakan fungsi insert seperti berikut ini


$data = array(
‘id’      => ‘sku_123ABC’,
‘qty’     => 1,
‘price’   => 39.95,
‘name’    => ‘T-Shirt’,
‘options’ => array(‘Size’ => ‘L’, ‘Color’ => ‘Red’)
);

$this->cart->insert($data);


 

Untuk studi kasus ini, kita akan mengkombinasikannya dengan pemilihan produk dimana produkproduk tersebut telah disimpan didalam database. Adapun langkah-langkah yang dilakukan adalah

1. Membuat database produk 

Ketika kita menggunakan shopping chart tentunya akan ada produk yang akan kita jual. Kita akan mengunakan produk yang sangat sederhana pada contoh kasus ini. Sebuah produk hanya memiliki Id, nama produk dan harga.


CREATE TABLE `products` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`price` int NOT NULL,
PRIMARY KEY  (`id`)
);
INSERT INTO `products` (`id`, `name`, `price`) VALUES
(1, ‘Baju Batman’, 30000),
(2, ‘Mouse Wireless’, 434444),

(3, ‘Tas Ransel’, 2344),
(4, ‘Kasur Busa’, 3453);


2. Mengkonfigurasi Codeigniter

Kita harus mengkonfigurasi codeigniter terutama di  bagian database karena kita akan menggunakan database pada aplikasi ini. Oleh karena itu kita harus mengubah file application /configs/database.php


$db[‘default’][‘hostname’] = “localhost”;
$db[‘default’][‘username’] = “root”;
$db[‘default’][‘password’] = “root”;
$db[‘default’][‘database’] = “shop “;
$db[‘default’][‘dbdriver’] = “mysql”;


Selain konfigurasi database kita juga mengset konfigurasi base_url di application/configs/config.php


$config[‘base_url’] = “http://localhost/shopping_cart/”;


3. Membuat Model Produk 

Model product mempunyai 2 fungsi yaitu untuk mengambil seluruh data barang, dan fungsi untuk mengambil data barang tertentu sesuai dengan id yang diinginkan


1. <?php
2.
3. class Product_model extends CI_Model {
4.
5.    function __construct()
6.    {
7.        parent::__construct();
8.    }
9.
10.    function get_all($limit = NULL, $offset = NULL) {
11.        $query = $this->db->get(‘products’, $limit, $offset);
12.        return $query->result();
13.    }
14.
15.    function get($id) {
16.        $query = $this->db->get_where(‘products’, array(‘id’=>$id));
17.        return $query->row();
18.    }
19. }
20.


Model ini hanya digunakan untuk menampilkan infomasi produk yang dijual.

4. Membuat Controller Produk dan Cart

Setelah membuat model maka kita akan membuat dua buah controller yang akan menghandle penampilan produk dan keranjang belanja. Adapun controller pertama adalah controller produk. Controller ini akan menampilkan semua produk yang ada didalam database


1. <?php if ( ! defined(‘BASEPATH’)) exit(‘No direct script access
allowed’);
2.
3. class Produk extends CI_Controller {
4.
5.    function __construct()
6.    {
7.        parent::__construct();
8.    }
9.
10.    function index()
11.    {
12.        $this->load->library(‘template’);
13.        $this->load->model(‘product_model’,’product’,true);
14.        $data[‘product_list’] = $this->product->get_all();
15.        $this->template->display(‘product’, $data);
16.    }
17. }
18.
19. /* End of file Product.php */
20. /* Location: ./application/controllers/Product.php */


Kita dapat memilih produk-produk tadi, lalu memasukkannya kedalam keranjang belanja. Setelah itu maka kita harus mempunyai controller lain untuk menghandle keranjang belanja. Ada tiga fungsi utama pada kelas ini yaitu menampilkan, menambah serta merubah keranjang belanja. Untuk menghapus tinggal mengisikan jumlah barang yang dibeli sebanyak 0. Adapun isi dari kontroller tersebut adalah :


1. <?php if ( ! defined(‘BASEPATH’)) exit(‘No direct script access
allowed’);
2.
3. class Cart extends CI_Controller {
4.
5.    function __construct()
6.    {
7.        parent::__construct();
8.        $this->load->model(‘product_model’,’product’,true);
9.        $this->load->library(‘cart’);
10.        $this->load->library(‘template’);
11.    }
12.
13.    function add($id) {
14.        $product = $this->product->get($id);
15.
16.        $data = array(
17.            ‘id’      => $product->id,
18.            ‘qty’     => 1,
19.            ‘price’   => $product->price,

20.            ‘name’    => $product->name,
21.        );
22.
23.        $this->cart->insert($data);
24.        redirect(“cart”);
25.    }
26.
27.    function update()
28.    {
29.        $this->cart->update($_POST);
30.        redirect(“cart”);
31.    }
32.
33.    function index() {
34.        $data[‘cart_list’] = $this->cart->contents();
35.        $this->template->display(‘cart’, $data);
36.    }
37.
38. }
39.
40. /* End of file Cart.php */
41. /* Location: ./application/controllers/Cart.php */


Perhatikan baris 16-23, disana kita akan memasukkan data produk. Adapun field-field data product yang dapat dimasukaan kedalam library cart adalah:

  • id – Setiap produk harus memiliki Id yang unik antara satu dan yang lain.
  • qty – Jumlah barang yang akan dibeli
  • price – Harga dari produk
  • name – Nama produk
  • options – informasi tambahan mengenai produk yang ingin dibeli

Untuk memasukkan data cart anda dapat menggunakan fungsi insert – $this->cart->insert($data); data cart tersebut akan disimpan didalam session codeigniter. Jadi library cart ini membutuhkan depedensi library session.

5. Membuat View shoping cart

Part terakhir adalah membuat view. Anda harus menyediakan dua buah view yaitu view list barang dan view daftar keranjang belanja. Adapun ini view dari daftar produk adalah


1. <h1>Daftar barang </h1>
2. <?php if (!empty($product_list)): ?>
3. <ul>
4.    <?php foreach($product_list as $product): ?>
5.    <li>
6.     <?php echo $product->name ?> ($ <?php echo $product->price ?>) –

7.     <a href='<?php echo site_url(“cart/add/$product->id”) ?>’
>Beli</a>
8.    </li>
9.    <?php endforeach ?>
10. </ul>
11. <?php else : ?>
12.     <p>Produk kosong.</p>
13. <?php endif ?>


Adapun tampilan dari view diatas adalah sebagai berikut

30

Ketika user mengklik link beli pada list produk maka user akan di redirect ke halaman add item ke shoping cart. Adapun view yang digunakan untuk melihat daftar shopping cart adalah


1. <h1>Shopping cart anda</h1>
2. <?php echo form_open(‘cart/update’); ?>
3.
4. <table cellpadding=”6″ cellspacing=”1″ style=”width:100%” border=”0″>
5.
6. <tr>
7.  <th>QTY</th>
8.  <th>Item Description</th>
9.  <th style=”text-align:right”>Item Price</th>
10.  <th style=”text-align:right”>Sub-Total</th>
11. </tr>
12.
13. <?php $i = 1; ?>
14.
15. <?php foreach($this->cart->contents() as $items): ?>
16.
17.    <?php echo form_hidden($i.'[rowid]’, $items[‘rowid’]); ?>
18.
19.    <tr>
20.      <td><?php echo form_input(array(‘name’ => $i.'[qty]’, ‘value’ =>
21.          $items[‘qty’], ‘maxlength’ => ‘3’, ‘size’ => ‘5’)); ?></td>
22.      <td>
23.        <?php echo $items[‘name’]; ?>
24.
25.        <?php if ($this->cart->has_options($items[‘rowid’]) == TRUE):
?>
26.
27.                <p>

28.   <?php foreach ($this->cart->product_options($items[‘rowid’]) as
29.              $option_name => $option_value): ?>
30.
31.         <strong><?php echo $option_name; ?>:</strong>
32.         <?php echo $option_value; ?><br />
33.
34.        <?php endforeach; ?>
35.         </p>
36.
37.        <?php endif; ?>
38.
39.      </td>
40.      <td style=”text-align:right”>
41.     <?php echo $this->cart->format_number($items[‘price’]); ?></td>
42.      <td style=”text-align:right”>$
43.   <?php echo $this->cart->format_number($items[‘subtotal’]); ?></td>
44.    </tr>
45.
46. <?php $i++; ?>
47.
48. <?php endforeach; ?>
49.
50. <tr>
51.  <td colspan=”2″> </td>
52.  <td class=”right”><strong>Total</strong></td>
53.  <td class=”right”>$
54.   <?php echo $this->cart->format_number($this->cart->total());
?></td>
55. </tr>
56.
57. </table>
58.
59. <p><?php echo form_submit(”, ‘Update your Cart’); ?></p>
60.
61.  <a href=”<?php echo site_url(‘produk’) ?>”>Kembali</a>


Perhatikan baris 15, fungsi $this->cart->contents() digunakan untuk mendapatkan seluruh data cart yang telah disimpan di session. Semua item tadi akan kita simpan juga dalam sebuah inputan yang bersifat hidden sehingga memudahkan kita dalam proses update cart. Selain itu library cart juga sudah dilengkapi dengan fungsi untuk menampilkan jumlah belanja yang telah dilakukan dengan fungsi $this->cart->total();

Adapun tampilan dari view diatas adalah gambar berikut ini.

31

Pada gambar diatas kita dapat mengubah jumlah barang yang dipesan. Subtotal dan total akan otomatis ditambahakan oleh library cart.

 

Sumber : Buku Framework CodeIgniter

2 comments on “14. Kasus 7. Membuat Shopping Cart Sederhana
  1. Mipo Technologi says:

    Misi mau nanya, ada link download yang sudah jadi untuk shopping cart ini nggak? Karena sudah coba tapi masih belum bisa jalan juga. terima kasih

Leave a comment

May 2024
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031  
terbanyak dipilih
  • None