crud create read data pasien | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: crud create read data pasien

Saturday, October 10, 2026

crud create read data pasien

๐Ÿฅ๐Ÿ“‹

Simpan dan Tampilkan: CRUD Bagian Create dan Read Data Pasien

INSERT, SELECT, dan Tampil dalam Tabel — Artikel 9 dari 16, Pemrograman Web D4 MIK

CRUD PHP MySQL INSERT SELECT Data Pasien
±10 mnt
Estimasi baca
Menengah
Level
2026
Tahun

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).

๐ŸŽฏ Target belajarmu (CPMK 3 · Sub-CPMK 5)
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.

๐Ÿงช Rumus Inti Create & Read
CREATE → INSERT INTO tabel (kolom...) VALUES (nilai...)
READ   → SELECT kolom FROM tabel ORDER BY kolom
Formulir di browser → PHP → MySQL → kembali ke browser sebagai tabel.
Aspek Create (INSERT) Read (SELECT)
TugasMenambah baris data baruMengambil dan menampilkan data
Mengubah isi tabel?YaTidak, hanya membaca
Fungsi PHP (mysqli)mysqli_prepare(), mysqli_stmt_execute()mysqli_query(), mysqli_fetch_assoc()
AnalogiMengisi buku registerMembuka daftar pasien
⚡ Insight Penting
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.

๐Ÿ’ก Tips
Belum punya tabelnya? Buka http://localhost/phpmyadmin, klik tab SQL, lalu jalankan kode di bawah. Perintah IF NOT EXISTS membuatnya aman dijalankan ulang.
๐Ÿ—„️ phpMyAdmin → tab SQL
CREATE DATABASE IF NOT EXISTS db_klinik_mik;
USE db_klinik_mik;

CREATE TABLE IF NOT EXISTS pasien (
  id_pasien     INT AUTO_INCREMENT PRIMARY KEY,
  no_rm         VARCHAR(10)  NOT NULL UNIQUE,
  nama_pasien   VARCHAR(100) NOT NULL,
  tanggal_lahir DATE         NOT NULL,
  jenis_kelamin ENUM('L','P') NOT NULL,
  alamat        TEXT,
  no_hp         VARCHAR(15)
);

Langkah Kerja: Membuat Form dan Proses Simpan

1
Buat folder kerja. Di C:\xampp\htdocs\, buat folder klinik_mik. Semua file di bawah disimpan di folder ini lewat Sublime Text (File → Save As, ekstensi .php).
2
Buat koneksi.php. File ini jembatan ke MySQL, dan akan kamu include di file lain.
๐Ÿ“„ klinik_mik/koneksi.php
<?php
$host = "localhost";
$user = "root";
$pass = "";            // bawaan XAMPP: kosong
$db   = "db_klinik_mik";

$koneksi = mysqli_connect($host, $user, $pass, $db);

if (!$koneksi) {
    die("Koneksi gagal: " . mysqli_connect_error());
}
mysqli_set_charset($koneksi, "utf8mb4");
?>
3
Buat form_tambah.php. Perhatikan atribut name di tiap input. Nama itulah yang nanti dibaca PHP lewat $_POST.
๐Ÿ“„ klinik_mik/form_tambah.php
<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <title>Tambah Pasien</title>
</head>
<body>
  <h2>Form Pendaftaran Pasien Baru</h2>
  <form action="proses_simpan.php" method="POST">
    <p>No. RM<br>
       <input type="text" name="no_rm" maxlength="10" required></p>
    <p>Nama Pasien<br>
       <input type="text" name="nama_pasien" required></p>
    <p>Tanggal Lahir<br>
       <input type="date" name="tanggal_lahir" required></p>
    <p>Jenis Kelamin<br>
       <select name="jenis_kelamin" required>
         <option value="">-- Pilih --</option>
         <option value="L">Laki-laki</option>
         <option value="P">Perempuan</option>
       </select></p>
    <p>Alamat<br>
       <textarea name="alamat" rows="3" required></textarea></p>
    <p>No. HP<br>
       <input type="text" name="no_hp"></p>
    <button type="submit">Simpan Data</button>
    <a href="data_pasien.php">Lihat Data</a>
  </form>
</body>
</html>
4
Buat proses_simpan.php. Ini otak dari proses Create. Tanda tanya ? pada query adalah “lubang kosong” yang diisi nilai dari form secara aman (prepared statement).
๐Ÿ“„ klinik_mik/proses_simpan.php
<?php
include "koneksi.php";

// Hanya terima data dari form (method POST)
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
    header("Location: form_tambah.php");
    exit;
}

$no_rm         = trim($_POST["no_rm"]);
$nama_pasien   = trim($_POST["nama_pasien"]);
$tanggal_lahir = $_POST["tanggal_lahir"];
$jenis_kelamin = $_POST["jenis_kelamin"];
$alamat        = trim($_POST["alamat"]);
$no_hp         = trim($_POST["no_hp"]);

