Pada kesempatan kali ini kita akan belajar tentang Cara Membuat Shopping Cart Menggunakan PHP. Shopping Cart merupakan bagian yang tidak terpisahkan pada sebuah website jual beli atau pada sebuah website e-commerce. Dalam shopping cart atau biasa disebut keranjang belanja. Keranjang belanja berfungsi menampung item-item pilihan barang yang akan dibeli oleh user atau pengguna website e-commerce.
Cara Membuat Shopping Cart Menggunakan PHP adalah sebagai berikut langkah-langkahnya:
Pertama-tama coba sahabat membuat database kemudian membuat tabel-tabel seperti tampilan dibawah ini:

Berikut ini adalah detail field yang ada pada tabel-tabel diatas



Jika sudah selanjutnya membuat koneksi ke database seperti code dibawah ini:
Config.php
<?php
// membuat konfigurasi koneksi database
$dbHost = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "belajar-php";
// membuat koneksi ke database
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
// melakukan pengecekan koneksi
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
Jika sudah selanjutnya sahabat bisa menambahkan beberapa data ke dalam tabel product agar bisa ditampilkan.
langkah selanjutnya buat file index.php seperti code berikut ini:
<?php
// Initialisasi shopping cart class
include_once 'Cart.php';
$cart = new Cart;
// Include koneksi database di file config
require_once 'Config.php';
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Membuat Shopping Cart Menggunakan PHP</title>
<meta charset="utf-8">
<!-- Bootstrap core CSS -->
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom style -->
<link href="style.css" rel="stylesheet">
<!-- Fontawesome Icon -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.css">
</head>
</head>
<body>
<div class="container">
<h1>PRODUCTS</h1>
<!-- keranjang belanja -->
<div class="cart-view">
<a href="View_cart.php" title="View Cart"><i class="fas fa-shopping-cart"></i> (<?php echo ($cart->total_items() > 0)?$cart->total_items().' Items':'Empty'; ?>)</a>
</div>
<!-- Product list -->
<div class="row col-lg-12">
<?php
// ambil data products from database
$result = $db->query("SELECT * FROM art_products ORDER BY id DESC LIMIT 10");
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
?>
<div class="card col-lg-4 mr-2">
<div class="card-body">
<h5 class="card-title"><?php echo $row["name"]; ?></h5>
<h6 class="card-subtitle mb-2 text-muted"><?php echo 'Rp. '.number_format($row["price"],0, '.','.'); ?></h6>
<small class="card-text"><?php echo $row["description"]; ?></small>
<a href="cartAction.php?action=addToCart&id=<?php echo $row["id"]; ?>" class="btn btn-primary mt-2">Add to Cart</a>
</div>
</div>
<?php } }else{ ?>
<p>Product sedang tidak tersedia.....</p>
<?php } ?>
</div>
</div>
</body>
</html>
Pada file index.php, dapat dilihat ada perintah query untuk menampilkan data yang berasal dari tabel product. Jadi jika ditampilan pada browser maka akan seperti berikut ini:
Baiklah langkah berikutnya kita harus membuat sebuah Class Cart, untuk library cart yang akan berisi beberapa function.
<?php
// Membuat session
if(!session_id()){
session_start();
}
class Cart {
protected $cart_contents = array();
public function __construct(){
// mendapatkan nilai pada cart berbentuk array menangkap dari sebuah session
$this->cart_contents = !empty($_SESSION['cart_contents'])?$_SESSION['cart_contents']:NULL;
if ($this->cart_contents === NULL){
// mengatur value awal = 0
$this->cart_contents = array('cart_total' => 0, 'total_items' => 0);
}
}
/* isi di keranjang : mengembalikan array pada cart */
public function contents(){
// utk mengatur ulang nilai pada isi cart
$cart = array_reverse($this->cart_contents);
// menghapus nilai supaya tidak terjadi kesalahan saat menampilkan kembali
unset($cart['total_items']);
unset($cart['cart_total']);
return $cart;
}
public function get_item($row_id){
return (in_array($row_id, array('total_items', 'cart_total'), TRUE) OR ! isset($this->cart_contents[$row_id]))
? FALSE
: $this->cart_contents[$row_id];
}
public function total_items(){
return $this->cart_contents['total_items'];
}
public function total(){
return $this->cart_contents['cart_total'];
}
public function insert($item = array()){
if(!is_array($item) OR count($item) === 0){
return FALSE;
}else{
if(!isset($item['id'], $item['name'], $item['price'], $item['qty'])){
return FALSE;
}else{
$item['qty'] = (float) $item['qty'];
if($item['qty'] == 0){
return FALSE;
}
$item['price'] = (float) $item['price'];
$rowid = md5($item['id']);
$old_qty = isset($this->cart_contents[$rowid]['qty']) ? (int) $this->cart_contents[$rowid]['qty'] : 0;
$item['rowid'] = $rowid;
$item['qty'] += $old_qty;
$this->cart_contents[$rowid] = $item;
if($this->save_cart()){
return isset($rowid) ? $rowid : TRUE;
}else{
return FALSE;
}
}
}
}
public function update($item = array()){
if (!is_array($item) OR count($item) === 0){
return FALSE;
}else{
if (!isset($item['rowid'], $this->cart_contents[$item['rowid']])){
return FALSE;
}else{
// prep the quantity
if(isset($item['qty'])){
$item['qty'] = (float) $item['qty'];
// remove the item from the cart, if quantity is zero
if ($item['qty'] == 0){
unset($this->cart_contents[$item['rowid']]);
return TRUE;
}
}
$keys = array_intersect(array_keys($this->cart_contents[$item['rowid']]), array_keys($item));
if(isset($item['price'])){
$item['price'] = (float) $item['price'];
}
foreach(array_diff($keys, array('id', 'name')) as $key){
$this->cart_contents[$item['rowid']][$key] = $item[$key];
}
$this->save_cart();
return TRUE;
}
}
}
protected function save_cart(){
$this->cart_contents['total_items'] = $this->cart_contents['cart_total'] = 0;
foreach ($this->cart_contents as $key => $val){
if(!is_array($val) OR !isset($val['price'], $val['qty'])){
continue;
}
$this->cart_contents['cart_total'] += ($val['price'] * $val['qty']);
$this->cart_contents['total_items'] += $val['qty'];
$this->cart_contents[$key]['subtotal'] = ($this->cart_contents[$key]['price'] * $this->cart_contents[$key]['qty']);
}
if(count($this->cart_contents) <= 2){
unset($_SESSION['cart_contents']);
return FALSE;
}else{
$_SESSION['cart_contents'] = $this->cart_contents;
return TRUE;
}
}
public function remove($row_id){
unset($this->cart_contents[$row_id]);
$this->save_cart();
return TRUE;
}
public function destroy(){
$this->cart_contents = array('cart_total' => 0, 'total_items' => 0);
unset($_SESSION['cart_contents']);
}
}
Saya kira cukup dalam pembahasan tentang Cara Membuat Shopping Cart Menggunakan PHP. Dan akan kita lanjutkan pada artikel selanjutnya.
terima kasih