Jangan Asal Isi! Validasi Input Form Data Pasien
Wajib isi, format NIK, tanggal lahir, dan pesan error yang manusiawi, dipraktikkan langkah demi langkah di XAMPP dan Sublime Text.
Bayangkan kamu bertugas di loket pendaftaran puskesmas. Seorang pasien menulis NIK "12345", tahun lahir 2099, dan kolom nama dibiarkan kosong. Kalau sistemmu menerimanya dengan senang hati, rekam yang tersimpan bukan lagi data, melainkan tumpukan sampah yang kelihatan rapi. Di sinilah validasi input PHP bekerja sebagai satpam yang ramah tapi tegas: memeriksa setiap isian sebelum boleh masuk.
Artikel ini adalah bagian dari seri Pemrograman Web D4 MIK. Kamu akan mempraktikkan validasi wajib isi, format NIK 16 digit, tanggal lahir, dan pesan error yang jelas. Syaratnya cuma satu: kamu sudah bisa membuat form dan mengirim data dengan POST (Artikel 6). Yuk, bikin form pasien yang tidak gampang dibohongi!
Kenapa Validasi Input PHP Wajib di Form Data Pasien?
Data kesehatan dipakai untuk keputusan klinis, pelaporan, sampai klaim. Ada prinsip lama: garbage in, garbage out. Anggap validasi seperti petugas triase di IGD: memeriksa dulu apa yang layak masuk sebelum diproses lebih jauh.
Validasi bisa dilakukan di dua tempat. Perbedaannya penting, jadi simak tabel ini:
| Aspek | Sisi klien (HTML5) | Sisi server (PHP) |
|---|---|---|
| Dijalankan di | Browser pengguna | Server Apache + PHP |
| Contoh | required, maxlength, type="date" | trim(), ctype_digit(), DateTime |
| Umpan balik | Instan, tanpa reload | Setelah tombol submit ditekan |
| Bisa dilewati? | Bisa, lewat DevTools atau curl | Tidak, kodenya ada di server |
| Peran | Kenyamanan pengguna | Benteng utama data |
required membantu pengguna jujur; PHP yang menghentikan yang iseng. 🧑 Pengguna ──► 📝 Form HTML ──► ⚙️ Server PHP ──► ❓ Valid?
│
┌───────────────────────┴───────────────────┐
▼ Ya ▼ Tidak
✅ Siap disimpan ❌ Pesan error + isian dikembalikanPersiapan Lab: Siapkan Folder Kerja
C:\xampp\htdocs, lalu buat folder baru bernama validasi-pasien.validasi-pasien.php. Di Windows, cek jangan sampai namanya jadi validasi-pasien.php.txt.Praktik 1: Validasi Input PHP untuk Wajib Isi dan Pesan Error
Aturan paling dasar adalah wajib isi, ibarat tanda bintang merah di formulir kertas: kolom bertanda bintang tidak boleh kosong. Di PHP, kita mengumpulkan semua pesan kesalahan dalam satu array bernama $errors, bukan berhenti di error pertama. Jadi pasien tahu semua yang perlu diperbaiki sekaligus, bukan dimarahi satu per satu seperti revisi skripsi.
validasi-pasien.php di Sublime Text. Perhatikan komentar penanda // === ATURAN ... ===; kita akan mengubahnya di praktik berikutnya.http://localhost/validasi-pasien/validasi-pasien.php.Hasil yang diharapkan: saat form kosong dikirim, muncul empat pesan merah di samping tiap kolom. Saat data lengkap dikirim, muncul tulisan hijau "Data atas nama Budi Santoso valid." Tiga hal kecil yang berperan besar: ?? "" mencegah error undefined array key saat halaman pertama dibuka, htmlspecialchars() mencegah isian berisi tag HTML ikut dieksekusi, dan novalidate mematikan validasi bawaan browser agar kamu bisa melihat validasi PHP bekerja.
trim(), isian " " dianggap terisi dan lolos validasi wajib isi. Jadikan trim() langkah pertama setiap kali menerima data dari $_POST.Validasi Input PHP untuk Format NIK 16 Digit
Sekarang kolom NIK tidak cukup hanya terisi, isinya harus 16 digit angka. Seperti mesin ATM yang menolak PIN berisi huruf, tapi pesan penolakannya kita buat spesifik.
// === ATURAN NIK ===.<input name="nik"> tambahkan maxlength="16" dan inputmode="numeric" agar HP menampilkan keypad angka. Ini hanya kenyamanan, PHP tetap penjaganya.| Input NIK (fiktif) | Hasil | Pesan yang muncul |
|---|---|---|
| (kosong) | ❌ Ditolak | NIK wajib diisi. |
| 12345 | ❌ Ditolak | NIK harus tepat 16 digit (sekarang 5 digit). |
| 35780145059900AB | ❌ Ditolak | NIK hanya boleh berisi angka, tanpa spasi atau tanda baca. |
| 3578 0145 0599 0001 | ❌ Ditolak | NIK hanya boleh berisi angka, tanpa spasi atau tanda baca. |
| 3578014505990001 | ✅ Lolos | (tidak ada pesan) |
Kenapa bukan is_numeric()? Fungsi itu meloloskan "1e15" dan "+123". Kenapa bukan integer? NIK adalah identitas, bukan bilangan untuk dihitung, dan angka 0 di depan akan hilang. Simpan NIK selalu sebagai string; di Artikel 8 kolomnya akan kita buat bertipe VARCHAR(16).
Pengguna bingung: kolom mana, salahnya apa, harus bagaimana?
Menyebut kolomnya, aturannya, dan kondisi saat ini.
Validasi Input PHP untuk Tanggal Lahir Pasien
Tanggal lahir tampak sepele, tapi banyak data kacau lahir di sini: 31 Februari, tahun 2099, atau format acak. Kita periksa tiga hal: tidak kosong, format benar, dan bukan masa depan. Triknya, DateTime::createFromFormat() itu toleran: "2026-02-31" diam-diam diubah jadi 3 Maret. Karena itu hasilnya kita format ulang, lalu dibandingkan dengan teks aslinya.
// === ATURAN TANGGAL LAHIR ===.! pada format !Y-m-d mengatur jam ke 00:00, supaya bayi yang lahir hari ini tidak ditolak sebagai "masa depan".| Input tanggal lahir | Hasil | Alasan |
|---|---|---|
| (kosong) | ❌ Ditolak | Wajib diisi |
| abc | ❌ Ditolak | Bukan format tahun-bulan-tanggal |
| 2026-02-31 | ❌ Ditolak | Tanggal tidak ada di kalender |
| 2099-01-01 | ❌ Ditolak | Masa depan |
| 1999-05-05 | ✅ Lolos | Format benar dan masuk akal |
Error yang Sering Muncul & Cara Mengatasinya
| Gejala / pesan error | Penyebab | Cara mengatasi |
|---|---|---|
Warning: Undefined array key | $_POST dibaca sebelum form dikirim | Bungkus dengan cek REQUEST_METHOD === "POST" dan pakai operator ?? |
| Kode PHP tampil mentah / file terunduh | File dibuka lewat file:/// atau Apache belum jalan | Akses lewat http://localhost/..., pastikan Apache hijau di XAMPP |
File jadi nama.php.txt | Windows menyembunyikan ekstensi, atau Save as type Text | Aktifkan "File name extensions" di Explorer, pilih All Files saat menyimpan |
| Isian hilang setelah submit | Atribut value tidak diisi ulang | Tambahkan value="<?= htmlspecialchars($nama) ?>" |
| Tanggal hari ini ditolak sebagai masa depan | Lupa tanda ! pada format atau zona waktu belum diatur | Pakai !Y-m-d dan date_default_timezone_set("Asia/Jakarta") |
Parse error: syntax error | Titik koma, kurung kurawal, atau tanda kutip kurang | Periksa baris yang disebut dan satu baris sebelumnya |
Latihan Mandiri: Asah Validasi Input PHP Kamu
Kerjakan di folder yang sama, dan untuk setiap tugas buat tabel uji kecil (minimal 3 input).
mb_strlen() dan preg_match().substr($nik, 6, 2) untuk tanggal; jika lebih dari 40, kurangi 40 (pasien perempuan).Kesimpulan
Form pasienmu kini tidak pasrah menerima data apa adanya. Lewat validasi input PHP, setiap isian diperiksa sebelum masuk sistem:
- Validasi sisi klien itu kenyamanan; validasi input PHP di server adalah benteng yang wajib ada.
- Mulai dengan
trim(), kumpulkan semua error di array$errors, dan tampilkan bersamaan. - NIK = string 16 digit (
ctype_digit+strlen); tanggal lahir =createFromFormat+ cek balik + cek masa depan. - Pesan error yang baik menyebut kolom, aturan, dan kondisi saat ini.
Data yang sudah valid ini siap kita simpan ke MySQL di artikel berikutnya. Menurutmu, aturan validasi apa lagi yang wajib ada di form pasien? Tulis di komentar, dan bagikan artikel ini ke teman sekelasmu!
💬 Tulis Komentar📤 Bagikan via WhatsAppLihat seluruh 16 artikel dalam seri ini, dari dasar PHP sampai aplikasi data pasien.
Buka Daftar Isi Artikel →
No comments:
Post a Comment