MySQL
• 16 min baca • 58 x dilihat

Cara Membuat CRUD Data Siswa dengan PHP PDO & MySQL di XAMPP

m

Ditulis oleh

mrjj

Cara Membuat CRUD Data Siswa dengan PHP PDO & MySQL di XAMPP

Kamu pakai Windows dan ingin belajar bikin aplikasi web CRUD dari nol? Artikel ini cocok banget buat kamu — siswa SMK, mahasiswa, atau siapa pun yang baru mulai belajar PHP.

Kita akan bikin aplikasi Data Siswa yang bisa:

  • ✅ Menampilkan daftar siswa
  • ✅ Menambah data siswa baru
  • ✅ Mengedit data siswa
  • ✅ Menghapus data siswa

Semua pakai PHP PDO, MySQL, dan XAMPP di Windows. Ikuti step by step, dijamin bisa! 🚀


📌 Apa Itu CRUD?

CRUD adalah singkatan dari:

Huruf Arti Fungsi
C Create Menambah data baru
R Read Menampilkan data
U Update Mengubah data
D Delete Menghapus data

Hampir semua aplikasi (Instagram, WhatsApp, Tokopedia) punya 4 fungsi ini. Jadi kalau kamu bisa bikin CRUD, kamu sudah punya dasar bikin aplikasi besar! 💪


📌 Apa Itu PDO?

PDO (PHP Data Objects) adalah cara modern PHP untuk terhubung ke database. Kenapa kita pakai PDO, bukan mysqli?

Keunggulan PDO:

  1. Lebih aman — mendukung prepared statement yang mencegah SQL Injection.
  2. Fleksibel — bisa ganti database (MySQL, PostgreSQL, SQLite) tanpa ubah banyak kode.
  3. OOP friendly — kode lebih rapi dan mudah dikelola.

📌 Apa Itu XAMPP?

XAMPP adalah paket aplikasi yang berisi:

  • Apache → web server
  • MySQL / MariaDB → database
  • PHP → bahasa pemrograman
  • Perl → bahasa skrip (jarang dipakai pemula)

XAMPP memudahkan kita belajar PHP tanpa harus install satu-satu. Tinggal download, install, jalankan! 🎉


🎯 Tujuan Akhir Artikel

Setelah baca artikel ini sampai selesai, kamu akan bisa:

  1. Install dan menjalankan XAMPP di Windows
  2. Membuat database + tabel siswa dan kelas
  3. Menghubungkan PHP ke MySQL pakai PDO
  4. Membuat 4 halaman: index.php, create.php, edit.php, delete.php
  5. Menjalankan aplikasi di browser lewat localhost

🛠️ Persiapan: Download & Install XAMPP

Langkah 1: Download XAMPP

  1. Buka website resmi: https://www.apachefriends.org/
  2. Klik tombol Download untuk versi Windows.
  3. Pilih versi PHP terbaru (misal PHP 8.2). Ukuran sekitar 150 MB.
  4. Tunggu sampai selesai download.

Langkah 2: Install XAMPP

  1. Klik dua kali file xampp-windows-x64-8.2.x-installer.exe.
  2. Klik Yes kalau muncul peringatan UAC.
  3. Klik Next sampai muncul pilihan folder instalasi.
  4. Penting: Biarkan folder default C:\xampp (jangan diubah, agar tidak bingung nanti).
  5. Uncheck semua opsi tambahan (kecuali kamu butuh), klik Next.
  6. Klik Next lagi, lalu Finish.

Langkah 3: Jalankan XAMPP

  1. Buka XAMPP Control Panel dari Start Menu (cari “XAMPP”).
  2. Klik tombol Start di sebelah Apache.
  3. Klik tombol Start di sebelah MySQL.
  4. Kalau dua-duanya hijau, berarti siap! ✅

⚠️ Kalau Apache gagal start: biasanya karena port 80 dipakai Skype/IIS. Solusinya: klik Config di Apache → Apache (httpd.conf) → cari Listen 80 → ganti jadi Listen 8080. Nanti akses aplikasi lewat http://localhost:8080.


🗂️ Struktur Folder Project

Project akan kita letakkan di dalam folder htdocs XAMPP:

