Lompat ke konten Lompat ke sidebar Lompat ke footer

PHP : Membuat CRUD Sederhana dengan Folder Terpisah

Pada kesempatan kali ini kita akan membuat CRUD (Create, Read, Update, Delete) sederhana menggunakan PHP dan MySQL dengan struktur folder terpisah. Tujuannya adalah agar mudah untuk dikelola.

Membuat Desain Database

Tabel Siswa
Kolom Tipe Keterangan
id_siswa INT(11) AUTO_INCREMENT Primary key
nis VARCHAR(20)
nama_siswa VARCHAR(100)
jenis_kelamin ENUM('L','P')

Struktur Folder

C:/xampp/htdocs/sekolah/
├── config/
│   └── koneksi.php
└── siswa/
    ├── index.php
    ├── tambah.php
    ├── edit.php
    └── proses/
        ├── proses_tambah.php
        ├── proses_edit.php
        └── proses_hapus.php

Membuat File PHP

Berikut adalah isi dari file koneksi.php


<?php

$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_PASS = '';
$DB_NAME = 'sekolah';

if (php_sapi_name() !== 'cli' && realpath(__FILE__) === realpath($_SERVER['SCRIPT_FILENAME'])) {
    exit('Tidak diperbolehkan mengakses file konfigurasi langsung.');
}

$koneksi = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

if (!$koneksi) {
    error_log('Koneksi database gagal: ' . mysqli_connect_error());
    http_response_code(500);
    die('Koneksi database gagal.');
}

mysqli_set_charset($koneksi, 'utf8mb4');

?>

Berikut adalah isi dari file index.php


<?php
require_once __DIR__ . '/../config/koneksi.php';
?>

