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
| 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"