$sql = "INSERT INTO pasien
        (no_rm, nama_pasien, tanggal_lahir, jenis_kelamin, alamat, no_hp)
        VALUES (?, ?, ?, ?, ?, ?)";

$stmt = mysqli_prepare($koneksi, $sql);
mysqli_stmt_bind_param($stmt, "ssssss",
    $no_rm, $nama_pasien, $tanggal_lahir, $jenis_kelamin, $alamat, $no_hp);

if (mysqli_stmt_execute($stmt)) {
    header("Location: data_pasien.php?status=sukses");
    exit;
} else {
    echo "Gagal menyimpan: " . mysqli_stmt_error($stmt);
}
mysqli_stmt_close($stmt);
?>
๐Ÿ”ฅ Fakta Menarik
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.
⚖️ Analisis: Query Rawan vs Query Aman
❌ Rawan (jangan ditiru)
"... VALUES ('$nama', ...)"
Input pengguna menempel langsung ke SQL. Teks “nakal” bisa mengubah makna query.
✅ Aman (kita pakai)
"... VALUES (?, ?, ...)"
Struktur SQL dikirim dulu, nilai dikirim terpisah sebagai data murni, bukan perintah.
5
Uji coba. Buka 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.

6
Buat data_pasien.php. Fungsi mysqli_fetch_assoc() mengambil satu baris per putaran while, dan htmlspecialchars() melindungi tampilan dari kode HTML/JavaScript tersisip.
๐Ÿ“„ klinik_mik/data_pasien.php
<?php
include "koneksi.php";

$sql = "SELECT id_pasien, no_rm, nama_pasien, tanggal_lahir,
               jenis_kelamin, alamat, no_hp
        FROM pasien
        ORDER BY id_pasien DESC";
$hasil = mysqli_query($koneksi, $sql);
?>
<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <title>Data Pasien</title>
</head>
<body>
  <h2>Daftar Pasien</h2>

  <?php if (isset($_GET["status"]) && $_GET["status"] == "sukses") { ?>
    <p style="color:green;">Data pasien berhasil disimpan!</p>
  <?php } ?>

  <a href="form_tambah.php">+ Tambah Pasien</a>
  <table border="1" cellpadding="8" cellspacing="0">
    <tr>
      <th>No</th><th>No. RM</th><th>Nama Pasien</th>
      <th>Tgl Lahir</th><th>JK</th><th>Alamat</th><th>No. HP</th>
    </tr>
    <?php if (mysqli_num_rows($hasil) > 0) { $no = 1;
          while ($row = mysqli_fetch_assoc($hasil)) { ?>
    <tr>
      <td><?php echo $no++; ?></td>
      <td><?php echo htmlspecialchars($row["no_rm"]); ?></td>
      <td><?php echo htmlspecialchars($row["nama_pasien"]); ?></td>
      <td><?php echo $row["tanggal_lahir"]; ?></td>
      <td><?php echo $row["jenis_kelamin"]; ?></td>
      <td><?php echo htmlspecialchars($row["alamat"]); ?></td>
      <td><?php echo htmlspecialchars($row["no_hp"]); ?></td>
    </tr>
    <?php } } else { ?>
    <tr><td colspan="7">Belum ada data pasien.</td></tr>
    <?php } ?>
  </table>
</body>
</html>
7
Cek hasilnya. Buka 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.
๐Ÿ“บ Hasil yang diharapkan (data fiktif)
+----+--------+----------------+------------+----+
| 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  |
+----+--------+----------------+------------+----+
๐Ÿ’ก Tips
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.

Pesan / Gejala Penyebab Solusi
Access denied for user 'root'@'localhost'User atau password di koneksi.php salahCocokkan dengan pengaturan MySQL di lab; bawaan XAMPP: user root, password kosong
Table 'db_klinik_mik.pasien' doesn't existNama database/tabel tidak sama dengan yang di phpMyAdminCek ejaan nama di phpMyAdmin, lalu samakan di kode
Undefined array key "nama_pasien"Atribut name di form berbeda dengan kunci $_POSTSamakan huruf besar-kecil dan ejaannya di kedua file
Uncaught mysqli_sql_exception: Duplicate entry 'RM0001'No. RM sudah ada, padahal kolomnya UNIQUEGunakan nomor RM lain, atau cek dulu dengan SELECT sebelum INSERT
Kode PHP tampil mentah di browserFile dibuka dari Explorer (file:///), bukan lewat serverAkses lewat http://localhost/klinik_mik/... dan pastikan Apache aktif
⚠️ Perhatian
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.
๐Ÿ”ฅ Fakta Menarik
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
๐Ÿ“š Referensi
Tag: #PemrogramanWeb #D4MIK #CRUDPHP #INSERTSELECT #DataPasien
Label: CRUD PHP MySQL Create dan Read Data Pasien Praktikum PHP MySQL
๐Ÿ“š

Pemrograman Web D4 MIK

Artikel ini bagian dari seri 16 artikel. Lihat urutan lengkap materinya di daftar isi.

Buka Daftar Isi Artikel

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux