Di era digital seperti sekarang ini sebuah website ecommerce atau toko online harus memiliki fitur shopping cart dapat dikatakan shopping cart wajib hukumnya, karena fitur shopping cart ini akan memudahkan pengunjung untuk melakukan transaksi online di sebuah website ecommerce atau toko online.
DAFTAR ISI :
1. Pengenalan
2. Pembuatan Database and Table in MySQL
3. Struktur file
4. Membuat style.css
5. Membuat file functions.php
6. Membuat file index.php
7. Membuat file home.php
8. Membuat file products.php
9. Membuat file product.php
10.Membuat shopping cart page / cart.php
11.Membuat halaman place order /placeorder.php
12.Penutup
1. PENGENALAN
Dalam tutorial kali ini kita akan membuat sistem shopping cart dengan PHP dan MySQL. Sistem shopping cart akan memungkinkan pengunjung situs web kita untuk menelusuri produk, menambahkan produk ke keranjang, dan memesan secara online tentunya.
kita akan menggunakan antarmuka PDO untuk mengakses database MySQL kita dengan PHP karena akan memudahkan kita untuk berinteraksi dengan database kita dan memanipulasi tabel kita.
Sistem shopping cart yang akan kita buat akan berisi 4 produk dulu untuk memudahkan kita berlatih, nanti klu sudah mahir bisa ditambah lagi produknya. Produk-produk ini pada dasarnya hanyalah digunakan sebagai contoh untuk tutorial ini. Anda dapat menambahkan produk Anda sendiri nanti.
2. PEMBUATAN DATABASE DAN TABLE DI MySQL
2.1 Pembuatan Database ‘shoppingcart’
kita akan membuat 1 database dengan nama ‘shoppingcart’, masuk ke halaman http://localhost/phpmyadmin/ untuk membuat databasenya, untuk membuat databasenya jalankan perintah SQL berikut ‘CREATE DATABASE shoppingcart;’ di SQL querynya. seperti gambar dibawah ini.
2.2. Pembuatan Table `products`
Setelah berhasil membuat databasenya kita lanjut membuat tablenya. ikuti langkah-langkah dibawah ini :
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL,
`desc` text NOT NULL,
`price` decimal(7,2) NOT NULL,
`rrp` decimal(7,2) NOT NULL DEFAULT '0.00',
`quantity` int(11) NOT NULL,
`img` text NOT NULL,
`date_added` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
INSERT INTO `products` (`id`, `name`, `desc`, `price`, `rrp`, `quantity`, `img`, `date_added`) VALUES
(1, 'Smart Watch', '
Unique watch made with stainless steel, ideal for those that prefer interative watches.
\r\n
Features
\r\n
\r\n
Powered by Android with built-in apps.
\r\n
Adjustable to fit most.
\r\n
Long battery life, continuous wear for up to 2 days.
Kode pernyataan SQL di atas akan membuat tabel produk dengan kolom berikut :
id — Unique ID untuk product, ini kita setting auto incremented. name — Nama dari product. desc — Penjelasan dari product. price — harga dari product. rrp —Harga eceran, jika Anda ingin produk dijual, Anda menempatkan nilai lebih tinggi dari harga. date_added — Tanggal produk ditambahkan, kami akan menggunakan ini untuk menyortir produk.
Pernyataan SQL diatas juga akan memasukkan 4 contoh produk yang dapat kita gunakan untuk tujuan pengujian. Anda dapat mengubah/menghapusnya nanti di tutorial saat kita telah mengimplementasikan kodenya.
3. STRUKTUR FILE DAN FOLDER
Untuk struktur file dan folder pada project yang akan kita buat seperti gambar dibawah ini :
4. MEMBUAT FILE STYLE.CSS
File ini berguna untuk berfungsi untuk mengatur tampilan setiap elemen yang tertulis dalam bahasa markup / HTML. Fungsi lain dari CSS yakni untuk memisahkan konten dari tampilan visual dalam sebuah website.
tuliskan kode berikut dan simpan dengan nama style.css
File functions.php berisikan function-function untuk mengatur informasi yang ditampilkan di halaman website kita yang meliputi header template, footer template, dan fungsi koneksi database. Berikut kodenya dan simpan dengan nama functions.php
File index.php pada dasarnya akan menjadi file utama kita untuk mengakses semua halaman kita. Kita akan menggunakan routing dan menggunakan permintaan GET untuk menentukan halaman mana yang akan ditampikan seusai dengan action dari pengunjung.
Berikut kodenya dan simpan dengan nama index.php
7. MEMBUAT FILE HOME.PHP
Halaman Home akan menjadi halaman pertama yang akan dilihat pelanggan kita. Untuk halaman ini, kita dapat menambahkan gambar dan teks unggulan, bersama dengan daftar 4 produk yang baru saja ditambahkan.
Berikut kodenya dan simpan dengan nama home.php
prepare('SELECT * FROM products ORDER BY date_added DESC LIMIT 4');
$stmt->execute();
$recently_added_products = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
Halaman produk akan menjadi tempat pelanggan kami akan pergi untuk menelusuri semua produk kiat. Kita akan membatasi jumlah produk yang ditampilkan di setiap halaman dan menambahkan pagination yang memungkinkan pelanggan untuk menavigasi antar halaman.
Berikut kodenya dan simpan dengan nama products.php
prepare('SELECT * FROM products ORDER BY date_added DESC LIMIT ?,?');
// bindValue will allow us to use integer in the SQL statement, we need to use for LIMIT
$stmt->bindValue(1, ($current_page - 1) * $num_products_on_each_page, PDO::PARAM_INT);
$stmt->bindValue(2, $num_products_on_each_page, PDO::PARAM_INT);
$stmt->execute();
// Fetch the products from the database and return the result as an Array
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Get the total number of products
$total_products = $pdo->query('SELECT * FROM products')->rowCount();
?>
Halaman produk akan menampilkan semua detail untuk produk tertentu, ditentukan oleh variabel GET request ID. Pelanggan dapat melihat harga, gambar, dan deskripsi. Pelanggan akan dapat mengubah jumlah dan menambahkan ke keranjang dengan mengklik tombol.
Kodenya sebagaiberikut dan simpan dengan nama product.php
prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$_GET['id']]);
// Fetch the product from the database and return the result as an Array
$product = $stmt->fetch(PDO::FETCH_ASSOC);
// Check if the product exists (array is not empty)
if (!$product) {
// Simple error to display if the id for the product doesn't exists (array is empty)
exit('Product does not exist!');
}
} else {
// Simple error to display if the id wasn't specified
exit('Product does not exist!');
}
?>
">
$
0): ?>
$
10. MEMBUAT HALAMAN SHOPPING CART / CART.PHP
Halaman shoppingcart adalah tempat pelanggan dapat melihat daftar produk mereka yang ditambahkan ke keranjang belanja. Mereka akan memiliki kemampuan untuk menghapus produk dan memperbarui jumlahnya.
berikut kodenganya simpan dengan nama cart.php
prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$_POST['product_id']]);
// Fetch the product from the database and return the result as an Array
$product = $stmt->fetch(PDO::FETCH_ASSOC);
// Check if the product exists (array is not empty)
if ($product && $quantity > 0) {
// Product exists in database, now we can create/update the session variable for the cart
if (isset($_SESSION['cart']) && is_array($_SESSION['cart'])) {
if (array_key_exists($product_id, $_SESSION['cart'])) {
// Product exists in cart so just update the quanity
$_SESSION['cart'][$product_id] += $quantity;
} else {
// Product is not in cart so add it
$_SESSION['cart'][$product_id] = $quantity;
}
} else {
// There are no products in cart, this will add the first product to cart
$_SESSION['cart'] = array($product_id => $quantity);
}
}
// Prevent form resubmission...
header('location: index.php?page=cart');
exit;
}
// Remove product from cart, check for the URL param "remove", this is the product id, make sure it's a number and check if it's in the cart
if (isset($_GET['remove']) && is_numeric($_GET['remove']) && isset($_SESSION['cart']) && isset($_SESSION['cart'][$_GET['remove']])) {
// Remove the product from the shopping cart
unset($_SESSION['cart'][$_GET['remove']]);
}
// Update product quantities in cart if the user clicks the "Update" button on the shopping cart page
if (isset($_POST['update']) && isset($_SESSION['cart'])) {
// Loop through the post data so we can update the quantities for every product in cart
foreach ($_POST as $k => $v) {
if (strpos($k, 'quantity') !== false && is_numeric($v)) {
$id = str_replace('quantity-', '', $k);
$quantity = (int)$v;
// Always do checks and validation
if (is_numeric($id) && isset($_SESSION['cart'][$id]) && $quantity > 0) {
// Update new quantity
$_SESSION['cart'][$id] = $quantity;
}
}
}
// Prevent form resubmission...
header('location: index.php?page=cart');
exit;
}
// Send the user to the place order page if they click the Place Order button, also the cart should not be empty
if (isset($_POST['placeorder']) && isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
header('Location: index.php?page=placeorder');
exit;
}
// Check the session variable for products in cart
$products_in_cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();
$products = array();
$subtotal = 0.00;
// If there are products in cart
if ($products_in_cart) {
// There are products in the cart so we need to select those products from the database
// Products in cart array to question mark string array, we need the SQL statement to include IN (?,?,?,...etc)
$array_to_question_marks = implode(',', array_fill(0, count($products_in_cart), '?'));
$stmt = $pdo->prepare('SELECT * FROM products WHERE id IN (' . $array_to_question_marks . ')');
// We only need the array keys, not the values, the keys are the id's of the products
$stmt->execute(array_keys($products_in_cart));
// Fetch the products from the database and return the result as an Array
$products = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Calculate the subtotal
foreach ($products as $product) {
$subtotal += (float)$product['price'] * (int)$products_in_cart[$product['id']];
}
}
?>
Shopping Cart
11. MEMBUAT HALAMAN PLACE ORDER / PLACEORDER.PHP
Halaman ini berguna untuk mengarahkan konsumen jika menekan tombol place order
berikut kodenya simpan dengan nama placeorder.php
Your Order Has Been Placed
Thank you for ordering with us, we'll contact you by email with your order details.
12. PENUTUP
Selamat! Anda sudah berhasil membuat sistem shopping cart dengan PHP dan MySQL, ini hanyalah sistem SHOPPING CART dasar tempat Anda bekerja, oleh karena itu saya tidak menyarankan untuk melanjutkan produksi sampai Anda membuat sejumlah perubahan dan penambahan yang wajar, Anda perlu menambahkan penanganan kesalahan Anda sendiri, metode pembayaran, dan validasi.