Assalamu’alaikum warahmatullahi wabarakatuh. Hi, all!
Pada praktikum ke-6 mata kuliah pemrograman web semester 4 jurusan informatika, saya mempelajari dan mencobakan bagaimana membuat CRUD sederhana dengan konsep Object Oriented Programming (OOP) atau PBO dengan php dan MySQL di VS Code. Kali ini, saya akan memaparkan seluruh langkah-langkah yang harus dilakukan untuk membuat CRUD sederhana mengenai data mahasiswa.
PENGENALAN SINGKAT
Pemrograman Berorientasi Objek (Object-Oriented Programming/OOP) adalah paradigma pemrograman yang berfokus pada penggunaan objek untuk membangun aplikasi. Konsep dasarnya dimulai dari class, yaitu blueprint atau template yang digunakan untuk membuat banyak objek (instance) dengan struktur dan perilaku yang sama. Ketika sebuah objek dibuat dari class, ia akan memiliki member variable (atribut) dan member function (metode). Atribut menyimpan data milik objek, sedangkan metode digunakan untuk mengakses dan memanipulasi data tersebut. OOP mendukung enkapsulasi, yaitu proses menggabungkan data dan fungsi dalam satu unit (objek), serta menyembunyikan detail implementasinya agar hanya fungsi yang relevan saja yang bisa diakses dari luar.
Konsep inheritance (pewarisan) memungkinkan sebuah class baru (child class atau subclass) mewarisi atribut dan metode dari class lain (parent class atau superclass). Hal ini mendukung efisiensi dalam pengembangan program karena kode dapat digunakan kembali. Polymorphism memungkinkan fungsi atau metode yang sama digunakan dalam konteks berbeda, dan salah satu bentuk polymorphism adalah overloading, di mana suatu fungsi atau operator dapat memiliki implementasi berbeda tergantung pada tipe data yang digunakan. Selain itu, OOP juga menerapkan abstraksi data, yaitu menyembunyikan kompleksitas sistem dengan hanya menampilkan bagian penting kepada pengguna.
Dua fungsi khusus dalam OOP adalah constructor dan destructor. Constructor dipanggil secara otomatis saat objek dibuat untuk menginisialisasi nilai awal, sedangkan destructor dipanggil saat objek dihapus atau keluar dari cakupan (scope) untuk melakukan proses pembersihan memori. Dengan seluruh konsep ini, OOP mempermudah pemrograman yang kompleks menjadi lebih modular, dapat digunakan kembali, dan lebih mudah dipelihara.
PERSIAPAN
Langkah pertama yang bisa dilakukan yakni menginstall VSCode dan XAMPP serta buka MySQL. Lalu, buat folder baru dalam folder htdocs dengan nama crud. Namun, saya membuat strukturnya seperti:
htdocs>web_programming>OOP>crud
Untuk struktur lebih lengkap, dapat berpedoman kepada struktur berikut.

Buat folder assets, lalu buat file CSS dan JS dengan mengunduhnya pada link berikut.
CSS: https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/css/bootstrap.min.css
JS: https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/js/bootstrap.bundle.min.js
KONEKSI DATABASE
Buat database baru dengan nama pemrograman_web, lalu buat tabel mahasiswa dengan 4 kolom, yakni ID, nama, NIM, dan jurusan, sehingga akan terlihat seperti ini di database.

Setelah itu, kita bisa membuat koneksi ke MySQL dengan membuat file baru pada folder config, beri nama filenya Database.php. Buat kodenya seperti berikut.

Kode ini digunakan untuk membuat koneksi ke database MySQL menggunakan OOP di PHP. File ini merupakan class Database yang punya method getConnection() untuk menghubungkan website ke database pemrograman_web.
CONFIG
Selanjutnya, buat file Config.php dalam folder config. Ini adalah file yang digunakan untuk menyimpan variabel konstan seperti alamat utama (URL dasar) dari proyek website (dalam kode yakni BASE_URL). Dengan adanya config dan BASE_URL, kita bisa memanggil alamat dasar ini di berbagai file dalam proyek tanpa harus menuliskannya berulang-ulang. Hal ini memudahkan pengelolaan dan perubahan URL jika suatu saat diperlukan.

ALERT
Kemudian, buat folder function dan buat file Alert.php. Ini digunakan untuk membuat fungsi yang memberikan feedback berupa pesan kepada pengguna saat beroperasi dengan data. Ada 2 argument statement, yaitu $msg yang berisi pesan dan $sts yang berisi kode. Jika status = 1, maka pesan berhasil, namun jika 0 maka pesan gagal. Berikut kode program fungsi alert.