Code Snippet
C:\xampp\htdocs\crud-siswa\
├── config\
│   └── database.php      → Koneksi ke database
├── functions.php         → Semua fungsi CRUD
├── index.php             → Halaman daftar siswa (Read)
├── create.php            → Form tambah siswa (Create)
├── edit.php              → Form edit siswa (Update)
└── delete.php            → Proses hapus siswa (Delete)

🔧 Langkah 1: Buat Database di phpMyAdmin

Cara 1: Lewat Browser (Paling Mudah)

  1. Buka browser (Chrome/Firefox), ketik: http://localhost/phpmyadmin
  2. Klik tab SQL di bagian atas.
  3. Copy-paste semua kode SQL di bawah ini:
Code Snippet
CREATE DATABASE IF NOT EXISTS sekolah;
USE sekolah;

CREATE TABLE kelas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama_kelas VARCHAR(50) NOT NULL
);

CREATE TABLE siswa (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama VARCHAR(100) NOT NULL,
    nis CHAR(10) UNIQUE,
    tanggal_lahir DATE,
    kelas_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (kelas_id) REFERENCES kelas(id)
);

INSERT INTO kelas (nama_kelas) VALUES 
('X RPL 1'), 
('X RPL 2'), 
('XI RPL 1'), 
('XII RPL 1');
  1. Klik tombol Go / Kirim di kanan bawah.
  2. Selesai! Database sekolah sudah dibuat. ✅

Penjelasan singkat:

  • CREATE DATABASE → bikin database bernama sekolah.
  • AUTO_INCREMENT → id bertambah otomatis (1, 2, 3, …).
  • UNIQUE → NIS tidak boleh sama antar siswa.
  • FOREIGN KEY → kelas_id di tabel siswa terhubung ke id di tabel kelas.

Cara 2: Cek Hasil

Di phpMyAdmin sebelah kiri, kamu akan lihat:

  • Database sekolah → di dalamnya ada 2 tabel: kelas dan siswa.

📁 Langkah 2: Buat Folder Project

  1. Buka File Explorer Windows.
  2. Masuk ke folder C:\xampp\htdocs\.
  3. Klik kanan di area kosong → New → Folder.
  4. Beri nama: crud-siswa.
  5. Masuk ke folder tersebut, buat lagi folder baru bernama config.

Sekarang strukturnya:

Code Snippet
C:\xampp\htdocs\
└── crud-siswa\
    └── config\

🗄️ Langkah 3: Buat File Koneksi Database

Buka Notepad++ atau VS Code (recommended). Buat file baru, isi dengan kode di bawah, lalu simpan sebagai:

C:\xampp\htdocs\crud-siswa\config\database.php

Code Snippet
<?php
// config/database.php

// Tampilkan error saat development (matikan saat production!)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Konfigurasi database
$host     = "localhost";
$dbname   = "sekolah";
$username = "root";      // default XAMPP
$password = "";          // default XAMPP: kosong

try {
    // Buat koneksi PDO
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    
    // Set mode error: tampilkan sebagai Exception
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Hasil query otomatis jadi array asosiatif
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    
} catch (PDOException $e) {
    die("Koneksi gagal: " . $e->getMessage());
}

Penjelasan:

  • $username = "root" → default user MySQL di XAMPP.
  • $password = "" → default password di XAMPP memang kosong.
  • new PDO(...) → membuat koneksi ke database.
  • ATTR_ERRMODE → kalau ada error, langsung tampil pesannya.

💡 Tips VS Code: Kalau pakai VS Code, install extension PHP Intelephense biar ada auto-complete dan deteksi error.


🧩 Langkah 4: Buat File Fungsi CRUD

Buat file baru, simpan sebagai:

C:\xampp\htdocs\crud-siswa\functions.php

Code Snippet
<?php
// functions.php
require_once __DIR__ . '/config/database.php';

/**
 * Ambil semua siswa + nama kelas (JOIN)
 */
function getAllSiswa($pdo) {
    $sql = "SELECT siswa.*, kelas.nama_kelas 
            FROM siswa 
            LEFT JOIN kelas ON siswa.kelas_id = kelas.id 
            ORDER BY siswa.id DESC";
    return $pdo->query($sql)->fetchAll();
}

/**
 * Ambil satu siswa berdasarkan ID
 */
function getSiswaById($pdo, $id) {
    $stmt = $pdo->prepare("SELECT * FROM siswa WHERE id = :id");
    $stmt->execute([':id' => $id]);
    return $stmt->fetch();
}