<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <title>Data Siswa</title>
  <style>
    table { border-collapse: collapse; width: 100%; }
    th, td { border: 1px solid #ddd; padding: 8px; }
    th { background-color: #f2f2f2; }
    a { text-decoration: none; }
  </style>
</head>
<body>

<h2>Data Siswa</h2>
<a href="tambah.php">+ Tambah Siswa</a>
<br><br>

<table>
  <tr>
    <th>No</th>
    <th>NIS</th>
    <th>Nama Siswa</th>
    <th>Jenis Kelamin</th>
    <th>Aksi</th>
  </tr>

  <?php
  $no = 1;
  $data = mysqli_query($koneksi, "SELECT * FROM siswa ORDER BY id_siswa DESC");
  while ($row = mysqli_fetch_assoc($data)) {
  ?>
  <tr>
    <td><?= $no++; ?></td>
    <td><?= htmlspecialchars($row['nis']); ?></td>
    <td><?= htmlspecialchars($row['nama_siswa']); ?></td>
    <td><?= htmlspecialchars($row['jenis_kelamin']); ?></td>
    <td>
      <a href="edit.php?id_siswa=<?= $row['id_siswa']; ?>">Edit</a> |
      <a href="proses/proses_hapus.php?id_siswa=<?= $row['id_siswa']; ?>" onclick="return confirm('Hapus data ini?');">Hapus</a>
    </td>
  </tr>
  <?php } ?>
</table>

</body>
</html>

Berikut adalah isi dari file tambah.php


<?php
require_once __DIR__ . '/../config/koneksi.php';
?>

<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <title>Tambah Siswa</title>
</head>
<body>

<h2>Tambah Siswa</h2>
<form action="proses/proses_tambah.php" method="post">
  <label>NIS:</label><br>
  <input type="text" name="nis" required><br><br>

  <label>Nama Siswa:</label><br>
  <input type="text" name="nama_siswa" required><br><br>

  <label>Jenis Kelamin:</label><br>
  <select name="jenis_kelamin" required>
    <option value="">--Pilih--</option>
    <option value="L">L</option>
    <option value="P">P</option>
  </select><br><br>

  <button type="submit" name="simpan">Simpan</button>
</form>

</body>
</html>

Berikut adalah isi dari file edit.php


<?php
require_once __DIR__ . '/../config/koneksi.php';

$id_siswa = $_GET['id_siswa'];
$data = mysqli_query($koneksi, "SELECT * FROM siswa WHERE id_siswa='$id_siswa'");
$row = mysqli_fetch_assoc($data);
?>

<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <title>Edit Siswa</title>
</head>
<body>

<h2>Edit Siswa</h2>
<form action="proses/proses_edit.php?id_siswa=<?= $id_siswa; ?>" method="post">
  <label>NIS:</label><br>
  <input type="text" name="nis" value="<?= htmlspecialchars($row['nis']); ?>" required><br><br>

  <label>Nama Siswa:</label><br>
  <input type="text" name="nama_siswa" value="<?= htmlspecialchars($row['nama_siswa']); ?>" required><br><br>

  <label>Jenis Kelamin:</label><br>
  <select name="jenis_kelamin" required>
    <option value="L" <?= $row['jenis_kelamin']=='L'?'selected':''; ?>>L</option>
    <option value="P" <?= $row['jenis_kelamin']=='P'?'selected':''; ?>>P</option>
  </select><br><br>

  <button type="submit" name="update">Update</button>
</form>

</body>
</html>

Berikut adalah isi dari file proses_tambah.php


<?php
require_once __DIR__ . '/../../config/koneksi.php';

if (isset($_POST['simpan'])) {
    $nis            = mysqli_real_escape_string($koneksi, $_POST['nis']);
    $nama_siswa     = mysqli_real_escape_string($koneksi, $_POST['nama_siswa']);
    $jenis_kelamin  = mysqli_real_escape_string($koneksi, $_POST['jenis_kelamin']);

    $query = mysqli_query($koneksi, "INSERT INTO siswa (nis, nama_siswa, jenis_kelamin) VALUES ('$nis', '$nama_siswa', '$jenis_kelamin')");

    if ($query) {
        echo "<script>alert('Data berhasil disimpan');window.location='../index.php';</script>";
    } else {
        echo "<script>alert('Gagal menyimpan data');window.location='../tambah.php';</script>";
    }
} else {
    header('Location: ../tambah.php');
    exit;
}
?>

Berikut adalah isi dari file proses_edit.php


<?php
require_once __DIR__ . '/../../config/koneksi.php';

if (isset($_POST['update'])) {
    if (!isset($_GET['id_siswa'])) {
        echo "<script>alert('ID tidak ditemukan');window.location='../index.php';</script>";
        exit;
    }

    $id_siswa       = intval($_GET['id_siswa']);
    $nis            = mysqli_real_escape_string($koneksi, $_POST['nis']);
    $nama_siswa     = mysqli_real_escape_string($koneksi, $_POST['nama_siswa']);
    $jenis_kelamin  = mysqli_real_escape_string($koneksi, $_POST['jenis_kelamin']);

    $query = mysqli_query($koneksi, "UPDATE siswa SET nis='$nis', nama_siswa='$nama_siswa', jenis_kelamin='$jenis_kelamin' WHERE id_siswa='$id_siswa'");

    if ($query) {
        echo "<script>alert('Data berhasil diperbarui');window.location='../index.php';</script>";
    } else {
        echo "<script>alert('Gagal memperbarui data');window.location='../edit.php?id_siswa=$id_siswa';</script>";
    }

} else {
    header('Location: ../index.php');
    exit;
}
?>

Berikut adalah isi dari file proses_hapus.php


<?php
require_once __DIR__ . '/../../config/koneksi.php';

// Menghapus data siswa berdasarkan id_siswa yang dikirim lewat GET
if (isset($_GET['id_siswa'])) {
    $id_siswa = intval($_GET['id_siswa']);

    $query = mysqli_query($koneksi, "DELETE FROM siswa WHERE id_siswa='$id_siswa'");

    if ($query) {
        echo "<script>alert('Data berhasil dihapus');window.location='../index.php';</script>";
    } else {
        echo "<script>alert('Gagal menghapus data');window.location='../index.php';</script>";
    }
} else {
    echo "<script>alert('ID tidak ditemukan');window.location='../index.php';</script>";
}
?>

Posting Komentar untuk "PHP : Membuat CRUD Sederhana dengan Folder Terpisah"