Belajar CRUD dengan PHP dan MySQL: Studi Kasus Data Mahasiswa

Belajar CRUD dengan PHP dan MySQL: Studi Kasus Data Mahasiswa
Belajar CRUD dengan PHP dan MySQL: Studi Kasus Data Mahasiswa

CRUD adalah singkatan dari Create, Read, Update, dan Delete, yang merupakan empat operasi dasar dalam pengelolaan data. Dalam artikel ini, kita akan membahas bagaimana cara mengimplementasikan operasi CRUD menggunakan PHP dan MySQL melalui sebuah studi kasus sederhana: pengelolaan data mahasiswa.

1. Persiapan Lingkungan

Sebelum memulai, pastikan kamu telah menginstal:

  • XAMPP (untuk server lokal)
  • Editor teks seperti VS Code
  • Browser (Chrome, Firefox, dll.)

Setelah itu, jalankan Apache dan MySQL dari panel kontrol XAMPP.

2. Membuat Database dan Tabel

Buka phpMyAdmin, lalu buat database dengan nama db_mahasiswa. Setelah itu, jalankan SQL berikut untuk membuat tabel mahasiswa:

CREATE TABLE mahasiswa (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama VARCHAR(100) NOT NULL,
    nim VARCHAR(20) NOT NULL UNIQUE,
    jurusan VARCHAR(50) NOT NULL
);

3. Koneksi ke Database

Buat file koneksi.php untuk menghubungkan PHP dengan MySQL:

<?php
$host = "localhost";
$user = "root";
$pass = "";
$db   = "db_mahasiswa";

// Buat koneksi
$conn = new mysqli($host, $user, $pass, $db);

// Cek koneksi
if ($conn->connect_error) {
    die("Koneksi gagal: " . $conn->connect_error);
}

// Set charset untuk mencegah masalah encoding (wajib kalau simpan data UTF-8)
$conn->set_charset("utf8mb4");
?>

4. Menampilkan Data Mahasiswa (Read)

Buat file index.php untuk menampilkan seluruh data:

<?php include 'koneksi.php'; ?>
<h2>Data Mahasiswa</h2>
<a href="tambah.php">Tambah Mahasiswa</a>
<table border="1" cellpadding="10">
    <tr>
        <th>No</th>
        <th>Nama</th>
        <th>NIM</th>
        <th>Jurusan</th>
        <th>Aksi</th>
    </tr>
    <?php
    $no = 1;
    $query = "SELECT * FROM mahasiswa";
    $result = $conn->query($query);

    if ($result && $result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $id = htmlspecialchars($row['id']);
            $nama = htmlspecialchars($row['nama']);
            $nim = htmlspecialchars($row['nim']);
            $jurusan = htmlspecialchars($row['jurusan']);

            echo "<tr>
                <td>{$no}</td>
                <td>{$nama}</td>
                <td>{$nim}</td>
                <td>{$jurusan}</td>
                <td>
                    <a href='edit.php?id={$id}'>Edit</a> |
                    <a href='hapus.php?id={$id}' onclick=\"return confirm('Yakin ingin menghapus data ini?')\">Hapus</a>
                </td>
            </tr>";
            $no++;
        }
    } else {
        echo "<tr><td colspan='5'>Tidak ada data mahasiswa.</td></tr>";
    }

    $conn->close();
    ?>
</table>

5. Menambah Data Mahasiswa (Create)

Buat file tambah.php:

<?php
include 'koneksi.php';

if (isset($_POST['submit'])) {
    // Ambil dan sanitasi input
    $nama = trim($_POST['nama']);
    $nim = trim($_POST['nim']);
    $jurusan = trim($_POST['jurusan']);

    // Validasi input (bisa ditambah sesuai kebutuhan)
    if ($nama && $nim && $jurusan) {
        // Gunakan prepared statement
        $stmt = $conn->prepare("INSERT INTO mahasiswa (nama, nim, jurusan) VALUES (?, ?, ?)");
        $stmt->bind_param("sss", $nama, $nim, $jurusan);

        if ($stmt->execute()) {
            header("Location: index.php");
            exit();
        } else {
            echo "Gagal menyimpan data.";
        }

        $stmt->close();
    } else {
        echo "Semua field wajib diisi.";
    }
}

$conn->close();
?>

<h2>Tambah Mahasiswa</h2>
<form method="POST">
    Nama: <input type="text" name="nama"><br>
    NIM: <input type="text" name="nim"><br>
    Jurusan: <input type="text" name="jurusan"><br>
    <button type="submit" name="submit">Simpan</button>
</form>

6. Mengedit Data Mahasiswa (Update)

Buat file edit.php:

<?php
include 'koneksi.php';

// Validasi dan sanitasi ID
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    die("ID tidak valid.");
}
$id = (int)$_GET['id'];

// Ambil data mahasiswa
$stmt = $conn->prepare("SELECT * FROM mahasiswa WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
$data = $result->fetch_assoc();
$stmt->close();

if (!$data) {
    die("Data tidak ditemukan.");
}

// Proses update saat form disubmit
if (isset($_POST['submit'])) {
    $nama = trim($_POST['nama']);
    $nim = trim($_POST['nim']);
    $jurusan = trim($_POST['jurusan']);

    // Validasi sederhana
    if ($nama && $nim && $jurusan) {
        $stmt = $conn->prepare("UPDATE mahasiswa SET nama = ?, nim = ?, jurusan = ? WHERE id = ?");
        $stmt->bind_param("sssi", $nama, $nim, $jurusan, $id);
        
        if ($stmt->execute()) {
            header("Location: index.php");
            exit();
        } else {
            echo "Gagal mengupdate data.";
        }

        $stmt->close();
    } else {
        echo "Semua field wajib diisi.";
    }
}

$conn->close();
?>

<h2>Edit Mahasiswa</h2>
<form method="POST">
    Nama: <input type="text" name="nama" value="<?= $data['nama']; ?>"><br>
    NIM: <input type="text" name="nim" value="<?= $data['nim']; ?>"><br>
    Jurusan: <input type="text" name="jurusan" value="<?= $data['jurusan']; ?>"><br>
    <button type="submit" name="submit">Update</button>
</form>

7. Menghapus Data Mahasiswa (Delete)

Buat file hapus.php:

<?php
include 'koneksi.php';

// Validasi dan sanitasi input
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
    $id = (int)$_GET['id'];

    // Gunakan prepared statement untuk mencegah SQL injection
    $stmt = $conn->prepare("DELETE FROM mahasiswa WHERE id = ?");
    $stmt->bind_param("i", $id);

    if ($stmt->execute()) {
        header("Location: index.php");
        exit();
    } else {
        echo "Gagal menghapus data.";
    }

    $stmt->close();
} else {
    echo "ID tidak valid.";
}

$conn->close();
?>

8. Kesimpulan

Dengan menyelesaikan studi kasus ini, kamu telah mempelajari:

  • Cara membuat database dan tabel
  • Operasi CRUD dasar menggunakan PHP dan MySQL
  • Struktur sederhana dari sistem manajemen data

Comments

No comments yet. Why don’t you start the discussion?

Tinggalkan Balasan

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