Cara Membuat Aplikasi Perpustakaan dengan PHP dan MySQL

Aplikasi perpustakaan adalah proyek klasik untuk belajar PHP dan MySQL karena melibatkan relasi antar tabel: buku, anggota, dan peminjaman. Artikel ini membahas cara membuat aplikasi perpустakaan dengan PHP dan MySQL beserta kode intinya.

Fitur yang Akan Dibuat

  • Kelola data buku (CRUD)
  • Kelola data anggota (CRUD)
  • Proses peminjaman buku
  • Pengembalian dengan hitung denda keterlambatan

Langkah 1: Struktur Database

CREATE TABLE buku (
    id INT AUTO_INCREMENT PRIMARY KEY,
    judul VARCHAR(200) NOT NULL,
    pengarang VARCHAR(120),
    stok INT DEFAULT 1
);

CREATE TABLE anggota (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama VARCHAR(120) NOT NULL,
    no_anggota VARCHAR(30) UNIQUE
);

CREATE TABLE peminjaman (
    id INT AUTO_INCREMENT PRIMARY KEY,
    buku_id INT,
    anggota_id INT,
    tgl_pinjam DATE,
    tgl_kembali DATE NULL,
    denda INT DEFAULT 0
);

Langkah 2: Proses Peminjaman

Saat anggota meminjam buku: catat peminjaman dan kurangi stok:

<?php
require "koneksi.php";
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $buku_id = (int) $_POST["buku_id"];
    $anggota_id = (int) $_POST["anggota_id"];

    // cek stok
    $b = $koneksi->query("SELECT stok FROM buku WHERE id=$buku_id")->fetch_assoc();
    if ($b["stok"] < 1) {
        die("Stok buku habis.");
    }
    $koneksi->query("INSERT INTO peminjaman (buku_id, anggota_id, tgl_pinjam)
                     VALUES ($buku_id, $anggota_id, CURDATE())");
    $koneksi->query("UPDATE buku SET stok = stok - 1 WHERE id=$buku_id");
    echo "Peminjaman berhasil dicatat.";
}
?>

Langkah 3: Pengembalian & Hitung Denda

Denda dihitung berdasarkan keterlambatan (misal Rp1.000/hari, batas 7 hari):

<?php
$id = (int) $_GET["id"]; // id peminjaman
$p = $koneksi->query("SELECT tgl_pinjam, buku_id FROM peminjaman WHERE id=$id")->fetch_assoc();

$batas = strtotime($p["tgl_pinjam"] . " +7 days");
$terlambat = floor((time() - $batas) / 86400);
$denda = $terlambat > 0 ? $terlambat * 1000 : 0;

$koneksi->query("UPDATE peminjaman SET tgl_kembali = CURDATE(), denda = $denda WHERE id=$id");
$koneksi->query("UPDATE buku SET stok = stok + 1 WHERE id=" . (int)$p["buku_id"]);

echo $denda > 0 ? "Terlambat! Denda: Rp" . number_format($denda) : "Dikembalikan tepat waktu.";
?>

Langkah 4: Menampilkan Riwayat

Gunakan JOIN untuk menampilkan peminjaman lengkap dengan nama buku & anggota:

SELECT p.id, b.judul, a.nama, p.tgl_pinjam, p.tgl_kembali, p.denda
FROM peminjaman p
JOIN buku b ON b.id = p.buku_id
JOIN anggota a ON a.id = p.anggota_id
ORDER BY p.id DESC;

Kesimpulan

Anda telah membuat inti aplikasi perpustakaan PHP dan MySQL dengan peminjaman, pengembalian, dan perhitungan denda. Kunci proyek ini adalah memahami relasi antar tabel dan JOIN. Untuk pengembangan, tambahkan login petugas, laporan, dan pencarian buku.

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 *