๐งช Studi Kasus: Mini Proyek Absensi โ
Capstone fundamental: bangun aplikasi absensi mahasiswa yang utuh dan bisa dijalankan (db_absensi / tb_absensi) hanya dari materi di bagian ini. Tidak ada file untuk diunduh. Kamu menyusunnya sendiri, dan setiap langkahnya sudah dibahas di halaman fundamental yang ditautkan di bawah.
Yang Akan Kamu Bangun โ
- โ Create: form tambah data (nama, NIM, status, tanggal)
- ๐ Read: tabel HTML berisi seluruh data dari database
- โ๏ธ Update: form edit yang terisi otomatis (pre-filled)
- ๐๏ธ Delete: hapus data dengan konfirmasi JavaScript
- ๐ Lanjutan: versi API JSON modern (PDO + prepared statements)
Peta Proyek โ
Struktur file yang kamu buat mengikuti proyek aslinya:
wri-backend-2026/
โโโ schema.sql # struktur database + tabel
โโโ koneksi.php # koneksi PHP ke MySQL (mysqli)
โโโ index.php # halaman utama: form + tabel daftar
โโโ edit.php # form edit pre-filled
โโโ hapus.php # hapus data via ?id=...
โโโ style.css # tampilan
โโโ api/
โโโ absensi.php # REST API JSON (PDO, lanjutan)| File | Dibahas di |
|---|---|
schema.sql (CREATE DATABASE, CREATE TABLE tb_absensi) | Database, MySQL |
koneksi.php (mysqli_connect, cek error, include) | PHP |
index.php (form POST, INSERT, SELECT + while ke tabel) | HTML, PHP, Server Side |
edit.php ($_GET['id'], value="...", UPDATE) | PHP, HTML |
hapus.php (DELETE, confirm(), redirect) | PHP, HTML |
api/absensi.php (PDO, validasi, status code) | PHP |
Cara Mengerjakan โ
Siapkan lingkungan mengikuti Instalasi & Setup (Windows, macOS, atau Linux).
Buat database dan tabel persis seperti di Database:
sqlCREATE DATABASE db_absensi; USE db_absensi; CREATE TABLE tb_absensi ( id INT AUTO_INCREMENT PRIMARY KEY, nama VARCHAR(100) NOT NULL, nim VARCHAR(20) NOT NULL, status ENUM('Hadir', 'Izin', 'Sakit', 'Alpa') NOT NULL, tanggal DATE NOT NULL );Tambah
edit.phpdanhapus.phpuntuk Update dan Delete.Jalankan: letakkan folder proyek di document root (misalnya
D:\laragon\www\di Laragon,/Applications/XAMPP/htdocs/di XAMPP) lalu bukahttp://localhost/wri-backend-2026/. Alternatif tanpa web server:php -S localhost:8000dari dalam folder proyek.Lanjutan: tulis ulang akses datanya memakai PDO + prepared statements, atau bangun
api/absensi.phpsebagai REST API JSON.
Referensi endpoint (versi API) โ
| Method | URL | Hasil |
|---|---|---|
GET | /api/absensi.php | Daftar + statistik, atau filter ?status=Hadir |
GET | /api/absensi.php?id=1 | Satu data (404 jika tidak ada) |
POST | /api/absensi.php | Tambah data (201, gagal validasi 422) |
PUT / PATCH | /api/absensi.php?id=1 | Update penuh / parsial |
DELETE | /api/absensi.php?id=1 | Hapus data |
Detail validasi, status code, dan perbandingan mysqli vs PDO ada di PHP.
๐ Catatan
Versi HTML (mysqli) cocok untuk belajar alur CRUD pertama kali. Untuk proyek nyata, pakai pola PDO. Atribut required di form membantu UX, tapi validasi sesungguhnya selalu di server.
โ Checklist Selesai โ
- [ ]
db_absensi+tb_absensiterbuat, server database berjalan - [ ]
koneksi.phpterhubung tanpa error - [ ] Form tambah menyimpan data dan redirect ke daftar
- [ ] Tabel menampilkan semua data via
SELECT+ loop - [ ] Form edit terisi data lama dan update bekerja (
UPDATE ... WHERE id) - [ ] Hapus meminta konfirmasi dan redirect setelah
DELETE - [ ] (Lanjutan) endpoint API merespons JSON dengan status code yang tepat
