πŸ’» Pemrograman Web 2
πŸŽ“ Pertemuan
Pertemuan 8: Ujian Tengah Semester (UTS)

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

AspekKeterangan
Jenis UjianUTS (Ujian Tengah Semester)
BentukPraktikum Pemrograman (Coding)
Cakupan MateriPertemuan 1-7 (PHP Native + MySQL)
Waktu120 menit (2 jam)
Bobot30% dari nilai akhir
SifatClosed book, individual
ToolsKomputer 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-CPMKDeskripsiPertemuan
04.1.1Menjelaskan konsep backend web dan alur request–response1
04.1.2Menjelaskan dan menggunakan sintaks dasar PHP2-5
04.1.3Menjelaskan konsep pengelolaan data menggunakan database MySQL6
04.1.4Menguraikan dan menerapkan konsep CRUD pada aplikasi web7

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)

NoKomponenPoinWaktu Estimasi
1Setup Database & Koneksi1515 menit
2READ - Tampilkan Data2025 menit
3CREATE - Tambah Data2530 menit
4UPDATE - Edit Data2025 menit
5DELETE - Hapus Data1010 menit
6Struktur Kode & UI1015 menit
TOTAL100120 menit

Ketentuan Ujian:

  1. Closed Book - Tidak boleh membuka modul atau internet
  2. Individual - Dikerjakan sendiri, tidak boleh bekerja sama
  3. No Copy-Paste - Semua code harus diketik manual
  4. Testing Required - Semua fitur harus ditest dan berfungsi
  5. Submission - Semua file harus di-push/upload ke repository (GitHub/GitLab) masing-masing mahasiswa. Tidak perlu mengumpulkan file ZIP.

E. SUBMISSION REQUIREMENTS

Format Pengumpulan:

  1. 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
  2. SQL Export:

    • Export database menggunakan phpMyAdmin
    • Include: struktur tabel + data
    • Nama file: database_export.sql
  3. Naming Convention:

    • Nama repository: uts-web2-[NIM] (contoh: uts-web2-2101234567)
    • Folder utama di repo: uts_[NIM] (contoh: uts_2101234567)
  4. 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):

WaktuAktivitasTips
0-15 menitSetup database & koneksiBuat database, tabel, sample data, test koneksi
15-35 menitREAD (index.php)Query data, buat tabel, test tampilan
35-65 menitCREATE (create.php)Buat form, validasi lengkap, test insert
65-90 menitUPDATE (edit.php)Ambil data, pre-fill form, test update
90-100 menitDELETE (delete.php)Validasi, delete, test
100-115 menitPolish & TestingCek semua fitur, perbaiki bug, rapikan UI
115-120 menitExport & SubmitExport SQL, push ke repository, kirim link

Strategi Pengerjaan:

  1. Baca soal 2x - Pastikan paham requirement
  2. Setup dulu - Database dan koneksi harus sempurna
  3. READ dulu - Pastikan data bisa ditampilkan
  4. CREATE second - Form input adalah fondasi
  5. Test berkala - Jangan tunggu sampai selesai semua
  6. Prioritas fitur wajib - CRUD harus jalan semua
  7. Jangan stuck - Skip yang sulit, kerjakan yang mudah dulu
  8. Sisakan waktu testing - Minimal 15 menit
  9. 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:

  1. PHP Basics:

    • Variabel, array, function
    • If-else, loop (for, while, foreach)
    • Form handling (GET, POST)
    • String manipulation
  2. Database:

    • CREATE TABLE syntax
    • INSERT, SELECT, UPDATE, DELETE
    • WHERE, ORDER BY
    • Primary Key, Auto Increment
  3. PHP-MySQL:

    • MySQLi connection
    • Prepared statement syntax
    • bind_param types (s, i, d, b)
    • fetch_assoc(), num_rows, affected_rows
  4. Security:

    • SQL injection dan cara mencegah
    • XSS dan cara mencegah
    • Input sanitization
    • Output escaping
  5. 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:

  1. Buat CRUD dari 0 - Minimal 3x untuk muscle memory
  2. Hafalkan prepared statement syntax - Akan sering dipakai
  3. Latih validasi - Pattern validasi harus jadi kebiasaan
  4. Speed coding - Latihan dalam waktu 2 jam
  5. 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:

  1. Membangun aplikasi web backend dengan PHP native
  2. Mengintegrasikan PHP dengan MySQL
  3. Implementasi security best practices
  4. 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