Langkah 3 - Menambahkan Tombol Aksi di index.php
Biar data yang udah tampil bisa diapa-apain (dilihat detailnya, diedit, atau dihapus), kita perlu nambahin tombol aksi di tabel pada file index.php.
Tambahin kolom Aksi di bagian <thead>:
<th>Aksi</th>
Lalu, tambahin tombol-tombolnya di dalam <tbody> (di dalam perulangan while):
<td>
<a href="detail.php?id=<?= $data['id'] ?>" class="btn btn-info btn-sm">Detail</a>
<a href="edit.php?id=<?= $data['id'] ?>" class="btn btn-warning btn-sm">Edit</a>
<a href="hapus.php?id=<?= $data['id'] ?>" onclick="return confirm('Yakin ingin hapus?')" class="btn btn-danger btn-sm">Hapus</a>
</td>
Penjelasan Kode Tombol Aksi:
?id=<?= $data['id'] ?>: Ini cara kita ngirim ID produk lewat URL (namanya URL parameter). Jadi pas tombol diklik, halaman selanjutnya tau data mana yang lagi diproses.onclick="return confirm('...')": Fitur bawaan JavaScript buat nampilin pop-up konfirmasi sebelum data beneran dihapus. Biar nggak bahaya kalau kepencet.
Langkah 4 - Menampilkan Detail Data
Sekarang kita buat halaman untuk nampilin informasi lengkap satu produk. Buat file baru bernama detail.php dan masukkan kode berikut:
<?php
include "koneksi.php";
// Tangkap ID dari URL
$id = $_GET['id'];
// Ambil data produk yang ID-nya sesuai
$query = mysqli_query($conn, "SELECT * FROM produk WHERE id=$id");
$data = mysqli_fetch_assoc($query);
?>
<!DOCTYPE html>
<html>
<head>
<title>Detail Produk</title>
<link href="[<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>](<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>)" rel="stylesheet">
</head>
<body class="bg-light">
<div class="container mt-5">
<h2 class="mb-4">Detail Produk</h2>
<div class="card" style="width: 400px;">
<img src="img/<?= $data['gambar'] ?>" class="card-img-top">
<div class="card-body">
<h5 class="card-title"><?= $data['nama'] ?></h5>
<p class="card-text">
Harga: Rp <?= number_format($data['harga']) ?>
</p>
<p class="card-text"><?= $data['deskripsi'] ?></p>
<a href="index.php" class="btn btn-secondary">Kembali</a>
</div>
</div>
</div>
</body>
</html>
Penjelasan Kode detail.php:
-
Menangkap Data dari URL
$id = $_GET['id'];Kalau di form kita pakai
$_POST, nah kalau datanya dikirim lewat URL (sepertidetail.php?id=5), kita tangkapnya wajib pakai$_GET. -
Query Mengambil Satu Data Spesifik
$query = mysqli_query($conn, "SELECT * FROM produk WHERE id=$id");Perhatikan ada tambahan
WHERE id=$id. Ini fungsinya buat memfilter, jadi database cuma ngembaliin satu baris data aja yang ID-nya cocok, nggak semuanya. -
Tampilan Card Bootstrap
<div class="card" style="width: 400px;"> <!-- isi detail --> </div>Biar tampilannya kayak katalog, kita pakai komponen Card dari Bootstrap. Tinggal masukin gambar, judul, dan teks di dalamnya, otomatis jadi rapi.
Langkah 5 - Edit Data (UPDATE)
Buat ngedit data, kita butuh file edit.php. Kodenya lumayan panjang karena kita gabungin proses nampilin data lama ke dalam form, sekaligus proses nyimpen perubahan datanya:
<?php
include "koneksi.php";
// Tangkap ID dan ambil data lama
$id = $_GET['id'];
$data = mysqli_fetch_assoc(mysqli_query($conn, "SELECT * FROM produk WHERE id=$id"));
// Proses kalau tombol update diklik
if (isset($_POST['submit'])) {
$nama = $_POST['nama'];
$harga = $_POST['harga'];
$deskripsi = $_POST['deskripsi'];
// Update data di database
mysqli_query($conn, "UPDATE produk SET
nama='$nama',
harga='$harga',
deskripsi='$deskripsi'
WHERE id=$id
");
// Pindah otomatis ke halaman index
header("Location: index.php");
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Edit Produk</title>
<link href="[<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>](<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>)" rel="stylesheet">
</head>
<body class="bg-light">
<div class="container mt-5">
<h2 class="mb-4">Edit Produk</h2>
<form method="POST">
<label>Nama Produk</label>
<input name="nama" value="<?= $data['nama'] ?>" class="form-control mb-2">
<label>Harga</label>
<input name="harga" value="<?= $data['harga'] ?>" class="form-control mb-2">
<label>Deskripsi</label>
<textarea name="deskripsi" class="form-control mb-3"><?= $data['deskripsi'] ?></textarea>
<button name="submit" class="btn btn-primary">Update</button>
</form>
</div>
</body>
</html>
Penjelasan Kode edit.php:
-
Menampilkan Data Lama di Form
<input name="nama" value="<?= $data['nama'] ?>" class="form-control mb-2"> <textarea name="deskripsi"><?= $data['deskripsi'] ?></textarea>Biar form editnya nggak kosong, kita isi pakai data yang ada di database. Untuk
<input>, datanya ditaruh di dalam atributvalue. Tapi khusus untuk<textarea>, datanya diselipin di tengah-tengah tag pembuka dan penutup. -
Query Update Data
mysqli_query($conn, "UPDATE produk SET nama='$nama', harga='$harga', deskripsi='$deskripsi' WHERE id=$id");Perintah
UPDATE ... SETdigunakan untuk nimpa data lama dengan data baru. Penting: Harus selalu pakaiWHERE id=$iddi belakangnya! Kalau nggak pakaiWHERE, semua data produk kalian bakal berubah semua.
3. Redirect Halaman
header("Location: index.php");
Fungsi header() ini dipakai buat redirect atau mindahin user secara otomatis balik ke halaman utama (index.php) setelah data berhasil di-update.
Langkah 6 - Hapus Data (DELETE)
Terakhir, bikin file hapus.php. File ini nggak butuh tampilan HTML, karena dia cuma jalan di latar belakang buat ngehapus data, terus langsung redirect ke halaman utama lagi.
<?php
include "koneksi.php";
// Tangkap ID dari URL
$id = $_GET['id'];
// Hapus data dari database
mysqli_query($conn, "DELETE FROM produk WHERE id=$id");
// Pindah otomatis ke halaman index
header("Location: index.php");
?>
Penjelasan Kode hapus.php:
Query Hapus Data
mysqli_query($conn, "DELETE FROM produk WHERE id=$id");
Perintah DELETE FROM produk berfungsi untuk menghapus baris data. Sama kayak proses update, di sini kita juga wajib banget ngasih WHERE id=$id biar sistem tau mana data spesifik yang mau dihapus. Kalau lupa kasih WHERE, data seisi tabel bisa hilang semua.