/**
 * Ambil semua kelas untuk dropdown
 */
function getAllKelas($pdo) {
    return $pdo->query("SELECT * FROM kelas ORDER BY nama_kelas")->fetchAll();
}

/**
 * Tambah siswa baru (menerima array)
 */
function tambahSiswa($pdo, array $data) {
    $sql = "INSERT INTO siswa (nama, nis, tanggal_lahir, kelas_id) 
            VALUES (:nama, :nis, :tanggal_lahir, :kelas_id)";
    $stmt = $pdo->prepare($sql);
    return $stmt->execute([
        ':nama'          => $data['nama'],
        ':nis'           => $data['nis'],
        ':tanggal_lahir' => $data['tanggal_lahir'],
        ':kelas_id'      => $data['kelas_id'],
    ]);
}

/**
 * Update data siswa
 */
function updateSiswa($pdo, $id, array $data) {
    $sql = "UPDATE siswa 
            SET nama = :nama, nis = :nis, 
                tanggal_lahir = :tanggal_lahir, kelas_id = :kelas_id 
            WHERE id = :id";
    $stmt = $pdo->prepare($sql);
    return $stmt->execute([
        ':nama'          => $data['nama'],
        ':nis'           => $data['nis'],
        ':tanggal_lahir' => $data['tanggal_lahir'],
        ':kelas_id'      => $data['kelas_id'],
        ':id'            => $id,
    ]);
}

/**
 * Hapus siswa
 */
function hapusSiswa($pdo, $id) {
    $stmt = $pdo->prepare("DELETE FROM siswa WHERE id = :id");
    return $stmt->execute([':id' => $id]);
}

Poin penting:

  • Kita pakai prepared statement (prepare + execute) untuk mencegah SQL Injection.
  • Data dikirim sebagai array supaya mudah divalidasi.
  • LEFT JOIN → ambil data siswa + nama kelasnya sekaligus.

📄 Langkah 5: Buat Halaman Daftar Siswa (Read)

Buat file baru, simpan sebagai:

C:\xampp\htdocs\crud-siswa\index.php