MODEL MAHASISWA
Selanjutnya, buat folder model lalu tambah file baru dengan nama Mahasiswa.php. Class (yang dibuat untuk mewakili data tabel mahasiswa) ini dibuat untuk membuat fungsi operasi CRUD. Pertama-tama, tambahkan kode untuk memulai sesi dengan session_start() dan deklarasikan variabel yang terlibat dan digunakan sebagai berikut. Fungsi construct di baris bawah adalah kode untuk memanggil koneksi database dari MySQL

Setelahnya, buat fungsi CRUD: Create data mahasiswa baru, read data mahasiswa yang sudah ada, update data mahasiswa dari perubahan terbaru berdasarkan ID, dan delete untuk menghapus data mahasiswa berdasarkan ID jika salah.
$_SESSION[‘flash_message’] berfungsi untuk membuat session yang berisi pesan berhasil atau tidak berhasil sebuah data baru. Sedangkan, header digunakan untuk mengarahkan kembali setelah menekan tombol ke file index.php dengan parameter msg. Jadi, setelah aksi selesai, user akan diarahkan kembali ke halaman utama/index.php dengan pesan sukses/gagal.
Fungsi read memiliki default parameter $id yang berisi string kosong, jika $id == “” maka akan mengeksekusi kueri untuk menampilkan seluruh data mahasiswa, jika $id !== “” maka akan mengeksekusi kueri untuk menampilkan data mahasiswa berdasarkan id mahasiswa. Berikut kode
program fungsi CRUD.


FUNCTION MAHASISWA
Kemudian, buat file baru di folder function, buat nama filenya Mahasiswa.php. File ini membantu sebagai jembatan antara database dan model yang telah dibuat tadi. File ini berfungsi sebagai controller yang menangani permintaan CUD dan mengarahkan ke method yang sesuai di class Mahasiswa. Berikut adalah kodenya.

Pertama akan dilakukan pengecekan sebuah parameter action yang dikirimkan melalui method GET, jika ada terdapat parameter action yang dikirimkan maka nilai parameter akan diambil dan digunakan sesuai dengan fungsinya. Singkatnya, kode ini tidak hanya mengambil koneksi ke database, namun juga membuat objek Mahasiswa dengan koneksi tersebut. Jika action=create, data dari form disimpan ke database. Jika action=update, data diubah berdasarkan id. Jika action=delete, data dihapus berdasarkan id.
TAMPILAN DATA
Untuk menampilkan data, bisa disebut file-filenya dengan sebutan “view” yang berfungsi untuk menampilkan dan memperbarui tampilan data. Beri nama dengan index.php. Ini adalah halaman utama yang menampilkan data mahasiswa dalam bentuk tabel, dan menyediakan tombol untuk tambah, edit, dan hapus data.


File ini berfungsi sebagai halaman utama untuk menampilkan data mahasiswa dari database dalam bentuk tabel. Pada bagian awal, file menghubungkan ke database dan memanggil method untuk mengambil data mahasiswa. Jika terdapat pesan dari sesi sebelumnya, seperti notifikasi sukses atau gagal saat menambah, mengedit, atau menghapus data, pesan tersebut akan ditampilkan sebagai alert. Di tabel, data mahasiswa ditampilkan dengan kolom NIM, Nama, dan Jurusan, serta terdapat tombol aksi untuk mengedit dan menghapus data mahasiswa. Tombol tambah mahasiswa mengarahkan ke halaman form input data baru. Saat tombol hapus diklik, pengguna akan diminta konfirmasi sebelum data dihapus.


Selanjutnya, buat file dengan nama edit.php untuk mengedit data yang sudah disubmit di data mahasiswa.


File ini berfungsi sebagai halaman edit data mahasiswa. Pertama, file menghubungkan ke database dan memanggil method untuk mengambil data mahasiswa berdasarkan id yang dikirim lewat URL ($_GET['id']). Data mahasiswa yang diambil kemudian ditampilkan di form HTML agar pengguna bisa mengubahnya. Form ini memiliki input untuk NIM, Nama, dan Jurusan, dengan nilai awal (value) sudah terisi dari data mahasiswa yang diambil tadi. Ada juga input tersembunyi untuk menyimpan id mahasiswa supaya saat dikirim ke server, data yang diedit tahu targetnya. Saat tombol “Update” ditekan, form akan mengirim data ke function/Mahasiswa.php dengan parameter action=update, di mana proses update di database akan dilakukan. Fungsi utama file ini adalah menampilkan form edit data mahasiswa dengan data awal terisi dan mempersiapkan data yang diupdate dikirim ke server.


