Cara Membuat Website Toko Online Sederhana dengan PHP dan MySQL

Membuat toko online sendiri adalah proyek yang sangat bermanfaat untuk belajar PHP dan MySQL secara menyeluruh — karena mencakup katalog produk, keranjang belanja, dan checkout. Artikel ini membahas cara membuat website toko online sederhana dengan PHP dan MySQL beserta struktur dan kode intinya.

Fitur yang Akan Dibuat

  • Menampilkan katalog produk dari database
  • Keranjang belanja memakai session
  • Proses checkout yang menyimpan pesanan
  • Halaman admin untuk mengelola produk (CRUD)
Alur Toko Online Sederhana
Alur Toko Online Sederhana

Langkah 1: Struktur Database

Buat database toko lalu jalankan query berikut:

CREATE TABLE produk (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama VARCHAR(150) NOT NULL,
    harga INT NOT NULL,
    stok INT DEFAULT 0,
    gambar VARCHAR(255),
    deskripsi TEXT
);

CREATE TABLE pesanan (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama_pembeli VARCHAR(100),
    total INT,
    dibuat TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE pesanan_item (
    id INT AUTO_INCREMENT PRIMARY KEY,
    pesanan_id INT,
    produk_id INT,
    jumlah INT,
    subtotal INT
);

Langkah 2: Menampilkan Katalog

File index.php menampilkan semua produk:

<?php
require "koneksi.php";
$produk = $koneksi->query("SELECT * FROM produk WHERE stok > 0");
while ($p = $produk->fetch_assoc()):
?>
    <div class="produk">
        <h3><?= htmlspecialchars($p["nama"]) ?></h3>
        <p>Rp<?= number_format($p["harga"], 0, ",", ".") ?></p>
        <a href="keranjang.php?tambah=<?= $p["id"] ?>">+ Keranjang</a>
    </div>
<?php endwhile; ?>

Langkah 3: Keranjang Belanja (Session)

Keranjang disimpan di session agar bertahan antar halaman. File keranjang.php:

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

// Tambah produk ke keranjang
if (isset($_GET["tambah"])) {
    $id = (int) $_GET["tambah"];
    $_SESSION["keranjang"][$id] = ($_SESSION["keranjang"][$id] ?? 0) + 1;
    header("Location: keranjang.php");
    exit;
}

// Tampilkan isi keranjang
$total = 0;
if (!empty($_SESSION["keranjang"])) {
    foreach ($_SESSION["keranjang"] as $id => $jumlah) {
        $p = $koneksi->query("SELECT * FROM produk WHERE id = " . (int)$id)->fetch_assoc();
        $subtotal = $p["harga"] * $jumlah;
        $total += $subtotal;
        echo $p["nama"] . " x" . $jumlah . " = Rp" . number_format($subtotal) . "<br>";
    }
    echo "<b>Total: Rp" . number_format($total) . "</b>";
}
?>

Langkah 4: Proses Checkout

Saat checkout, simpan pesanan ke tabel pesanan dan pesanan_item:

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $nama = trim($_POST["nama"]);
    // simpan header pesanan
    $stmt = $koneksi->prepare("INSERT INTO pesanan (nama_pembeli, total) VALUES (?, ?)");
    $stmt->bind_param("si", $nama, $total);
    $stmt->execute();
    $pesanan_id = $koneksi->insert_id;

    // simpan tiap item
    foreach ($_SESSION["keranjang"] as $id => $jumlah) {
        $p = $koneksi->query("SELECT harga FROM produk WHERE id = " . (int)$id)->fetch_assoc();
        $subtotal = $p["harga"] * $jumlah;
        $koneksi->query("INSERT INTO pesanan_item (pesanan_id, produk_id, jumlah, subtotal)
                         VALUES ($pesanan_id, " . (int)$id . ", $jumlah, $subtotal)");
    }
    unset($_SESSION["keranjang"]); // kosongkan keranjang
    echo "Pesanan berhasil! Terima kasih.";
}
?>

Langkah 5: Halaman Admin

Admin mengelola produk lewat CRUD (lihat tutorial CRUD PHP MySQL) dan sebaiknya dilindungi dengan sistem login agar hanya admin yang bisa mengakses.

Kesalahan Umum

  • Keranjang hilang antar halaman — lupa session_start() di setiap file.
  • Query rawan injeksi — selalu (int) untuk id dan prepared statement untuk input.
  • Stok tidak berkurang — tambahkan UPDATE produk SET stok = stok - jumlah saat checkout.

Kesimpulan

Anda telah membuat kerangka toko online PHP dan MySQL: katalog, keranjang berbasis session, dan checkout yang menyimpan pesanan. Untuk pengembangan, tambahkan upload gambar produk, login pelanggan, dan integrasi pembayaran. Proyek ini melatih hampir semua konsep dasar pemrograman web.

Referensi: untuk pendalaman, kunjungi dokumentasi resmi PHP (php.net).

Baca Juga

Ali Akbar

Software Developer yang fokus mengembangkan aplikasi berbasis Web dan Desktop. Senang mempelajari teknologi baru terutama di bidang web design dan web development.

View all posts by Ali Akbar →

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *