PHP MySQL; Membuat Shopping Cart (Keranjang Belanja) dengan Menggunakan Session
41 Balasan
Tampilan Contoh Aplikasi Shopping Cart
Dalam aplikasi e-commerce tentunya terdapat shopping cart. Shopping
cart digunakan untuk menampung sementara dari produk-produk yang akan
dibeli oleh pengunjung situs e-commerce. Dalam tulisan ini akan
menjelaskan secara singkat tentang shopping cart yaitu dengan
menggunakan fasilitas session yang ada dalam PHP dan menggunakan MySQL
untuk menyimpan data secara permanen.1. Perancangan Database
Dalam tulisan ini menggunakan MySQL Workbench untuk merancang database MySQL. Atur rancangan database seperti gambar di bawah ini.
Relasi Antar Tabel
Source code di bawah ini merupakan hasil generated code dari rancangan database di atas.file shoppingcart.sql
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';CREATE SCHEMA IF NOT EXISTS `shoppingcart` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;USE `shoppingcart`;CREATE TABLE IF NOT EXISTS `shoppingcart`.`barang` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `nama` VARCHAR(255) NULL DEFAULT NULL , `deskripsi` TEXT NULL DEFAULT NULL , `gambar` VARCHAR(60) NULL DEFAULT NULL , `hpp` DECIMAL(22,2) NULL DEFAULT NULL , `harga` DECIMAL(22,2) NULL DEFAULT NULL , `waktu_masuk` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , PRIMARY KEY (`id`) )ENGINE = InnoDBDEFAULT CHARACTER SET = latin1COLLATE = latin1_swedish_ci;CREATE TABLE IF NOT EXISTS `shoppingcart`.`pelanggan` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `nama` VARCHAR(60) NULL DEFAULT NULL , `alamat` VARCHAR(255) NULL DEFAULT NULL , `telepon` VARCHAR(20) NULL DEFAULT NULL , `email` VARCHAR(45) NULL DEFAULT NULL , PRIMARY KEY (`id`) )ENGINE = InnoDBDEFAULT CHARACTER SET = latin1COLLATE = latin1_swedish_ci;CREATE TABLE IF NOT EXISTS `shoppingcart`.`penjualan` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `tanggal` DATE NULL DEFAULT NULL , `pelanggan_id` INT(11) NOT NULL , `total` DECIMAL(22,2) NULL DEFAULT NULL , `biaya_pengiriman` DECIMAL(22,2) NULL DEFAULT NULL , `jumlah_total` DECIMAL(22,2) NULL DEFAULT NULL , PRIMARY KEY (`id`) , INDEX `fk_penjualan_pelanggan1_idx` (`pelanggan_id` ASC) , CONSTRAINT `fk_penjualan_pelanggan1` FOREIGN KEY (`pelanggan_id` ) REFERENCES `shoppingcart`.`pelanggan` (`id` ) ON DELETE CASCADE ON UPDATE CASCADE)ENGINE = InnoDBDEFAULT CHARACTER SET = latin1COLLATE = latin1_swedish_ci;CREATE TABLE IF NOT EXISTS `shoppingcart`.`item_penjualan` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `penjualan_id` INT(11) NOT NULL , `barang_id` INT(11) NOT NULL , `harga` DECIMAL(22,2) NULL DEFAULT NULL , `kuantitas` DECIMAL(22,2) NULL DEFAULT NULL , `jumlah_harga` DECIMAL(22,2) NULL DEFAULT NULL , PRIMARY KEY (`id`) , INDEX `fk_item_pembelian_barang1_idx` (`barang_id` ASC) , INDEX `fk_item_penjualan_penjualan1_idx` (`penjualan_id` ASC) , CONSTRAINT `fk_item_pembelian_barang10` FOREIGN KEY (`barang_id` ) REFERENCES `shoppingcart`.`barang` (`id` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_item_penjualan_penjualan1` FOREIGN KEY (`penjualan_id` ) REFERENCES `shoppingcart`.`penjualan` (`id` ) ON DELETE CASCADE ON UPDATE CASCADE)ENGINE = InnoDBDEFAULT CHARACTER SET = latin1COLLATE = latin1_swedish_ci;SET SQL_MODE=@OLD_SQL_MODE;SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Eksekusi file sql di atas
2. Buat file conn.php
File ini digunakan untuk koneksi ke database. Berikut ini merupakan source code conn.php
2. Buat file conn.php
File ini digunakan untuk koneksi ke database. Berikut ini merupakan source code conn.php
<?php$hostname_conn = "localhost";$database_conn = "shoppingcart";$username_conn = "root";$password_conn = "";$conn = mysql_connect($hostname_conn, $username_conn, $password_conn) or die(mysql_error()); ?>
3. Buat file cart.php
File ini digunakan untuk menyimpan fungsi-fungsi yang berkaitan dengan cart yaitu untuk menambah, menghapus dan mengubah. Berikut ini merupakan source code file cart.php
File ini digunakan untuk menyimpan fungsi-fungsi yang berkaitan dengan cart yaitu untuk menambah, menghapus dan mengubah. Berikut ini merupakan source code file cart.php
<?php require_once("conn.php"); if (!isset($_SESSION)) { session_start(); } if (isset($_GET['act']) && isset($_GET['ref'])) { $act = $_GET['act']; $ref = $_GET['ref']; if ($act == "add") { if (isset($_GET['barang_id'])) { $barang_id = $_GET['barang_id']; if (isset($_SESSION['items'][$barang_id])) { $_SESSION['items'][$barang_id] += 1; } else { $_SESSION['items'][$barang_id] = 1; } } } elseif ($act == "plus") { if (isset($_GET['barang_id'])) { $barang_id = $_GET['barang_id']; if (isset($_SESSION['items'][$barang_id])) { $_SESSION['items'][$barang_id] += 1; } } } elseif ($act == "min") { if (isset($_GET['barang_id'])) { $barang_id = $_GET['barang_id']; if (isset($_SESSION['items'][$barang_id])) { $_SESSION['items'][$barang_id] -= 1; } } } elseif ($act == "del") { if (isset($_GET['barang_id'])) { $barang_id = $_GET['barang_id']; if (isset($_SESSION['items'][$barang_id])) { unset($_SESSION['items'][$barang_id]); } } } elseif ($act == "clear") { if (isset($_SESSION['items'])) { foreach ($_SESSION['items'] as $key => $val) { unset($_SESSION['items'][$key]); } unset($_SESSION['items']); } } header ("location:" . $ref); } ?>
4. Buat file cart_view.php
File ini digunakan untuk menampilkan daftar barang-barang yang ada dalam cart (yang telah dipilih untuk dibeli). Berikut ini merupakan source code cart_view.php
File ini digunakan untuk menampilkan daftar barang-barang yang ada dalam cart (yang telah dipilih untuk dibeli). Berikut ini merupakan source code cart_view.php
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="viewer"> <tr> <th align="left" scope="col">Kode Barang</th> <th align="left" scope="col">Nama Barang</th> <th align="right" scope="col">Harga</th> <th align="right" scope="col">Qty</th> <th align="right" scope="col">Jumlah Harga</th> <th align="right" scope="col">Aksi</th> </tr> <?php $total = 0; if (isset($_SESSION['items'])) { foreach ($_SESSION['items'] as $key => $val){ $query = mysql_query ("select barang.id, barang.nama, barang.harga from barang where barang.id = '$key'"); $rs = mysql_fetch_array ($query); $jumlah_harga = $rs['harga'] * $val; $total += $jumlah_harga; ?> <tr> <td><?php echo $rs['id']; ?></td> <td><?php echo $rs['nama']; ?></td> <td align="right"><?php echo number_format($rs['harga']); ?></td> <td align="right"><?php echo number_format($val); ?></td> <td align="right"><?php echo number_format($jumlah_harga); ?></td> <td align="right"><a href="cart.php?act=plus&barang_id=<?php echo $key; ?>&ref=index.php">+</a> | <a href="cart.php?act=min&barang_id=<?php echo $key; ?>&ref=index.php">-</a> | <a href="cart.php?act=del&barang_id=<?php echo $key; ?>&ref=index.php">Hapus</a></td> </tr> <?php mysql_free_result($query); } } ?> <tr> <td> </td> <td> </td> <td align="right"> </td> <td align="right"> </td> <td align="right"><?php echo number_format($total); ?></td> <td align="right"><a href="cart.php?act=clear&ref=index.php">Clear</a></td> </tr></table>
5. Buat file index.php
File ini digunakan untuk menampilkan daftar produk. Berikut ini merupakan source code index.php
File ini digunakan untuk menampilkan daftar produk. Berikut ini merupakan source code index.php
<?php require_once("conn.php"); if (!isset($_SESSION)) { session_start(); }?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Contoh Aplikasi Shopping Cart</title><style> h1, h2, h3, p { margin-top:0px; margin-bottom:10px; }</style></head><body><h1>Contoh Aplikasi Shopping Cart</h1><h2>List Produk</h2><hr /><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="55%"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <?php mysql_select_db($database_conn, $conn); $query = mysql_query ("select * from barang"); while ($rs = mysql_fetch_array ($query)) { ?> <tr> <td width="160" valign="top"><img src="<?php echo $rs['gambar']; ?>" alt="" style="width:140px; margin-right:20px; margin-bottom:20px;" /></td> <td valign="top"><h3><?php echo $rs['nama']; ?></h3> <p><?php echo $rs['deskripsi']; ?></p> <p>Harga : <?php echo number_format($rs['harga']); ?> - <a href="cart.php?act=add&barang_id=<?php echo $rs['id']; ?>&ref=index.php">Beli</a></p></td> </tr> <?php } ?> </table></td> <td> </td> <td width="40%"><p>Keranjang Anda</p> <hr /> <?php require("cart_view.php"); ?></td> </tr></table><p> </p></body></html>
Sekarang coba jalankan!!!
Sekian dulu, silakan dikembangkan sendiri aplikasi sederhana ini, semoga bermanfaat… :D
Sekian dulu, silakan dikembangkan sendiri aplikasi sederhana ini, semoga bermanfaat… :D