Terakhir, buat file bernama create.php dalam folder CRUD tadi yang berisi form inputan untuk memambahkan data mahasiswa.

File ini adalah halaman untuk menambah data mahasiswa baru. Di sini, dibuat form dengan input untuk NIM, Nama, dan Jurusan yang wajib diisi (required). Setelah diisi, data akan dikirim via metode POST ke file function/Mahasiswa.php dengan parameter action=create yang bertugas memproses penambahan data ke database. Jadi, fungsi utama halaman ini adalah menyediakan form input agar user bisa memasukkan data mahasiswa baru yang nantinya disimpan ke database.


OPTIMALISASI CRUD
Dari program yang telah dibuat, dapat dilakukan optimalisasi seperti:
1. Menggabungkan file untuk create dan edit di dalam satu file saja
Terdapat redundansi antara create.php dan edit.php, karena keduanya sama-sama menampilkan formulir dengan input nim, nama, dan jurusan. Bedanya hanya di create.php buat form kosong untuk tambah data baru, sementara edit.php buat form dengan data sudah terisi untuk edit data lama. Jadi, untuk mempermudah pengelolaan dan mengurangi pengulangan kode., saya membuat file baru dengan nama form_mahasiswa.php untuk menangani create dan edit data.


Kode ini adalah halaman form dinamis untuk menambahkan (create) atau mengedit (update) data mahasiswa tergantung pada ada atau tidaknya parameter id di URL. Pertama, script memuat file koneksi database (Database.php) dan model mahasiswa (Mahasiswa.php), lalu membuat objek koneksi database dan objek Mahasiswa. Jika ada parameter id pada URL, maka dianggap mode edit dan data mahasiswa diambil berdasarkan id untuk ditampilkan di form, serta action form diarahkan ke proses update. Jika tidak ada id, maka form berjalan dalam mode create dengan field kosong dan action diarahkan ke proses create. Form ini menampilkan input untuk NIM, nama, dan jurusan, serta tombol submit yang teksnya akan berubah sesuai mode-nya (Create atau Update). Kode juga menggunakan fungsi htmlspecialchars() untuk menghindari potensi XSS saat menampilkan nilai di form.
Pada index, disesuaikan juga seperti ini agar saat ditekaan tombol tambah dan edit maka akan menuju ke laman form_mahasiswa.php.


2. Menambahkan aturan untuk pengisian NIM, nama, dan jurusan
Aturan pengisian di tambah dan edit untuk NIM adalah hanya bisa diisi oleh integer. Sementara, untuk nama dan jurusan hanya bisa diisi oleh string. Jika tidak sesuai atau kolom kosong, muncul peringatan bahwa input tidak sesuai atau kolom masih kosong.

Validasi data dibuat dengan JavaScript sebelum form dikirim (submit). Validasi dilakukan terhadap tiga field utama, yaitu NIM, Nama, dan Jurusan. Pertama-tama, kode menggunakan addEventListener untuk menangani submit form dengan ID. Saat tombol submit ditekan, kode ini dijalankan.
Langkah pertama di dalam fungsi ini adalah mengosongkan semua pesan kesalahan yang sebelumnya mungkin sudah ditampilkan, dengan mengakses elemen-elemen HTML yang memiliki ID nimError, namaError, dan jurusanError. Kemudian, variabel valid di-set ke true sebagai penanda bahwa secara default semua input dianggap valid. Setelah itu, masing-masing nilai input (nim, nama, dan jurusan) diambil menggunakan document.getElementById(…).value.trim() untuk menghapus spasi kosong di awal atau akhir teks.
Selanjutnya, validasi dilakukan satu per satu. Untuk nim, dicek apakah input kosong atau bukan angka murni menggunakan regex /^\d+$/. Jika tidak valid, akan muncul pesan error dan valid diubah menjadi false. Hal serupa dilakukan untuk nama dan jurusan, dengan regex /^[a-zA-Z\s]+$/ untuk memastikan hanya huruf dan spasi yang diizinkan. Jika ada satu saja field yang tidak valid, maka e.preventDefault() akan dipanggil di bagian akhir fungsi untuk mencegah form dikirim ke server, sehingga pengguna dapat memperbaiki inputnya terlebih dahulu.


Untuk proyek dan implementasi CRUD langsung dapat dilihat dan dicobakan dari link proyek GitHub saya.
Demikian pemaparan praktikum 6 pemrograman web kali ini. Silakan berikan kritik dan saran yang membangun untuk saya ke depannya.
Gracias!
Hi, this is a comment.
To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
Commenter avatars come from Gravatar.