MODUL PEMROGRAMAN WEBSITE 2
Mata Kuliah: Pemrograman Website 2
Kode MK: INF2419
SKS: 3 (Praktikum)
Semester: Genap 2025/2026
Program Studi: Informatika
Fakultas: FEBI / Saintek
Universitas: UIN K.H. Abdurrahman Wahid Pekalongan
Dosen Pengampu: Mohammad Reza Maulana, M.Kom
NIP: 199110082025051002
Pertemuan: 8 dari 16
Durasi: 120 menit (2 Γ 60 menit)
Studi Kasus Berkelanjutan: Sistem Manajemen Perpustakaan
PERTEMUAN 8
UJIAN TENGAH SEMESTER (UTS)
A. INFORMASI UJIAN
| Aspek | Keterangan |
|---|---|
| Jenis Ujian | UTS (Ujian Tengah Semester) |
| Bentuk | Praktikum Pemrograman (Coding) |
| Cakupan Materi | Pertemuan 1-7 (PHP Native + MySQL) |
| Waktu | 120 menit (2 jam) |
| Bobot | 30% dari nilai akhir |
| Sifat | Closed book, individual |
| Tools | Komputer lab, XAMPP, Text Editor |
B. CAPAIAN PEMBELAJARAN YANG DIUJIKAN
CPL yang Diujikan:
- CPL04: Menguasai konsep teoretis bidang ilmu komputer/informatika dan mampu memformulasikan penyelesaian masalah prosedural
CPMK yang Diujikan:
- CPMK04.1: Memahami konsep dasar pengembangan web backend menggunakan PHP dan database
Sub-CPMK yang Diujikan:
| Sub-CPMK | Deskripsi | Pertemuan |
|---|---|---|
| 04.1.1 | Menjelaskan konsep backend web dan alur requestβresponse | 1 |
| 04.1.2 | Menjelaskan dan menggunakan sintaks dasar PHP | 2-5 |
| 04.1.3 | Menjelaskan konsep pengelolaan data menggunakan database MySQL | 6 |
| 04.1.4 | Menguraikan dan menerapkan konsep CRUD pada aplikasi web | 7 |
C. CAKUPAN MATERI
1. PHP Fundamentals (Pertemuan 2-5)
- Sintaks dasar PHP (variabel, tipe data, operator)
- Kontrol alur (if-else, switch, for, while, foreach)
- Array (indexed, associative, multidimensional)
- Function (parameter, return value, scope)
- Form handling (GET, POST, validasi)
- String manipulation dan formatting
2. Database MySQL (Pertemuan 6)
- Konsep database relasional
- DDL: CREATE TABLE, ALTER, DROP
- DML: INSERT, SELECT, UPDATE, DELETE
- WHERE, ORDER BY, LIMIT
- Primary Key, Auto Increment
3. PHP-MySQL Integration (Pertemuan 7)
- Koneksi database dengan MySQLi
- Prepared statements (security)
- CRUD operations dengan database
- Form validation dan sanitization
- Error handling
- Redirect dan session messages
D. FORMAT UJIAN
Struktur Ujian (Total: 100 poin)
| No | Komponen | Poin | Waktu Estimasi |
|---|---|---|---|
| 1 | Setup Database & Koneksi | 15 | 15 menit |
| 2 | READ - Tampilkan Data | 20 | 25 menit |
| 3 | CREATE - Tambah Data | 25 | 30 menit |
| 4 | UPDATE - Edit Data | 20 | 25 menit |
| 5 | DELETE - Hapus Data | 10 | 10 menit |
| 6 | Struktur Kode & UI | 10 | 15 menit |
| TOTAL | 100 | 120 menit |
Ketentuan Ujian:
- Closed Book - Tidak boleh membuka modul atau internet
- Individual - Dikerjakan sendiri, tidak boleh bekerja sama
- No Copy-Paste - Semua code harus diketik manual
- Testing Required - Semua fitur harus ditest dan berfungsi
- Submission - Semua file harus di-push/upload ke repository (GitHub/GitLab) masing-masing mahasiswa. Tidak perlu mengumpulkan file ZIP.
E. SUBMISSION REQUIREMENTS
Format Pengumpulan:
-
Repository Structure:
- Buat repository baru di GitHub/GitLab dengan nama:
uts-web2-[NIM] - Struktur folder di dalam repo:
uts_[NIM]/ βββ config/ β βββ database.php βββ index.php βββ create.php βββ edit.php βββ delete.php βββ database_export.sql
- Buat repository baru di GitHub/GitLab dengan nama:
-
SQL Export:
- Export database menggunakan phpMyAdmin
- Include: struktur tabel + data
- Nama file:
database_export.sql
-
Naming Convention:
- Nama repository:
uts-web2-[NIM](contoh:uts-web2-2101234567) - Folder utama di repo:
uts_[NIM](contoh:uts_2101234567)
- Nama repository:
-
Submission Link:
- Setelah selesai, push semua file ke repository
- Kirimkan link repository melalui Ngaji UIN Gusdur pada form pengumpulan UTS yang tersedia
Waktu Pengumpulan:
- Waktu ujian: 120 menit
- Submit link repo maksimal 10 menit setelah waktu habis
- Keterlambatan: pengurangan nilai 5 poin per 5 menit
F. KETENTUAN UJIAN
Yang Diperbolehkan:
β
Menggunakan text editor favorit (VS Code, Sublime, Notepad++)
β
Menggunakan XAMPP/Laragon
β
Membuka phpMyAdmin untuk cek database
β
Testing aplikasi di browser
β
Menggunakan Bootstrap dari CDN
Yang TIDAK Diperbolehkan:
β Membuka modul atau catatan
β Membuka internet (kecuali CDN Bootstrap)
β Bertanya atau bekerja sama dengan peserta lain
β Menggunakan AI tools (ChatGPT, Copilot, dll)
β Copy-paste code dari sumber manapun
Sanksi Pelanggaran:
- Peringatan pertama: Nilai dikurangi 20 poin
- Pelanggaran kedua: Nilai 0 (nol)
- Pelanggaran berat (mencontek): Diskualifikasi + sanksi akademik
G. TIPS & STRATEGI MENGERJAKAN
Time Management (120 menit):
| Waktu | Aktivitas | Tips |
|---|---|---|
| 0-15 menit | Setup database & koneksi | Buat database, tabel, sample data, test koneksi |
| 15-35 menit | READ (index.php) | Query data, buat tabel, test tampilan |
| 35-65 menit | CREATE (create.php) | Buat form, validasi lengkap, test insert |
| 65-90 menit | UPDATE (edit.php) | Ambil data, pre-fill form, test update |
| 90-100 menit | DELETE (delete.php) | Validasi, delete, test |
| 100-115 menit | Polish & Testing | Cek semua fitur, perbaiki bug, rapikan UI |
| 115-120 menit | Export & Submit | Export SQL, push ke repository, kirim link |
Strategi Pengerjaan:
- Baca soal 2x - Pastikan paham requirement
- Setup dulu - Database dan koneksi harus sempurna
- READ dulu - Pastikan data bisa ditampilkan
- CREATE second - Form input adalah fondasi
- Test berkala - Jangan tunggu sampai selesai semua
- Prioritas fitur wajib - CRUD harus jalan semua
- Jangan stuck - Skip yang sulit, kerjakan yang mudah dulu
- Sisakan waktu testing - Minimal 15 menit
- Export & backup - Save progress berkala
Common Mistakes to Avoid:
β Lupa prepared statement (langsung nilai 0 untuk security)
β Tidak sanitasi input (SQL injection risk)
β Lupa validasi duplikasi kode
β Update/Delete tidak pakai WHERE (berbahaya!)
β Tidak test sebelum submit
β Lupa export database
β File koneksi salah nama database
Debugging Quick Tips:
// Cek koneksi
if ($conn->connect_error) {
die("Error: " . $conn->connect_error);
}
// Cek query error
if (!$stmt) {
die("Query error: " . $conn->error);
}
// Cek hasil query
if ($result->num_rows == 0) {
echo "Data tidak ditemukan";
}
// Debug variable
var_dump($variable); // Hapus sebelum submit!H. CONTOH PENYELESAIAN (REFERENSI)
Contoh penyelesaian tersedia di dokumen kunci jawaban dosen.
I. FREQUENTLY ASKED QUESTIONS (FAQ)
Q1: Boleh menggunakan framework seperti Laravel?
A: Tidak. UTS hanya boleh PHP Native + MySQL. Laravel untuk UAS.
Q2: Wajib pakai prepared statement?
A: YA, wajib! Jika tidak pakai prepared statement, nilai security = 0.
Q3: Boleh buka Google untuk cari syntax?
A: Tidak. Ujian bersifat closed book. Hafalkan syntax dasar.
Q4: Kalau stuck di satu bagian, gimana?
A: Skip dulu, kerjakan yang lain. Prioritas CRUD semua jalan.
Q5: Bootstrap wajib?
A: Direkomendasikan untuk nilai UI. Minimal gunakan class table dan button.
Q6: Validasi client-side (JavaScript) perlu?
A: Opsional. Prioritas validasi server-side dulu.
Q7: Bagaimana kalau waktu tidak cukup?
A: Fokus pada: Database β READ β CREATE. Ini 60% nilai.
Q8: Boleh ganti studi kasus?
A: Tidak. Harus sesuai soal yang diberikan.
Q9: File koneksi boleh berbeda dengan contoh?
A: Boleh, yang penting koneksi berfungsi dan aman.
Q10: Apakah akan ada remedial?
A: Tidak ada remedial UTS. Pastikan persiapan maksimal.
J. CHECKLIST SEBELUM SUBMIT
Pastikan semua ini sudah dikerjakan:
Database & Files:
- Database terbuat dengan nama yang benar
- Tabel kategori sesuai struktur
- Sample data minimal 3 record
- File database.php ada dan berfungsi
- Database di-export ke .sql file
CRUD Functionality:
- READ: Data tampil di tabel
- CREATE: Bisa tambah data baru
- UPDATE: Bisa edit data existing
- DELETE: Bisa hapus data
- Semua menggunakan prepared statement
Validation:
- Kode kategori: required, length, format, unique
- Nama kategori: required, length
- Deskripsi: optional, max length
- Status: required, valid value
- Validasi duplikasi kode
Security:
- Prepared statement di semua query
- Input disanitasi dengan htmlspecialchars()
- Trim whitespace
- Escape output
- SQL injection prevention
UI/UX:
- Bootstrap digunakan dengan baik
- Tabel rapi dan readable
- Badge status dengan warna yang tepat
- Tombol dengan warna semantik
- Pesan sukses/error ditampilkan
- Konfirmasi delete ada
Code Quality:
- Indentasi konsisten
- Variabel dengan nama jelas
- Komentar di bagian penting
- Tidak ada code yang tidak terpakai
- Tidak ada error PHP
- Tidak ada warning
Testing:
- CREATE: Test tambah data β Berhasil
- READ: Test tampil data β Berhasil
- UPDATE: Test edit data β Berhasil
- DELETE: Test hapus data β Berhasil
- Validasi error: Test input invalid β Error tampil
- Redirect: Test flow β Smooth
Submission:
- Struktur folder di repository sesuai format
- Semua file sudah di-push ke repository
- Database export (
database_export.sql) included - Semua file ada (5 file .php + 1 file .sql)
- Link repository sudah dikirimkan
K. PERSIAPAN SEBELUM UJIAN
Hal yang Harus Dikuasai:
-
PHP Basics:
- Variabel, array, function
- If-else, loop (for, while, foreach)
- Form handling (GET, POST)
- String manipulation
-
Database:
- CREATE TABLE syntax
- INSERT, SELECT, UPDATE, DELETE
- WHERE, ORDER BY
- Primary Key, Auto Increment
-
PHP-MySQL:
- MySQLi connection
- Prepared statement syntax
- bind_param types (s, i, d, b)
- fetch_assoc(), num_rows, affected_rows
-
Security:
- SQL injection dan cara mencegah
- XSS dan cara mencegah
- Input sanitization
- Output escaping
-
Bootstrap:
- Class tabel: table, table-striped
- Class button: btn, btn-primary, dll
- Class badge: badge, bg-success, bg-danger
- Grid system: container, row, col
Latihan yang Disarankan:
- Buat CRUD dari 0 - Minimal 3x untuk muscle memory
- Hafalkan prepared statement syntax - Akan sering dipakai
- Latih validasi - Pattern validasi harus jadi kebiasaan
- Speed coding - Latihan dalam waktu 2 jam
- Debug errors - Biasakan cek error dan fix cepat
Resources untuk Belajar:
- Modul Pertemuan 2-7
- Dokumentasi PHP: php.net/manual
- Bootstrap docs: getbootstrap.com
- phpMyAdmin documentation
L. KATA PENUTUP
UTS ini dirancang untuk mengukur pemahaman dan kemampuan praktis Anda dalam:
- Membangun aplikasi web backend dengan PHP native
- Mengintegrasikan PHP dengan MySQL
- Implementasi security best practices
- Problem-solving dalam waktu terbatas
Tips Terakhir:
- Persiapkan diri dengan baik
- Tidur cukup sebelum ujian
- Datang tepat waktu
- Baca soal dengan teliti
- Manage waktu dengan bijak
- Tetap tenang dan fokus
- Test sebelum submit
Ingat: Nilai UTS 30% dari nilai akhir. Berikan usaha terbaik Anda!
Selamat Mengerjakan! πͺπ
Good luck and code well!
End of UTS Module - Pertemuan 8
Next: Pertemuan 9 - Pengenalan Framework Laravel & MVC