Total Tayangan Halaman

Senin, 07 Juli 2014

PHP MySQL; Membuat Shopping Cart (Keranjang Belanja) dengan Menggunakan Session

 
 
 
 
 
 
5 Votes


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 = 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;
Eksekusi file sql di atas
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
<?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
<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&amp;barang_id=<?php echo $key; ?>&amp;ref=index.php">+</a> | <a href="cart.php?act=min&amp;barang_id=<?php echo $key; ?>&amp;ref=index.php">-</a> | <a href="cart.php?act=del&amp;barang_id=<?php echo $key; ?>&amp;ref=index.php">Hapus</a></td>
  </tr>
  <?php
            mysql_free_result($query);
        }
  }
  ?>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td align="right">&nbsp;</td>
    <td align="right">&nbsp;</td>
    <td align="right"><?php echo number_format($total); ?></td>
    <td align="right"><a href="cart.php?act=clear&amp;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
<?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&amp;barang_id=<?php echo $rs['id']; ?>&amp;ref=index.php">Beli</a></p></td>
        </tr>
      <?php
    }
    ?>
    </table></td>
    <td>&nbsp;</td>
    <td width="40%"><p>Keranjang Anda</p>
      <hr />
      <?php require("cart_view.php"); ?></td>
  </tr>
</table>
<p>&nbsp;</p>
</body>
</html>
Sekarang coba jalankan!!!
Sekian dulu, silakan dikembangkan sendiri aplikasi sederhana ini, semoga bermanfaat… :D

 

 

 

 

 

Tidak ada komentar:

Posting Komentar