Total Tayangan Halaman

Senin, 07 Juli 2014

membuat shopping cart sederhana

09 May
MODUL E-COMMERCE
SHOPPING CART I 

Dalam pertemuan kali ini kita membuat sebuah shopping cart sederhana dengan aliran kerja sebagai
berikut : 

Katalog produk disimpan dalam database MySQL, data keranjang belanja calon pembeli tidak
dimasukkan dalam database, hanya disimpan di variabel Session, jika calon pembeli memutuskan untuk
menyelesaikan order (checkout) baru data keranjang belanja beserta data calon konsumen dimasukkan
ke dalam database MySQL.

Proses pembuatan kode untuk Checkout akan dilanjutkan di pertemuan berikutnya.
Salin file-file gambar pendukung latihan, kemudian buat file-file PHP sesuai
urutan dalam modul ini sehingga struktur direktori anda akan terlihat seperti
gambar di sebelah kanan.
Untuk mempercepat, import kode SQL database contoh daftar produk ke
dalam PHPMyAdmin. 

Source Code dibawah ini sengaja dibuat salah dan atau hanya berupa pseudocode/algoritma saja.
Silahkan dilengkapi sehingga menjadi kode yang benar. 

1.  File dbconfig.php 

<?php
// Konfigurasi koneksi database MySQL
$database = "shoppingcart";
$username = "root";
$password = "";
$server = "localhost"; 

