Studi Kasus: Minara College. Manajemen jadwal perkuliahan secara manual sering kali mengakibatkan bentrok jadwal (seperti Dosen yang harus mengajar di dua tempat, atau Ruangan yang terpakai ganda) dan ketimpangan beban SKS antar dosen.
Dibutuhkan sebuah sistem yang dapat memvalidasi ribuan kemungkinan kombinasi antara Dosen, Mata Kuliah, Ruang, dan Waktu secara real-time sesaat sebelum data disimpan ke database.
Saya membangun sistem ini berbasis PHP Native murni untuk mengejar performa maksimal dalam query logika yang berat tanpa terhambat beban dari *framework*.
Kekuatan utama sistem ini ada pada relasi tabel ploting_mengajar yang bertindak sebagai pusat (Bridge Table) untuk merajut entitas lain di dalam database.
pengampu: Menghubungkan Dosen -> Mata Kuliah -> Kelas -> Tahun Akademik.jadwal: Menyimpan ketersediaan slot Hari, Jam, & ID Ruang.ploting_mengajar: Menyatukan ID Pengampu dan ID Jadwal secara definitif dan tervalidasi.Berikut adalah potongan kode PHP Native yang saya gunakan untuk memvalidasi irisan waktu (Time Overlap) agar tidak ada jadwal yang bertabrakan baik secara ruangan maupun jadwal dosen.
function cekBentrok($hari, $jam_mulai, $jam_selesai, $id_ruang, $id_dosen) {
global $koneksi;
// 1. Cek Bentrok Ruangan (Apakah ruangan sedang dipakai orang lain?)
$queryRuang = "SELECT * FROM jadwal
JOIN ploting_mengajar ON jadwal.id_jadwal = ploting_mengajar.id_jadwal
WHERE hari = '$hari'
AND id_ruang = '$id_ruang'
AND (
('$jam_mulai' >= jam_mulai AND '$jam_mulai' < jam_selesai) OR
('$jam_selesai' > jam_mulai AND '$jam_selesai' <= jam_selesai)
)";
$cek1 = mysqli_num_rows(mysqli_query($koneksi, $queryRuang));
// Jika data ditemukan (cek1 > 0), berarti ada irisan waktu
if ($cek1 > 0) return "Error: Ruangan Sedang Terpakai pada Jam Tersebut!";
// 2. Cek Bentrok Dosen (Logic query serupa diterapkan untuk mengecek tabel pengampu)
// ...
return "OK"; // Lolos validasi, data aman untuk di-insert ke database
}