Membuat CRUD (Create, Read, Update, Delete) dalam satu file PHP.
Biasanya, membuat aplikasi CRUD dilakukan dengan membuat file terpisah. Masing-masing file mewakili CRUD.
Misalkan file create.php untuk menambahkan data, read.php untuk menampikan data, update.php untuk mengubah data, dan delete.php untuk menghapus data.
Bagaimana kalau, semuanya digabungkan ke dalam satu file PHP?
Pada kesempatan ini, saya ingin membagikan sebuah kode CRUD yang ditulis dalam satu file PHP. Kode ini, saya buat dengan koneksi database menggunakan API mysqli.
Dalam kode, terdapat empat fungsi yang mewakili CRUD:
- Pertama fungsi
tambah()
untuk menambahkan data. - Kedua fungsi
tampil_data()
untuk membaca data dan menampilkanya dalam bentuk tabel. - Ketiga fungsi
ubah()
untuk mengubah data. - Terakhir ada fungsi
hapus()
untuk menghapus data.
Program utama bertindak sebagai router yang mengatur pemanggilan fungsi.
Misalkan, pada halaman Home, fungsi yang dipanggil adalah
tambah_data()
dan tampil_data()
.
Hal ini bisa dilakukan dengan stuktur pemilihan Switch/Case.Kode lengkapnya bisa dicek di github.
<!DOCTYPE html>
<html>
<head>
<title>CRUD Petani Kode</title>
<link rel="icon" href="http://www.petanikode.com/favicon.ico" />
</head>
<body>
<?php
// --- koneksi ke database
$koneksi = mysqli_connect("localhost","root","kopi","pertanian") or die(mysqli_error());
// --- Fngsi tambah data (Create)
function tambah($koneksi){
if (isset($_POST['btn_simpan'])){
$id = time();
$nm_tanaman = $_POST['nm_tanaman'];
$hasil = $_POST['hasil'];
$lama = $_POST['lama'];
$tgl_panen = $_POST['tgl_panen'];
if(!empty($nm_tanaman) && !empty($hasil) && !empty($lama) && !empty($tgl_panen)){
$sql = "INSERT INTO tabel_panen (id,nama_tanaman, hasil_panen, lama_tanam, tanggal_panen) VALUES(".$id.",'".$nm_tanaman."','".$hasil."','".$lama."','".$tgl_panen."')";
$simpan = mysqli_query($koneksi, $sql);
if($simpan && isset($_GET['aksi'])){
if($_GET['aksi'] == 'create'){
header('location: index.php');
}
}
} else {
$pesan = "Tidak dapat menyimpan, data belum lengkap!";
}
}
?>
<form action="" method="POST">
<fieldset>
<legend><h2>Tambah data</h2></legend>
<label>Nama tanaman <input type="text" name="nm_tanaman" /></label> <br>
<label>Hasil panen <input type="number" name="hasil" /> kg</label><br>
<label>Lama tanam <input type="number" name="lama" /> bulan</label> <br>
<label>Tanggal panen <input type="date" name="tgl_panen" /></label> <br>
<br>
<label>
<input type="submit" name="btn_simpan" value="Simpan"/>
<input type="reset" name="reset" value="Besihkan"/>
</label>
<br>
<p><?php echo isset($pesan) ? $pesan : "" ?></p>
</fieldset>
</form>
<?php
}
// --- Tutup Fngsi tambah data
// --- Fungsi Baca Data (Read)
function tampil_data($koneksi){
$sql = "SELECT * FROM tabel_panen";
$query = mysqli_query($koneksi, $sql);
echo "<fieldset>";
echo "<legend><h2>Data Panen</h2></legend>";
echo "<table border='1' cellpadding='10'>";
echo "<tr>
<th>ID</th>
<th>Nama Tanaman</th>
<th>Hasil Panen</th>
<th>Lama Tanam</th>
<th>Tanggal Panen</th>
<th>Tindakan</th>
</tr>";
while($data = mysqli_fetch_array($query)){
?>
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['nama_tanaman']; ?></td>
<td><?php echo $data['hasil_panen']; ?> Kg</td>
<td><?php echo $data['lama_tanam']; ?> bulan</td>
<td><?php echo $data['tanggal_panen']; ?></td>
<td>
<a href="index.php?aksi=update&id=<?php echo $data['id']; ?>&nama=<?php echo $data['nama_tanaman']; ?>&hasil=<?php echo $data['hasil_panen']; ?>&lama=<?php echo $data['lama_tanam']; ?>&tanggal=<?php echo $data['tanggal_panen']; ?>">Ubah</a> |
<a href="index.php?aksi=delete&id=<?php echo $data['id']; ?>">Hapus</a>
</td>
</tr>
<?php
}
echo "</table>";
echo "</fieldset>";
}
// --- Tutup Fungsi Baca Data (Read)
// --- Fungsi Ubah Data (Update)
function ubah($koneksi){
// ubah data
if(isset($_POST['btn_ubah'])){
$id = $_POST['id'];
$nm_tanaman = $_POST['nm_tanaman'];
$hasil = $_POST['hasil'];
$lama = $_POST['lama'];
$tgl_panen = $_POST['tgl_panen'];
if(!empty($nm_tanaman) && !empty($hasil) && !empty($lama) && !empty($tgl_panen)){
$perubahan = "nama_tanaman='".$nm_tanaman."',hasil_panen=".$hasil.",lama_tanam=".$lama.",tanggal_panen='".$tgl_panen."'";
$sql_update = "UPDATE tabel_panen SET ".$perubahan." WHERE id=$id";
$update = mysqli_query($koneksi, $sql_update);
if($update && isset($_GET['aksi'])){
if($_GET['aksi'] == 'update'){
header('location: index.php');
}
}
} else {
$pesan = "Data tidak lengkap!";
}
}
// tampilkan form ubah
if(isset($_GET['id'])){
?>
<a href="index.php"> « Home</a> |
<a href="index.php?aksi=create"> (+) Tambah Data</a>
<hr>
<form action="" method="POST">
<fieldset>
<legend><h2>Ubah data</h2></legend>
<input type="hidden" name="id" value="<?php echo $_GET['id'] ?>"/>
<label>Nama tanaman <input type="text" name="nm_tanaman" value="<?php echo $_GET['nama'] ?>"/></label> <br>
<label>Hasil panen <input type="number" name="hasil" value="<?php echo $_GET['hasil'] ?>"/> kg</label><br>
<label>Lama tanam <input type="number" name="lama" value="<?php echo $_GET['lama'] ?>"/> bulan</label> <br>
<label>Tanggal panen <input type="date" name="tgl_panen" value="<?php echo $_GET['tanggal'] ?>"/></label> <br>
<br>
<label>
<input type="submit" name="btn_ubah" value="Simpan Perubahan"/> atau <a href="index.php?aksi=delete&id=<?php echo $_GET['id'] ?>"> (x) Hapus data ini</a>!
</label>
<br>
<p><?php echo isset($pesan) ? $pesan : "" ?></p>
</fieldset>
</form>
<?php
}
}
// --- Tutup Fungsi Update
// --- Fungsi Delete
function hapus($koneksi){
if(isset($_GET['id']) && isset($_GET['aksi'])){
$id = $_GET['id'];
$sql_hapus = "DELETE FROM tabel_panen WHERE id=" . $id;
$hapus = mysqli_query($koneksi, $sql_hapus);
if($hapus){
if($_GET['aksi'] == 'delete'){
header('location: index.php');
}
}
}
}
// --- Tutup Fungsi Hapus
// ===================================================================
// --- Program Utama
if (isset($_GET['aksi'])){
switch($_GET['aksi']){
case "create":
echo '<a href="index.php"> « Home</a>';
tambah($koneksi);
break;
case "read":
tampil_data($koneksi);
break;
case "update":
ubah($koneksi);
tampil_data($koneksi);
break;
case "delete":
hapus($koneksi);
break;
default:
echo "<h3>Aksi <i>".$_GET['aksi']."</i> tidaka ada!</h3>";
tambah($koneksi);
tampil_data($koneksi);
}
} else {
tambah($koneksi);
tampil_data($koneksi);
}
?>
</body>
</html>
Sementara untuk database yang digunakan bernama pertanian
.Database ini memiliki sebuah tabel bernama
tabel_panen
yang akan digunakan untuk menyimpan data
panen pertanian.Berikut ini stuktur
tabel_penen
.File SQL-nya tersedia di github: pertanian.sql
Tampilan atau hasil output kode masih dalam bentuk polos. Saya tidak menggunakan CSS maupun Javascript. Hanya terdapat PHP dan HTML saja.
Berikut ini cuplikan tampilannya.
Halaman Home atau halaman utama (index.php):
Halaman (form) tambah data:
Halaman tampil data:
Halaman (form) ubah data:
0 komentar:
Posting Komentar