Katalog Produk
Keranjang
Belanja
(Disimpan dalam
User Session)
Checkout
(Proses Order) $koneksi = buka koneksi ke mysql jika gagal : die ("Koneksi MySQL gagal!");
$mysqldb = pilih database yang akan digunakan, jika gagal : die ("Tidak dapat mengakses
Database!"); 

?> 

2.  File fungsi.php 

<?php
// Definisikan Fungsi-fungsi 

// Fungsi untuk menghitung jumlah isi cart
function TampilkanIsiCart() {
  if (!isset($_SESSION['shoppingcart'])) {
    return '<p>Anda belum memilih produk</p>';
    $_SESSION['shoppingcart'] = '';
  }
  else {
    $cart = $_SESSION['shoppingcart'];
    // Explode isi Session "shoppingcart", dihitung totalnya
    $items = pecah isi $cart menggunakan pemisah tanda koma;
    if (strlen($cart) == 0) {
     return '<p>Anda belum memilih produk</p>';
    }
    else {
return '<p>Anda memiliki <a href="cart.php">'.count($items).' item produk di
Keranjang Belanja</a></p>';
    }
  }
} 

function TampilkanCart() {
  if (isset($_SESSION['shoppingcart'])) {
    $cart = $_SESSION['shoppingcart'];
    $items = pecah isi $cart menggunakan pemisah tanda koma;
    $total = 0;
    $isikeranjang = array();
  // Karena isi Session "shoppingcart" hanya list id produk, perlu dicek jika ada lebih dari
satu id produk yang sama
    foreach ($items as $item) {
     if (isset($isikeranjang[$item])) {       // Jika id produk yg sama sudah ada maka quantity ditambah
      $isikeranjang[$item] = $isikeranjang[$item] + 1;
     }
     else {
      $isikeranjang[$item] = 1;
     }
    } 

    echo '<form action="cart.php?action=update" method="post" id="isicart">';
    echo '<table width="500">';
    if (!strlen($cart)==0) {
     foreach ($isikeranjang as $id=>$qty) {
      $sql = 'SELECT * FROM produk WHERE id = '.$id;
      $result = jalankan query dengan parameter $sql;
      while ($row = mysql_fetch_assoc($result)) {
       echo '<tr>';
       echo '<td>';
       echo '<b>' . $row['nama_produk'] . '</b>&nbsp;&nbsp;&nbsp;';
  echo 'Quantity : <input type="text" name="qty'.$id.'"
value="'.$qty.'" size="3" maxlength="3" /><br />';
       echo 'Total Harga : Rp. ' . $row['harga'] * $qty . ',-<br />';
  echo '<a href="cart.php?action=delete&id='.$id.'"
class="r">Hapus</a><br />';
       echo '</td></tr>';
       $total += $row['harga'] * $qty;
      }
     }
    }
    echo '</table>';
    echo '<p>Total Harga Semua: <strong>Rp. '. variabel yang menyimpan total .',-
</strong></p>';
    echo '<p><button type="submit">Update Keranjang Belanja</button></p>';
    echo '</form>';
  } else {
    echo '<p>Keranjang Belanja anda masih kosong, silahkan pilih produk.</p>';
  } 

} 

?> 

3.  File cart.php 

<?php
// Tambahkan konfigurasi Database dan definisi Fungsi-fungsi
require_once('dbconfig.php');
require_once('fungsi.php'); 

// Aktifkan Session
session_start(); 

// Process actions
if (isset($_SESSION['shoppingcart'])) {
  $cart = $_SESSION['shoppingcart'];
  if (isset($_GET['action'])) {
    $action = $_GET['action'];
    switch ($action) {
     case 'add':
      if ($cart) {
       $cart .= ','.$_GET['id'];
      } else {
       $cart = $_GET['id'];
      }
      break;
     case 'delete':
      if ($cart) {
       $items = explode(',',$cart);
       $newcart = '';
       foreach ($items as $item) {
        if ($_GET['id'] != $item) {
         if ($newcart != '') {
          $newcart .= ','.$item;
         } else {
          $newcart = $item;
         }
        }
       }       $cart = $newcart;
      }
      break;
     case 'update':
      if ($cart) {
       $newcart = ''; 

       foreach ($_POST as $key=>$value) {
        if (stristr($key,'qty')) {
         $id = str_replace('qty','',$key);
  $items = ($newcart != '') ? explode(',',$newcart)
: explode(',',$cart);
         $newcart = '';
         foreach ($items as $item) {
          if ($id != $item) {
           if ($newcart != '') {
            $newcart .= ','.$item;
           } else {
            $newcart = $item;
           }
          }
         }
         for ($i=1;$i<=$value;$i++) {
          if ($newcart != '') {
           $newcart .= ','.$id;
          } else {
           $newcart = $id;
          }
         }
        }
       }
      $cart = $newcart;
      }
      break;
    }
  }
$_SESSION['shoppingcart'] = $cart;
}
else {
  $_SESSION['shoppingcart'] = '';
}
 ?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <title>Keranjang Belanja</title>
  <link rel="stylesheet" href="styles.css" />
</head>
<body> 

<div id="shoppingcart">
  <h1>Keranjang Belanja Anda</h1>
  <?php
    echo panggil fungsi yang menghitung total isi cart();
  ?>
</div> 

<div id="daftarproduk">
  <h1>Pastikan quantity yang dipesan sudah sesuai...</h1>
  <?php
    echo panggil fungsi yang menampilkan daftar produk dalam cart();
  ?>
  <p><a href="index.php">Kembali ke toko...</a></p>
</div> 

</body>
</html> 

4.  File index.php
<?php
// Tambahkan konfigurasi Database dan definisi Fungsi-fungsi
require_once('dbconfig.php');
require_once('fungsi.php'); 

// Aktifkan Session
session_start();
?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <title>Toko Online Terbesar Sekos-kosan</title>
  <link rel="stylesheet" href="styles.css" />
</head>
<body> 

<div id="shoppingcart">
  <h1>Keranjang Belanja Anda</h1> 

  <?php
    echo TampilkanIsiCart();
  ?>
</div> 

<div id="daftarproduk">
  <h1>Daftar Produk Terlaris Saat Ini</h1> 

  <?php
  $sql = 'SELECT * FROM produk ORDER BY id';
  $result = jalankan query dengan parameter $sql;
  echo '<table width="500">';
  while ($row = mysql_fetch_assoc($result)) {
    echo '<tr>';
    echo '<td height="230"><img src="'.$row['url_gambar'].'"></td>';
    echo '<td>';
    echo '<b>' .  tampilkan nama produk . '</b><br /><br />';
    echo tampilkan deskripsi produk . '<br /><br />';
    echo 'Harga : Rp. ' . tampilkan harganya . ',-<br />';
    echo 'Stok : ' . $row['stok'] . '<br />';
    echo '<a href="cart.php?action=add&id='.$row['id'].'">Tambahkan ke Keranjang
Belanja</a>';
    echo '</td></tr>';
  }
  echo '</table>';
  ?>
</div> 

</body>
</html>
5.  File style.css
* {
  margin: 0;
  padding: 0;
} 

body {
  background: #fff;
  font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
  font-size: 100%;
  color: #333;
} 

#shoppingcart { 

  background: #eee;
  border: 1px solid #444;
} 

#shoppingcart p {
  margin: 0 1em 1em;
} 

h1 {
  font-size: 140%;
  margin: 0.5em 1em;
} 

#daftarproduk {
  position: absolute;
  top: 100px;
  left: 50px;
  width: 500px;
  background: #ddd;
  border: 1px solid #333;
} 

#daftarproduk table {
  font-size: 90%;   border-collapse: collapse;
} 

#daftarproduk table td {
  border: 1px solid #999;
  padding : 10px 10px 10px 10px;
} 

#daftarproduk p, #daftarproduk button {
  margin: 1em;
} 

Setelah selesai menulis kode-kode diatas, pastikan semua berjalan sesuai yang diharapkan, kumpulkan
dalam sebuah folder dengan nama nomor NIM anda. 

Pertemuan berikutnya menambahkan tombol Checkout dan memproses order yang sesungguhnya ke
dalam database serta pengiriman kopi order via email.

Tidak ada komentar:

Posting Komentar