artikel ini merupakan kelanjutan dari artikel sebelumnya yang berjudul membuat katalog dengan PHP MySQL. Jika dalam artikel sebelumnya kita telah membahas tentang cara membuat katalog produk, maka di artikel ini kita akan membahas bagaimana mengimplementasikan keranjang belanjanya.

Relasi tabel & Logic bisnis

Untuk membuat ecommerce, minimal ada 3 tabel yaitu tabel produk, tabel transaksi dan tabel transaksi_detail. Lihat diagram relasi tabelnya sebagai berikut:

Relasi tabel


Dalam relasi tabel, tampak bahwa sekali transaksi, user boleh membeli beberapa produk sekaligus. Untuk masing masing produk, user boleh membeli lebih dari satu item. Hal yang peling penting, kita tidak perlu membuat tabel transaksi_sementara karena data barang yang masuk chart tersimpan didalam session chart.
Jika anda pernah membaca buku lokomedia atau memakai CMS toko lokomedia , mereka menggunakan tabel temporer dalam proses pembuatan chart. hal ini sebenarnya tidak efektif karena server akan terbebani dengan proses penyimpanan idproduk dan transaksi sampah. selain itu, tidak semua yang melakukan transaksi benar benar akan membeli. Teknik yang dijelaskan dilokomedia akan memberatkan server jika banyak calon pembeli yang tidak jadi melakukan pemebelian, efeknya tabel temprorer akan dipenuhi data data sampah. Sekali lagi, teknik yang saya pakai berbeda, data chart hanya tersimpan di session browser, jadi data transaksi yang terkirim keserver pasti adalah transaksi yang valid.

Skenario Proses Transaksi

1.User membuka website dan melihat produk di katalog.
2.user mengklik keranjang belanja,
3.User boleh menganti jumlah barang yang dibeli atau menghapusnya
4. User memasukan nama dan alamat pengiriman barang
5. Saat user mengklik kirim,maka transaksi selesai.

Contoh transaksi

Perhatikan screenshoot proses transaksi diatas. angka 4,6,6,6 adalah array dari idproduk yang tersimpan di session chart. Saya sengaja menampilkan agar anda tahu proses dibelakang layar.

File yang dibutuhkan

semua kode proses transaksi saya letakan di folder chart. Berikut ini adalah penjelasan masih masing file.

Chart.inc.php
file yang berisi fungsi fungsi untuk melakukan transaksi diantaranya
1. kd_transaksi() dipakai untuk membuat kd_transaki secara otomatis (T00001,T000002, dst)
2. InsertIntoDB() dipakai untuk memasukan data transaksi kedalam database. InsertIntoDB dieksekusi saat user menekan tombol kirim.
3. writingShopingChart() menampilkan info jumlah barang di keranjang belanja.
4. Showchart() menampilkan isi keranjang belanja.

chart.php

Chart.php berfungsi untuk melakukan proses penamabhan barang ke keranjang belanja, mengupdate jumlah barang yang dibeli atau menghapus barang dikeranjang belanja.

<?
// Start the session
session_start();

// Process actions semua proses hanya memanipulasi session chart, 
//tidak ada proses insert data atau ambil data dari database. 
$chart = $_SESSION['chart'];
$action = $_GET['action'];
switch ($action) {
	case 'add' :
		if ($chart) {
			$chart .= ',' . $_GET['id'];
		} else {
			$chart = $_GET['id'];
		}
		break;
		//
		// delete, update, add hanya memanipulasi session chart 
	case 'delete' :
		if ($chart) {
			$items = explode(',', $chart);
			$newchart = '';
			foreach ($items as $item) {
				if ($_GET['id'] != $item) {
					if ($newchart != '') {
						$newchart .= ',' . $item;
					} else {
						$newchart = $item;
					}
				}
			}
			$chart = $newchart;
		}
		break;
	case 'update' :
		if ($chart) {
			$newchart = '';
			foreach ($_POST as $key => $value) {
				if (stristr($key, 'qty')) {
			$id = str_replace('qty', '', $key);
			$items = ($newchart != '') ? explode(',', $newchart) : explode(',', $chart);
			$newchart = '';
			foreach ($items as $item) {
				if ($id != $item) {
				if ($newchart != '') {
					$newchart .= ',' . $item;
				} else {
					$newchart = $item;
					}
				}
			}
					for ($i = 1; $i <= $value; $i++) {
						if ($newchart != '') {
							$newchart .= ',' . $id;
						} else {
							$newchart = $id;
						}
					}
				}
			}
		}

		$chart = $newchart;
		break;
}
$_SESSION['chart'] = $chart;
?>

chart_action.php
Fungsinya untuk memanggil fungsi insertIntoDB() dan meredirect user kehalaman finish dan mengosongkan keranjang belanja karena proses belanja dianggap selesai.

Finish.php
menampilkan informasi bahwa transaksi sukses dan menampilkan jumlah pembayaran yang harus dilakukan.

Saya tidak menampilkan seleuruh kode dari masing masing file karena kodenya cukup panjang, anda bisa mendownload dan melihat source codenya langsung.


Demo dan Source code


Silahkan lihat dan coba sendiri demonya disini. Untuk source code silahkan download disini. Jika anda sudah mendownload source code di artikel sebelumnya (membuat katalog produk dengan PHP MySQL) anda tidak perlu mendownload source codenya lagi, karena chart sudah termasuk didalamnya.

Penulis: Candra Adi Putra

CandraLab Studio adalah Software house di Yogyakarta, Indonesia yang fokus ke aplikasi Mobile (Android) dan Web . Hubungi saya di candraadiputra(at) gmail.com

Tagged on:         

7 thoughts on “Tutorial ecommerce PHP MySQL

Tinggalin komentar dong!