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.

Categories: DatabasePHP

Candra Adi Putra

Candra Adi Putra S.Kom adalah Alumni STMIK AKAKOM Yogyakarta. hubungi saya di candraadiputra (at) gmail (dot) com

10 Comments

Gitto · 8 June , 2017 at 3:00 pm

hadeh banyak yg error gan bijimane kalau msh querynya salah jgn share disini

Hakko Bio Richard · 16 April , 2015 at 7:30 pm

bookmark dulu buat referensi,

ody permana putra (@odypermanaputra) · 21 August , 2014 at 5:50 pm

gan nama databasenya apa ?

Gagah Priangga · 22 April , 2014 at 1:49 pm

setelah itu diapain lagi ya mas ?

    Anonymous · 28 May , 2017 at 11:17 pm

    Dijiat diemut

Deny · 14 April , 2014 at 11:37 pm

gan data produknya ga nonggol kenapa yaa??

Deny · 14 April , 2014 at 11:28 pm

hadu gan ko data produknya ga muncul ya??

rais gunawan · 12 January , 2014 at 6:13 am

gan pas ane klik beli ga masuk ke keranjang, itu apanya y?

    Candra Adi Putra · 12 January , 2014 at 4:37 pm

    querynya coba di cek di chart.inc.php

BJuser · 30 December , 2012 at 2:02 pm

Gan, ane mau coba yaa

Mohon Isi komentar