Pengkodean keranjang belanja dengan php

Dalam aplikasi e-commerce tentunya terdapat shopping cart. Keranjang belanja digunakan untuk menyimpan sementara produk yang akan dibeli oleh pengunjung situs e-commerce. Pada artikel kali ini saya akan menjelaskan secara singkat tentang shopping cart yaitu dengan menggunakan fasilitas session di PHP dan menggunakan MySQL untuk menyimpan data secara permanen

1. Perencanaan Basis Data

Pada artikel ini, MySQL Workbench digunakan untuk mendesain database MySQL. Susunlah denah database seperti pada gambar di bawah ini

Pengkodean keranjang belanja dengan php

Hubungan Antar Tabel

Kode sumber di bawah ini adalah kode yang dihasilkan dari rencana basis data di atas

mengajukan keranjang belanja. 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 = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = 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 = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = 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 = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = 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 = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_swedish_ci;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

file barang_data. sql

INSERT INTO `barang` (`id`, `nama`, `deskripsi`, `gambar`, `hpp`, `harga`, `waktu_masuk`) VALUES
(1, 'Djarum 76', 'Djarum 76 adalah hasil dari ramuan rahasia kretek kudus yang melegenda lebih dari dari 120 tahun dipadu dengan Tembakau matang, tembakau Srintil, cengkeh matang pohon dan rempah-rempah tradisional khas Indonesia, membuat Djarum 76 selalu nikmat.', 'djarum76.jpg', 6000.00, 7000.00, '2012-11-21 22:15:54'),
(2, 'Surya 12', 'Duis placerat iaculis nisi, et pulvinar nisi bibendum ac. Morbi massa justo, pharetra at eleifend eu, facilisis quis diam. Integer eget mi purus, et feugiat elit. ', 'surya12.jpg', 9000.00, 10000.00, '2012-11-21 22:21:44'),
(3, 'Djarum Super', 'Ut in augue at risus posuere molestie ut at velit. Aenean tincidunt euismod ultricies. Curabitur ut nisl justo. Aenean viverra auctor urna, ac tincidunt mi euismod ut.', 'jdarumsuper.jpg', 10000.00, 11000.00, '2012-11-21 22:34:47'),
(4, 'Marlboro', 'Integer vel convallis urna. Etiam quis urna ac risus mollis blandit. Mauris bibendum interdum rhoncus. Suspendisse urna sapien, tincidunt in fermentum at, tempus sit amet ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.', 'marlboro.jpg', 13000.00, 14000.00, '2012-11-21 22:21:12'),
(5, 'Dji Sam Soe', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam porta, ipsum in faucibus lacinia, libero mauris tempor ipsum, eget pharetra mi augue ut diam. In dignissim commodo ligula vitae tempus. In hac habitasse platea dictumst. Morbi aliquam augue sit amet sem dignissim consectetur. ', '234.jpg', 10000.00, 11000.00, '2012-11-21 22:21:00');

_

Jalankan file sql di atas

2. Buat file koneksi. php

File ini digunakan untuk koneksi ke database. Berikut ini adalah kode sumber koneksi. 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 keranjang. php

File ini digunakan untuk menyimpan fungsi-fungsi yang berhubungan dengan keranjang yaitu untuk menambah, menghapus dan mengubah. Berikut ini adalah kode sumber file keranjang. 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 di keranjang (yang telah dipilih untuk dibeli). Berikut ini adalah kode sumber cart_view. php