Simpan dan Tampilkan: CRUD Bagian Create dan Read Data Pasien
INSERT, SELECT, dan Tampil dalam Tabel — Artikel 9 dari 16, Pemrograman Web D4 MIK
Bayangkan kamu bertugas di pendaftaran sebuah klinik. Setiap pagi puluhan pasien datang, dan semua datanya masih ditulis tangan di buku register. Saat dokter meminta data Bu Siti, kamu harus membolak-balik puluhan halaman. Capek, kan? Nah, di sinilah CRUD PHP MySQL jadi penyelamat.
Di artikel ini kamu akan membuat dua kemampuan paling dasar sebuah aplikasi data: menyimpan pasien baru (Create) dan menampilkannya dalam tabel yang rapi (Read). Semuanya dipraktikkan langsung di laboratorium dengan XAMPP, phpMyAdmin, dan Sublime Text, memakai data fiktif. Cocok untukmu yang baru belajar pemrograman web. Artikel ini adalah bagian dari seri Pemrograman Web D4 MIK (Artikel 9 dari 16).
Mahasiswa mampu mengimplementasikan proses Create dan Read pada aplikasi PHP-MySQL untuk pengelolaan data pasien. Di akhir artikel, kamu punya form input pasien dan halaman daftar pasien yang berjalan di
http://localhost/.
Konsep CRUD PHP MySQL: Create dan Read Itu Apa Sih?
CRUD adalah singkatan dari Create, Read, Update, Delete, empat operasi dasar pada data. Di artikel ini kita fokus pada dua yang pertama. Analoginya begini: Create itu petugas pendaftaran yang mengisi buku register pasien baru, sedangkan Read itu perawat yang membuka daftar pasien hari ini. Bedanya, buku register kita sekarang berupa tabel pasien di MySQL.
READ → SELECT kolom FROM tabel ORDER BY kolom
Aplikasi PHP tidak pernah “menyimpan” data sendiri. PHP hanya perantara yang mengirim perintah SQL ke MySQL. Jadi kalau data tidak muncul, tanyakan dua hal: perintah SQL-nya benar tidak, dan koneksinya nyambung tidak?
Praktik Create: Form dan INSERT Data Pasien di CRUD PHP MySQL
Saatnya praktik. Pastikan Apache dan MySQL di XAMPP Control Panel sudah Start (berwarna hijau). Kita pakai tabel pasien dari Artikel 8. Kalau namamu berbeda, sesuaikan nama database dan kolom di semua kode berikut.
Belum punya tabelnya? Buka
http://localhost/phpmyadmin, klik tab SQL, lalu jalankan kode di bawah. Perintah IF NOT EXISTS membuatnya aman dijalankan ulang.
Langkah Kerja: Membuat Form dan Proses Simpan
C:\xampp\htdocs\, buat folder klinik_mik. Semua file di bawah disimpan di folder ini lewat Sublime Text (File → Save As, ekstensi .php).koneksi.php. File ini jembatan ke MySQL, dan akan kamu include di file lain.form_tambah.php. Perhatikan atribut name di tiap input. Nama itulah yang nanti dibaca PHP lewat $_POST.proses_simpan.php. Ini otak dari proses Create. Tanda tanya ? pada query adalah “lubang kosong” yang diisi nilai dari form secara aman (prepared statement).Kategori Injection, termasuk SQL injection, masuk daftar OWASP Top 10 tahun 2021 (A03). Prepared statement adalah salah satu pertahanan utama yang direkomendasikan OWASP. Artikel 10 akan membedahnya lebih dalam.
"... VALUES ('$nama', ...)"Input pengguna menempel langsung ke SQL. Teks “nakal” bisa mengubah makna query.
"... VALUES (?, ?, ...)"Struktur SQL dikirim dulu, nilai dikirim terpisah sebagai data murni, bukan perintah.
http://localhost/klinik_mik/form_tambah.php, isi data fiktif (misalnya RM0001, Siti Rahmawati, 1995-04-12, P), lalu klik Simpan Data. Halaman akan berpindah ke data_pasien.php, yang kita buat sekarang.Praktik Read: SELECT dan Tampilkan dalam Tabel pada CRUD PHP MySQL
Data sudah masuk, tapi belum kelihatan. Bagian Read bekerja dalam tiga gerakan: kirim query SELECT, ambil hasilnya baris demi baris, lalu cetak ke dalam tag <tr> HTML. Seperti perawat yang membaca daftar nama satu per satu sambil mencatatnya di papan antrean.
data_pasien.php. Fungsi mysqli_fetch_assoc() mengambil satu baris per putaran while, dan htmlspecialchars() melindungi tampilan dari kode HTML/JavaScript tersisip.http://localhost/klinik_mik/data_pasien.php. Tambahkan 2–3 pasien fiktif lagi lewat form, lalu perhatikan bahwa data terbaru muncul paling atas karena ORDER BY id_pasien DESC.+----+--------+----------------+------------+----+ | No | No. RM | Nama Pasien | Tgl Lahir | JK | +----+--------+----------------+------------+----+ | 1 | RM0003 | Ayu Lestari | 2001-11-30 | P | | 2 | RM0002 | Budi Santoso | 1988-07-02 | L | | 3 | RM0001 | Siti Rahmawati | 1995-04-12 | P | +----+--------+----------------+------------+----+
Mau menyiapkan data uji cepat tanpa mengetik form berulang? Jalankan di tab SQL phpMyAdmin:
INSERT INTO pasien (no_rm, nama_pasien, tanggal_lahir, jenis_kelamin, alamat, no_hp) VALUES ('RM0002','Budi Santoso','1988-07-02','L','Jl. Kenanga No. 8','081200000002'); Lalu cek dengan SELECT * FROM pasien;
Error yang Sering Muncul & Cara Mengatasinya
Error itu normal, bahkan programmer berpengalaman tiap hari bertemu dengannya. Baca pesannya pelan-pelan, karena hampir selalu menyebut penyebabnya.
Jangan pernah memakai data pasien asli untuk latihan. Di dunia nyata, data kesehatan bersifat sangat rahasia. Biasakan dari sekarang memakai nama, NIK, dan nomor HP fiktif.
Sejak PHP 8.1, mysqli melempar exception secara bawaan ketika query gagal. Itu sebabnya error “Duplicate entry” di atas tampil sebagai Fatal error, bukan lewat blok
else milik kita.
Latihan Mandiri: Kuasai Create dan Read
Kerjakan di folder klinik_mik dan uji hasilnya satu per satu di browser.
Tugas 1 — Kolom baru. Tambahkan kolom golongan_darah (A, B, AB, O) lewat phpMyAdmin, masukkan ke form dan query INSERT, lalu tampilkan di tabel.
Tugas 2 — Hitung jumlah. Di atas tabel, tampilkan teks “Total pasien: N” memakai SELECT COUNT(*) AS total FROM pasien.
Tugas 3 — Cari pasien. Buat kotak pencarian nama di data_pasien.php dengan WHERE nama_pasien LIKE ? (tetap pakai prepared statement). Tampilkan pesan jika tidak ada hasil.
Kesimpulan CRUD PHP MySQL: Dua Langkah Pertama Sudah Kamu Kuasai
Hari ini kamu sudah membangun fondasi CRUD PHP MySQL. Ringkasnya:
• Create memakai INSERT, dengan data dari form dan prepared statement agar aman.
• Read memakai SELECT, dibaca dengan mysqli_fetch_assoc() dan dicetak ke tabel HTML.
• Tampilan data selalu diamankan dengan htmlspecialchars().
Sudah berhasil menampilkan pasien pertamamu? Tulis pengalamanmu di komentar, termasuk error yang bikin kamu menyerah sejenak. Kalau artikel ini membantu, bagikan ke teman sekelasmu!
๐ฌ Tulis Komentar ๐ค Bagikan via WhatsApp- PHP Manual — MySQLi prepared statements: php.net
- PHP Manual —
htmlspecialchars(): php.net - MySQL Reference Manual — INSERT: dev.mysql.com
- MySQL Reference Manual — SELECT: dev.mysql.com
- OWASP SQL Injection Prevention Cheat Sheet: owasp.org
- MDN — Elemen
<form>: developer.mozilla.org