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> '; 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