Bicara
tentang keranjang sekarang ini toko online mana sih yang belum punya
fasilitas keranjang belanja. Fitur ini wajib dimiliki setiap toko
online. Keranjang belanja digunakan untuk menyimpan data-data barang
yang ingin di beli oleh pengunjung website kita.
Memang
kalau mau buat toko online sekarang sih gampang, tinggal pake wordpress
atau opencart langsung jadi. Namun tentu lebih baik lagi kalau kita
mengerti bagaimana sistem keranjang belanja itu bekerja, siapa tahu
nanti kita bisa membuat CMS toko online sendiri.
Bagi
Anda para mahasiswa yang sedang mempelajari web programing, keranjang
belanja pasti juga akan masuk pada materi kuliah Anda. Pada kesempatan
kali ini saya akan membahas bagaimana sih cara kerja dari fitur
keranjang belanja. Sistem keranjang belanja yang akan saya tunjukan
disini merupakan sistem yang sudah di pakai oleh CMS lokal indonesia
loh. Sengaja saya buah lebih sederhana agar mudah dipelajari.
Sebelum mengikuti tutorial ini, diharapkan Anda sudah paham mengenai dasar-dasar pemograman PHP. Terutama untuk operasi inner join database dan session php. Jika belum mengerti kedua istilah tadi silahkan di pelajari dulu yah. :-)
Sebelum itu berikut saya terangkan dahulu alur sistem keranjang belanja sederhana yang akan kita buat.
- Semua berawal dari file daftar_produk.php yang menampilkan daftar produk.
- Ketika pengunjung mengklik link beli, program akan mengarahkan ke aksi_keranjang.php terlebih dahulu untuk mencegah terjadinya doubel data pemesanan.
- Baru setelah itu akan di arahkan ke keranjang.php. Di file keranjang.php akan menampilkan dafar barang yang di beli beserta link tambah barang dan selesai belanja.
- Ketika pengunjung memutuskan selesai belanja maka akan diarahkan ke file selesai.php yang berfungsi layaknya sebagai struk belanjaan
- selesai
Pertama-tama kita buat dulu database dengan nama toko, adapun tabel-tabelnya sebagai berikut

Karena ini sistem sederhana, kita hanya memerlukan empat tabel saja. Silahkan nanti di import saja database-nya. Saya sudah menyertakan file sql di paket downloadnya.
Pertama-tama kita buat dulu file koneksi.php, berikut adalah source kodenya
<?php
// koneksi ke mysql
$dbHost
=
"localhost"
;
$dbUser
=
"root"
;
$dbPass
=
""
;
$dbName
=
"toko"
;
mysql_connect(
$dbHost
,
$dbUser
,
$dbPass
);
mysql_select_db(
$dbName
);
?>
Karena saya menggunakan Xammp sebagai webserver, maka saya mengosongkan bagian passwordnya. Silahkan disesuaikan dengan konfigurasi webserver Anda.
Selanjutnya kita buat file daftar_produk.php, berikut adalah source kodenya
<?php
session_start();
include
"koneksi.php"
;
echo
"<h1>Daftar Produk</h1>
<ul>";
$r
=mysql_query(
"SELECT * FROM produk"
);
while
(
$d
=mysql_fetch_array(
$r
)){
echo
"<li>$d[nama_produk] : $d[harga] || <a href='aksi_keranjang.php?id=$d[id_produk]'>Beli</a></li>"
;
}
echo
"</ul>"
;
?>
Kode diatas berfungsi untuk menampilkan data dari tabel produk. Tampilannya sederhana dulu saja, nanti akan kelihatan seperti ini

