Keranjang Belanja – PHP

Keranjang Belanja – PHP

Halo teman-teman apa kabarnya hari ini kita akan mencoba bagaimana caranya membuat fitur keranjang belanja atau lebih dikenal dengan Cart dengan menggunakan bahasa pemrograman PHP.

Mungkin teman-teman disini sudah sering membuat atau bahkan ada yang baru pertama kali melihat fitur ini, tapi rasanya tidak mungkin. Fitur keranjang belanja ini sudah sering kita jumpai pada web aplikasi penjualan online contohnya: Toko Online atau Market Place.

Kali ini kita akan mencari tahu, cara kerja dari fitur Cart tersebut, bagi teman-teman yang sudah sering membuat fitur ini mungkin kode yang akan dibuat bisa dibilang tidak akan sama 100%, namun kemiripan alur (flow) logikanya itu sama, dan bagi teman-teman yang baru belajar sepertinya bisa mencoba mengikuti terlebih dahulu, baru silahkan melakukan improvisasi, eksplorasi dengan memodifikasi kode yang sudah dibuat.

Perlu diketahui sebaiknya coba dipahami cara menggunakan fungsi sesi fitur fungsi built-in (bawaan) dari php itu sendiri, karena fitur cart yang akan dibuat akan menggunakan fungsi tersebut.

<?php
    session_start();

    $_SESSION["..."]["..."];
    // mereka ini saling terkait satu sama lain
?>

Kasus keranjang belanja yang akan dibuat disini, barang hanya dapat ditambah ke keranjang hanya sebanyak 1 buah saja, asumsikan pembeli hanya dapat beli barang sebanyak 1 buah, agar kode yang dibuat tidak terlalu kompleks.

Beberapa file yang akan dibuat, diantaranya adalah:

  • koneksi.php
  • index.php
  • tambah.php
  • hapus.php
  • beli.php
  • cart.php

Dimulai dari pembuatan file koneksi.php terlebih dahulu

<?php
	$server = "localhost";
	$user = "root";
	$pass = "";
	$dbase = "produk";

	$konek = mysqli_connect($server, $user, $pass, $dbase) or die (mysqli_error($konek));

?>

silahkan dilanjutkan dengan pembuatan file index.php

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Produk</title>
</head>
<body>

	<table border="1">
		<thead>
			<tr>
				<th>No</th>
				<th>Nama</th>
				<th>Harga</th>
				<th></th>
			</tr>
		</thead>
		<tbody>
			<?php
				include "koneksi.php";
				$no = 1;
				$sql = "SELECT * FROM tbl_produk";
				$query = mysqli_query($konek, $sql);
				while($data = mysqli_fetch_array($query)){?>
					
					<tr>
						<td><?php echo $no; ?></td>
						<td><?php echo $data["nama_produk"]; ?></td>
						<td><?php echo $data["harga"]; ?></td>
						<td><a href="tambah.php?id=<?php echo $data["id_produk"];?>">Tambah</td>
					</tr>

					<?php $no++; ?>
				<?php }
			?>
			
		</tbody>
	</table>

</body>
</html>

pembuatan file tambah.php

<?php
	session_start();
	include "koneksi.php";

	$id = $_GET["id"];

	$sql = "SELECT * FROM tbl_produk WHERE id_produk='$id'";
	$query = mysqli_query($konek, $sql);

	$data = mysqli_fetch_array($query);
	$nm = $data["nama_produk"];
	$hg = $data["harga"];

	$_SESSION["cart"][$id] = [
		"nama" => $nm,
		"harga" => $hg,
		"jumlah" => 1
	];

	header("location: cart.php");
?>

buat file hapus.php

<?php
	session_start();
	include "koneksi.php";

	$id = $_GET["id"];

	unset($_SESSION["cart"][$id]);

	header("location:index.php");

?>

buat file beli.php

<?php
	session_start();
	include "koneksi.php";

	$tg = date("Y:m:d");

	$sql = "INSERT INTO tbl_transaksi(tanggal) VALUES('$tg')";
	$query = mysqli_query($konek, $sql);
	$id_t = mysqli_insert_id($konek);

	foreach($_SESSION["cart"] as $cart => $val){
		$sql = "INSERT INTO tbl_detail(id_transaksi, id_produk,jumlah) VALUES(".$id_t.",".$cart.",".$val["jumlah"].")";
		$query = mysqli_query($konek, $sql);
	}

	unset($_SESSION["cart"]);

	header("location: cart.php");
?>

dan yang terakhir adalah pembuatan file cart.php

<?php
	session_start();
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>cart</title>
</head>
<body>

	<?php
		if(empty($_SESSION["cart"])){
			echo "kosong";
		} else {
			?>
			<table border="1">
				<thead>
					<tr>
						<th>No</th>
						<th>Nama</th>
						<th>Harga</th>
						<th>Jumlah</th>
						<th>Subtotal</th>
						<th></th>
					</tr>
				</thead>
				<tbody>
					<?php
						$no=1;
						$grandtotal = 0;
						foreach ($_SESSION["cart"] as $cart => $val) {
							$subtotal = $val["harga"] * $val["jumlah"];
							?>
							<tr>
								<td><?php echo $no++; ?></td>
								<td><?php echo $val["nama"]; ?></td>
								<td><?php echo $val["harga"]; ?></td>
								<td><?php echo $val["jumlah"]; ?></td>
								<td><?php echo $subtotal; ?></td>
								<td>
									<a href="hapus.php?id=<?php echo $cart?>">Kosongkan</a>
								</td>
							</tr>
							<?php
							$grandtotal+=$subtotal;
						}
					?>
					<tr>
						<td colspan="4">Grand Total</td>	
						<td><?php echo $grandtotal; ?></td>
					</tr>
				</tbody>
			</table>

			<a href="beli.php">Checkout</a>

			<?php 
		}
	?>

</body>
</html>

Bagi teman-teman yang masih kesulitan disini akan diperlihatkan untuk hasil jadi secara keseluruhannya (demo), atau file dapat langsung diunduh.

Untuk live demonya dapat dilihat disini:

https://www.yellowweb.id/demo/keranjang/