Siap 👍
Kita lanjut UPDATE DATA BUKU versi OOP yang BENAR, RAPI, dan AMAN, pelan-pelan tanpa lompat.
Aku bagi bertahap supaya nyambung dengan struktur yang sudah kamu pakai.
🔷 TARGET AKHIR
Klik Edit
Form terbuka (enable)
Submit
Data ter-UPDATE ke database
Semua via OOP + prepared statement
1️⃣ TAMBAHKAN METHOD update() DI MODEL Buku.php
📌 Model = hanya urusan database
models/Buku.php
Salin kode
Php
public function update($id, $judul, $pengarang, $penerbit, $tahunterbit)
{
$query = "UPDATE buku
SET judul = ?, pengarang = ?, penerbit = ?, tahunterbit = ?
WHERE id = ?";
$stmt = mysqli_prepare($this->conn, $query);
mysqli_stmt_bind_param(
$stmt,
"ssssi",
$judul,
$pengarang,
$penerbit,
$tahunterbit,
$id
);
return mysqli_stmt_execute($stmt);
}
🔍 Penjelasan pelan-pelan
Bagian
Makna
ssssi
string, string, string, string, integer
?
placeholder (anti SQL Injection)
return true/false
tanda update sukses/gagal
2️⃣ FILE EDIT FORM (CONTROLLER + VIEW)
editBuku.php
Salin kode
Php
require_once 'config/database.php';
require_once 'models/Buku.php';
$db = new Database();
$conn = $db->connect();
$buku = new Buku($conn);
3️⃣ AMBIL DATA BERDASARKAN ID
Tambahkan method getById() di model:
Salin kode
Php
public function getById($id)
{
$query = "SELECT * FROM buku WHERE id = ?";
$stmt = mysqli_prepare($this->conn, $query);
mysqli_stmt_bind_param($stmt, "i", $id);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result(
$stmt,
$id,
$judul,
$pengarang,
$penerbit,
$tahunterbit
);
mysqli_stmt_fetch($stmt);
return [
'id' => $id,
'judul' => $judul,
'pengarang' => $pengarang,
'penerbit' => $penerbit,
'tahunterbit' => $tahunterbit
];
}
4️⃣ LOAD DATA KE FORM
Salin kode
Php
$data = $buku->getById($_GET['id']);
5️⃣ FORM (AWALNYA READONLY)
Salin kode
Html
<form method="post">
<input type="hidden" name="id" value="<?= $data['id']; ?>">
<input type="text" name="judul" value="<?= $data['judul']; ?>" readonly>
<input type="text" name="pengarang" value="<?= $data['pengarang']; ?>" readonly>
<input type="text" name="penerbit" value="<?= $data['penerbit']; ?>" readonly>
<input type="number" name="tahunterbit" value="<?= $data['tahunterbit']; ?>" readonly>
<button type="button" onclick="enableForm()">Edit</button>
<button type="submit" name="update">Update</button>
</form>
6️⃣ JAVASCRIPT (BUKA FORM)
Salin kode
Html
<script>
function enableForm() {
document.querySelectorAll("input").forEach(el => {
el.removeAttribute("readonly");
});
}
</script>
📌 Ini solusi dari masalah kamu sebelumnya
➡️ tombol edit PASTI membuka field
7️⃣ PROSES UPDATE (CONTROLLER)
Tambahkan di bawah:
Salin kode
Php
if (isset($_POST['update'])) {
$buku->update(
$_POST['id'],
$_POST['judul'],
$_POST['pengarang'],
$_POST['penerbit'],
$_POST['tahunterbit']
);
header("Location: tampilBuku.php");
}
8️⃣ FLOW YANG TERJADI (PAHAMIN INI)
Salin kode
Text
Klik Edit
↓
JS buka readonly
↓
Klik Update
↓
POST dikirim
↓
Controller panggil Model
↓
Prepared UPDATE
↓
Redirect
9️⃣ KESALAHAN UMUM (JANGAN DILAKUKAN)
❌ Query di file HTML
❌ mysqli_query di view
❌ JS dicampur PHP
❌ Input langsung tanpa prepared
🔥 NEXT STEP (TINGGAL PILIH)
1️⃣ DELETE OOP (aman)
2️⃣ Validasi form (OOP)
3️⃣ AdminLTE integration (benar)
4️⃣ MVC mini ala Laravel
Balas saja:
LANJUT DELETE OOP
Desember 21, 2025



0 komentar:
Posting Komentar