Sederhana
banget yah. Ga kayak di toko online lainnya. Sabar, karena ini memang
dasarnya banget jadi saya buat demikian. Nanti kalau Anda sudah paham
bisa di kembangkan lagi tampilan dan fungsinya. Sementara gini saja
dulu.
Jadi disini saya hanya menampilkan link beli dimana ketika link itu diklik akan mengarah pada file aksi_keranjang.php. Masing-masing link akan mengantar id produk ke file aksi_keranjang.php dengan metode get. Nah berikut adalah source kode dari file aksi_keranjang.php
<?php
session_start();
include
"koneksi.php"
;
$sid
= session_id();
//di cek dulu apakah barang yang di beli sudah ada di tabel keranjang
$sql
= mysql_query(
"SELECT id_produk FROM keranjang WHERE id_produk='$_GET[id]' AND id_session='$sid'"
);
$ketemu
=mysql_num_rows(
$sql
);
if
(
$ketemu
==0){
// kalau barang belum ada, maka di jalankan perintah insert
mysql_query("INSERT INTO keranjang (id_produk, jumlah, id_session)
VALUES (
'$_GET[id]'
, 1,
'$sid'
)");
}
else
{
// kalau barang ada, maka di jalankan perintah update
mysql_query("UPDATE keranjang
SET jumlah = jumlah + 1
WHERE id_session =
'$sid'
AND id_produk=
'$_GET[id]'
");
}
header(
'Location:keranjang.php'
);
?>
File diatas ga ada tampilannya. Karena hanya berfungsi sebagai file proses.
Pada
kode diatas di awali dengan session_start. Lalu akan menyertakan file
koneksi.php agar bisa terhubung ke database toko. Selanjutnya akan
dibuat session id. Session_id buat apa? ini untuk membedakan antara
pembeli yang satu dengan lainnya. Sebab nanti bisa jadi yang belanja di
toko online kita bisa lebih dari satu orang dalam waktu bersamaan. Nah
session_id inilah yang menjadi pembeda antara pembeli-pembeli tadi.
Selanjtunya
akan diperiksa dulu apakah barang yang di beli sudah ada di tabel
keranjang dengan session id yang berlaku. Jika belum ada, maka akan
dijalankan perintah insert. Jika ada, maka akan di jalankan perintah update dengan menambahkan jumlah barang 1 buah.
Selanjutnya dijalankan perintah header () untuk mengarahkan ke file keranjang.php. Berikut adalah source kode dari file keranjang.php
<?php
session_start();
$sid
= session_id();
include
"koneksi.php"
;
echo
"<h1>Keranjang Belanja</h1>
<table border=1>
<tr>
<th>Nama Produk</th>
<th>Qty</th>
<th>Harga</th>
<th>Sub Total</th>
</tr>
"; <br><br>
//jalankan perintah inner join dari tabel keranjang dan produk
$sql
= mysql_query(
"SELECT * FROM keranjang, produk WHERE id_session='$sid' AND keranjang.id_produk=produk.id_produk"
);
while
(
$d
=mysql_fetch_array(
$sql
)){
$subtotal
=
$d
[harga]*
$d
[jumlah];
$total
=
$total
+
$subtotal
;
echo
"<tr><td>
$d
[nama_produk]</td>
<td>
$d
[jumlah]</td>
<td>
$d
[harga]</td>
<td>
$subtotal
</td></tr>";
}
echo
"</table>
<h2>Total Belanja : <b>
$total
</b></h2>
<ul>
<li><a href=
'daftar_produk.php'
>Tambah Barang</a></li>
<li><a href=
'selesai.php'
>Selesai belanja</a></li>
</ul>";
?>
Nah,
file inilah yang menjadi inti dari sistem. Fungsinya sebagai penampil
data belanjaan bedasarkan id session yang berlaku. Data diambil lewat
operasi join antar tabel keranjang dan produk, bisa dilihat pada kode
baris 15.

Pada
bagian bawah saya menambahkan dua link yaitu untuk tambah barang yang
mengarah ke daftar_produk.php dan selesai belanja yang mengarah ke
selesai.php. Untuk yang tambah barang saya kira tidak perlu di jelaskan
lagi, saya akan melanjutkan ke file selesai.php. berikut adalah source kodenya
<?php
session_start();
include
"koneksi.php"
;
$sid
= session_id();
// fungsi untuk mendapatkan isi keranjang belanja
function
isi_keranjang(){
$isikeranjang
=
array
();
$sid
= session_id();
$sql
= mysql_query(
"SELECT * FROM keranjang WHERE id_session='$sid'"
);
while
(
$r
=mysql_fetch_array(
$sql
)) {
$isikeranjang
[] =
$r
;
}
return
$isikeranjang
;
}
$tgl_skrg
=
date
(
"Ymd"
);
// simpan data pemesanan
mysql_query(
"INSERT INTO pembelian(tgl_beli) VALUES ('$tgl_skrg')"
);
// mendapatkan nomor orders dari tabel pembelian
$id_orders
=mysql_insert_id();
// panggil fungsi isi_keranjang dan hitung jumlah produk yang dipesan
$isikeranjang
= isi_keranjang();
$jml
=
count
(
$isikeranjang
);
// simpan data detail pemesanan
for
(
$i
= 0;
$i
<
$jml
;
$i
++){
mysql_query(
"INSERT INTO detail_beli(id_beli, id_produk, jumlah) VALUES('$id_orders',{$isikeranjang[$i]['id_produk']}, {$isikeranjang[$i]['jumlah']})"
);
}
// setelah data pemesanan tersimpan, hapus data pemesanan di tabel keranjang
for
(
$i
= 0;
$i
<
$jml
;
$i
++) { mysql_query(
"DELETE FROM keranjang WHERE id_belanja = {$isikeranjang[$i]['id_belanja']}"
);}
echo
"Nomor Order: <b>$id_orders</b><br /><br />"
;
echo
"<h1>Rincian Belanja</h1>
<table border=1>
<tr>
<th>Nama Produk</th>
<th>Qty</th>
<th>Harga</th>
<th>Sub Total</th>
</tr>
";
$r
=mysql_query(
"SELECT * FROM detail_beli,produk WHERE detail_beli.id_produk=produk.id_produk AND id_beli='$id_orders'"
);
while
(
$d
=mysql_fetch_array(
$r
)){
$subtotal
=
$d
[harga]*
$d
[jumlah];
$total
=
$total
+
$subtotal
;
echo
"<tr><td>
$d
[nama_produk]</td>
<td>
$d
[jumlah]</td>
<td>
$d
[harga]</td>
<td>
$subtotal
</td></tr>";
}
echo
"</table>
<h2>Total Belanja : <b>
$total
</b></h2>";
?>
Wuih,
panjang juga yah kodenya. pertama-tama akan dibuat fungsi penghitung isi
tabel keranjang pada baris 6-15. Fungsi itu akan mengembalikan nilai
berapa banyak barang yang di beli bedasarkan id_session yang berlaku.
Lanjut
pada baris 20 adalah perintah sql untuk memasukan data tanggal pembelian
ke tabel pembelian. Nantinya tabel pembelian bisa dikembangkan tidak
hanya tanggal pembelian saja, bisa ditambah jam pemesanan, id_customer
yang memesan, dll. SIlahkan nanti di kembangin sendiri yah.
Baris
26-27 akan menghitung barang belanjaan menggunakan fungsi isi_keranjang.
Lalu nilainya akan disimpan pada variabel $jml. $jml ini akan dipakai
pada proses selanjuntnya
baris
30-31 adalah proses penyimpanan data secara berulang ke tabel
detail_beli. Perulangannya itu bergantung dari banyak jenis produk yang
di beli. Makanya digunakan perintah for agar pemasukannya disesuaikan
dengan banyak jenis barang yang dibeli.
Selanjutnya
pada baris 35 akan terjadi penghapusan isi data dari tabel keranjang.
Ibarat kita sampai dikasir toko isi keranjang belanja kita diambil oleh
mbak kasir. Maka kode baris 35 perannya seperti mbak kasir itu.
Mengosongkan keranjang belanja kita
Selanjutnya
baris 38 sampai akhir adalah kode untuk menampilkan rincian belanja.
Kodenya hampir sama dengan file keranjang.php. Disini pembeli bisa
melihat rincinan belanjanya. Fungsinya hampir sama seperti struk
belanja.
Nantinya file selesai.php akan terlihat seperti ini

File
selesai.php juga bisa Anda kembangkan lebih lanjut lagi. Berikut saya
review lagi alur sistem keranjang belanja yang beru saja kita bahas.
- Semua berawal dari file daftar_produk.php yang menampilkan daftar produk.
- Ketika pengunjung mengklik link beli, program akan mengarahkan ke aksi_keranjang.php terlebih dahulu untuk mencegah terjadinya doubel data pemesanan.
- Baru setelah itu akan di arahkan ke keranjang.php. Di file keranjang.php akan menampilkan dafar barang yang di beli beserta link tambah barang dan selesai belanja.
- Ketika pengunjung memutuskan selesai belanja maka akan diarahkan ke file selesai.php yang berfungsi layaknya sebagai struk belanjaan
- selesai
Tidak ada komentar:
Posting Komentar