Code Snippet
<?php
require_once __DIR__ . '/functions.php';
$semuaSiswa = getAllSiswa($pdo);
?>
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Data Siswa</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 30px; background: #f9f9f9; }
        h2 { color: #333; }
        table { border-collapse: collapse; width: 100%; margin-top: 15px; background: #fff; }
        th, td { border: 1px solid #ddd; padding: 10px 12px; text-align: left; }
        th { background: #007bff; color: #fff; }
        tr:nth-child(even) { background: #f4f4f4; }
        .btn { padding: 6px 12px; text-decoration: none; border-radius: 4px; color: #fff; display: inline-block; }
        .btn-add { background: #28a745; margin-bottom: 10px; }
        .btn-edit { background: #007bff; }
        .btn-del { background: #dc3545; }
        .msg { padding: 10px; background: #d4edda; color: #155724; margin-bottom: 15px; border-radius: 4px; }
    </style>
</head>
<body>
<h2>📋 Daftar Siswa</h2>

<?php if (isset($_GET['msg'])): ?>
    <div class="msg"><?= htmlspecialchars($_GET['msg']) ?></div>
<?php endif; ?>

<a href="create.php" class="btn btn-add">+ Tambah Siswa</a>

<table>
    <tr>
        <th>No</th><th>Nama</th><th>NIS</th>
        <th>Tanggal Lahir</th><th>Kelas</th><th>Aksi</th>
    </tr>
    <?php if (empty($semuaSiswa)): ?>
        <tr><td colspan="6" style="text-align:center;">Belum ada data</td></tr>
    <?php else: ?>
        <?php foreach ($semuaSiswa as $i => $siswa): ?>
            <tr>
                <td><?= $i + 1 ?></td>
                <td><?= htmlspecialchars($siswa['nama']) ?></td>
                <td><?= htmlspecialchars($siswa['nis']) ?></td>
                <td><?= htmlspecialchars($siswa['tanggal_lahir']) ?></td>
                <td><?= htmlspecialchars($siswa['nama_kelas'] ?? '-') ?></td>
                <td>
                    <a href="edit.php?id=<?= $siswa['id'] ?>" class="btn btn-edit">Edit</a>
                    <a href="delete.php?id=<?= $siswa['id'] ?>" 
                       class="btn btn-del"
                       onclick="return confirm('Yakin hapus data ini?')">Hapus</a>
                </td>
            </tr>
        <?php endforeach; ?>
    <?php endif; ?>
</table>
</body>
</html>

Penjelasan:

  • getAllSiswa($pdo) → ambil semua data siswa (array of array).
  • foreach → looping untuk menampilkan tiap baris.
  • htmlspecialchars() → mencegah XSS (karakter aneh di HTML).

➕ Langkah 6: Buat Halaman Tambah Siswa (Create)

Buat file baru, simpan sebagai:

C:\xampp\htdocs\crud-siswa\create.php

Code Snippet
<?php
require_once __DIR__ . '/functions.php';

$daftarKelas = getAllKelas($pdo);
$errors = [];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Tampung input ke array
    $data = [
        'nama'          => trim($_POST['nama'] ?? ''),
        'nis'           => trim($_POST['nis'] ?? ''),
        'tanggal_lahir' => $_POST['tanggal_lahir'] ?? '',
        'kelas_id'      => $_POST['kelas_id'] ?? null,
    ];

    // Validasi
    if ($data['nama'] === '')          $errors[] = "Nama wajib diisi.";
    if ($data['nis'] === '')           $errors[] = "NIS wajib diisi.";
    if ($data['tanggal_lahir'] === '') $errors[] = "Tanggal lahir wajib diisi.";
    if (empty($data['kelas_id']))      $errors[] = "Kelas wajib dipilih.";

    if (empty($errors)) {
        try {
            tambahSiswa($pdo, $data);
            header("Location: index.php?msg=Data berhasil ditambahkan");
            exit;
        } catch (PDOException $e) {
            $errors[] = "Gagal menyimpan: " . $e->getMessage();
        }
    }
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Tambah Siswa</title>
    <style>
        body { font-family: Arial; margin: 30px; background: #f9f9f9; }
        label { display:block; margin-top: 10px; font-weight: bold; }
        input, select { padding: 8px; width: 300px; border: 1px solid #ccc; border-radius: 4px; }
        .error { background: #f8d7da; color: #721c24; padding: 10px; border-radius: 4px; }
        button { margin-top: 15px; padding: 8px 16px; background: #28a745; color: #fff; border: none; border-radius: 4px; cursor: pointer; }
        button:hover { background: #218838; }
        a { margin-left: 10px; }
    </style>
</head>
<body>
<h2>➕ Tambah Siswa</h2>

<?php if ($errors): ?>
    <div class="error">
        <?php foreach ($errors as $e): ?>
            <div>&bull; <?= htmlspecialchars($e) ?></div>
        <?php endforeach; ?>
    </div>
<?php endif; ?>

<form method="post">
    <label>Nama</label>
    <input type="text" name="nama" value="<?= htmlspecialchars($_POST['nama'] ?? '') ?>" required>

    <label>NIS</label>
    <input type="text" name="nis" maxlength="10" value="<?= htmlspecialchars($_POST['nis'] ?? '') ?>" required>

    <label>Tanggal Lahir</label>
    <input type="date" name="tanggal_lahir" value="<?= htmlspecialchars($_POST['tanggal_lahir'] ?? '') ?>" required>

    <label>Kelas</label>
    <select name="kelas_id" required>
        <option value="">-- Pilih Kelas --</option>
        <?php foreach ($daftarKelas as $kelas): ?>
            <option value="<?= $kelas['id'] ?>" 
                <?= (($_POST['kelas_id'] ?? '') == $kelas['id']) ? 'selected' : '' ?>>
                <?= htmlspecialchars($kelas['nama_kelas']) ?>
            </option>
        <?php endforeach; ?>
    </select>

    <br>
    <button type="submit">Simpan</button>
    <a href="index.php">Batal</a>
</form>
</body>
</html>

Alur kerja:

  1. User isi form → data masuk ke array $data.
  2. Validasi → kalau lolos, panggil tambahSiswa($pdo, $data).
  3. Redirect ke index.php dengan pesan sukses.

✏️ Langkah 7: Buat Halaman Edit Siswa (Update)

Buat file baru, simpan sebagai:

C:\xampp\htdocs\crud-siswa\edit.php

Code Snippet
<?php
require_once __DIR__ . '/functions.php';

// Ambil ID dari URL
$id = $_GET['id'] ?? null;
if (!$id) { header("Location: index.php"); exit; }

// Ambil data siswa
$siswa = getSiswaById($pdo, $id);
if (!$siswa) { header("Location: index.php?msg=Data tidak ditemukan"); exit; }

$daftarKelas = getAllKelas($pdo);
$errors = [];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = [
        'nama'          => trim($_POST['nama'] ?? ''),
        'nis'           => trim($_POST['nis'] ?? ''),
        'tanggal_lahir' => $_POST['tanggal_lahir'] ?? '',
        'kelas_id'      => $_POST['kelas_id'] ?? null,
    ];

    if ($data['nama'] === '')          $errors[] = "Nama wajib diisi.";
    if ($data['nis'] === '')           $errors[] = "NIS wajib diisi.";
    if ($data['tanggal_lahir'] === '') $errors[] = "Tanggal lahir wajib diisi.";
    if (empty($data['kelas_id']))      $errors[] = "Kelas wajib dipilih.";

    if (empty($errors)) {
        try {
            updateSiswa($pdo, $id, $data);
            header("Location: index.php?msg=Data berhasil diperbarui");
            exit;
        } catch (PDOException $e) {
            $errors[] = "Gagal update: " . $e->getMessage();
        }
    }
    $siswa = array_merge($siswa, $data);
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Edit Siswa</title>
    <style>
        body { font-family: Arial; margin: 30px; background: #f9f9f9; }
        label { display:block; margin-top: 10px; font-weight: bold; }
        input, select { padding: 8px; width: 300px; border: 1px solid #ccc; border-radius: 4px; }
        .error { background: #f8d7da; color: #721c24; padding: 10px; border-radius: 4px; }
        button { margin-top: 15px; padding: 8px 16px; background: #007bff; color: #fff; border: none; border-radius: 4px; cursor: pointer; }
        button:hover { background: #0056b3; }
        a { margin-left: 10px; }
    </style>
</head>
<body>
<h2>✏️ Edit Siswa</h2>

<?php if ($errors): ?>
    <div class="error">
        <?php foreach ($errors as $e): ?>
            <div>&bull; <?= htmlspecialchars($e) ?></div>
        <?php endforeach; ?>
    </div>
<?php endif; ?>

<form method="post">
    <label>Nama</label>
    <input type="text" name="nama" value="<?= htmlspecialchars($siswa['nama']) ?>" required>

    <label>NIS</label>
    <input type="text" name="nis" maxlength="10" value="<?= htmlspecialchars($siswa['nis']) ?>" required>

    <label>Tanggal Lahir</label>
    <input type="date" name="tanggal_lahir" value="<?= htmlspecialchars($siswa['tanggal_lahir']) ?>" required>

    <label>Kelas</label>
    <select name="kelas_id" required>
        <option value="">-- Pilih Kelas --</option>
        <?php foreach ($daftarKelas as $kelas): ?>
            <option value="<?= $kelas['id'] ?>" 
                <?= ($siswa['kelas_id'] == $kelas['id']) ? 'selected' : '' ?>>
                <?= htmlspecialchars($kelas['nama_kelas']) ?>
            </option>
        <?php endforeach; ?>
    </select>

    <br>
    <button type="submit">Update</button>
    <a href="index.php">Batal</a>
</form>
</body>
</html>

🗑️ Langkah 8: Buat Proses Hapus Siswa (Delete)

Buat file baru, simpan sebagai:

C:\xampp\htdocs\crud-siswa\delete.php

Code Snippet
<?php
require_once __DIR__ . '/functions.php';

$id = $_GET['id'] ?? null;

if ($id) {
    try {
        hapusSiswa($pdo, $id);
        header("Location: index.php?msg=Data berhasil dihapus");
    } catch (PDOException $e) {
        header("Location: index.php?msg=Gagal menghapus: " . urlencode($e->getMessage()));
    }
} else {
    header("Location: index.php");
}
exit;

Kenapa tidak pakai form? Karena konfirmasi hapus sudah ditangani JavaScript di index.php (onclick="return confirm(...)").

💡 Tips keamanan: Untuk aplikasi production, sebaiknya hapus pakai method POST, bukan GET.


🧪 Langkah 9: Uji Coba Aplikasi di Browser

  1. Buka browser (Chrome/Edge/Firefox).
  2. Ketik di address bar: http://localhost/crud-siswa/
  3. Kamu akan lihat halaman Daftar Siswa dengan tombol + Tambah Siswa.

Uji semua fitur CRUD:

  1. Create → Klik + Tambah Siswa → isi form → Simpan
  2. Read → Data baru muncul di tabel
  3. Update → Klik Edit → ubah data → Update
  4. Delete → Klik Hapus → konfirmasi → data hilang

Kalau semua berjalan lancar, selamat! CRUD-mu sudah jadi! 🎉


🚨 Troubleshooting: Kalau Ada Error

1. Halaman Putih / Blank

Penyebab: Ada error PHP tapi disembunyikan.
Solusi: Buka C:\xampp\php\php.ini, cari baris:

Code Snippet
display_errors = Off

Ganti jadi:

Code Snippet
display_errors = On

Simpan, lalu restart Apache dari XAMPP Control Panel.

2. Access denied for user 'root'@'localhost'

Penyebab: Password MySQL di XAMPP diubah (tidak kosong lagi).
Solusi: Sesuaikan $password di config/database.php. Atau reset password root MySQL lewat phpMyAdmin.

3. Unknown database 'sekolah'

Penyebab: Database belum dibuat.
Solusi: Jalankan SQL di Langkah 1.

4. Duplicate entry 'xxxx' for key 'nis'

Penyebab: NIS sudah dipakai siswa lain (karena UNIQUE).
Solusi: Ganti NIS di form.

5. Call to undefined function getAllSiswa()

Penyebab: File functions.php tidak ter-include dengan benar.
Solusi: Pastikan di index.php ada require_once __DIR__ . '/functions.php';.

6. Apache Gagal Start (Port 80 Dipakai)

Penyebab: Skype, IIS, atau VMware pakai port 80.
Solusi: Ganti port Apache di httpd.conf:

Code Snippet
Listen 8080
ServerName localhost:8080

Akses aplikasi lewat http://localhost:8080/crud-siswa/.

7. MySQL Gagal Start (Port 3306 Dipakai)

Penyebab: MySQL lain (dari instalasi terpisah) sudah jalan.
Solusi: Matikan MySQL lain lewat Services Windows (Win + R → services.msc).


📚 Ringkasan Alur Data

Code Snippet
┌─────────────┐
│  Form HTML  │  ← User isi data
└──────┬──────┘
       │ POST
       ▼
┌─────────────┐
│  $_POST     │  ← Data masuk ke PHP
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  $data      │  ← Ditampung di array
│  (array)    │
└──────┬──────┘
       │
       ▼
┌─────────────────┐
│  fungsi CRUD    │  ← tambahSiswa/updateSiswa/hapusSiswa
│  (functions.php)│
└──────┬──────────┘
       │ prepare + execute
       ▼
┌─────────────┐
│  Database   │  ← Data tersimpan di MySQL
│  MySQL      │
└─────────────┘

💡 Tips Belajar Lebih Lanjut

Setelah CRUD dasar ini berhasil, coba kembangkan:

  • 🔐 Login admin sebelum masuk CRUD
  • 🔍 Pencarian siswa berdasarkan nama / kelas
  • 📄 Pagination kalau data banyak
  • 📸 Upload foto siswa
  • 💬 Flash message pakai session (biar tidak muncul di URL)
  • 🎨 Bootstrap / Tailwind biar tampilan lebih menarik
  • 🌐 Deploy ke hosting biar bisa diakses online

🎓 Kesimpulan

Selamat! Kamu sudah berhasil membuat aplikasi CRUD Data Siswa lengkap dengan:

  • ✅ XAMPP sebagai environment lokal di Windows
  • ✅ PHP PDO untuk koneksi database yang aman
  • ✅ MySQL dengan relasi tabel (foreign key)
  • ✅ Array untuk mengirim data ke fungsi
  • ✅ Validasi input dan prepared statement

Dengan menguasai CRUD ini, kamu sudah punya fondasi kuat untuk membangun aplikasi web yang lebih kompleks, seperti sistem absensi, sistem nilai, atau manajemen inventaris.

Selamat ngoding, dan terus belajar! 🚀


📖 Referensi


Kata kunci: crud php pdo mysql, tutorial crud siswa, belajar php pdo xampp, crud xampp windows, aplikasi data siswa php, tutorial php mysql pemula, cara membuat crud php, pdo prepared statement, belajar web programming windows, crud sekolah xampp.

Bagikan artikel ini:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *