Membuat CRUD Sederhana dengan PHP native

Jika kita sudah memahami penggunaan PHP dan Query SQL, kita bisa membuat aplikasi CRUD. CRUD adalah kepanjangan dari "Create, Read, Update, and Delete" yang terkait dengan pengolahan data dalam tabel di database. Jika kita kaitkan dengan statement dalam query SQL, setiap kata dalam singkatan CRUD punya hubungan sebagai berikut.

  • CREATE => INSERT, menambahkan data
  • READ => SELECT, membaca data untuk ditampilkan setelahnya
  • UPDATE => UPDATE, mengubah atau memperbarui data
  • DELETE => DELETE, menghapus data

Untuk membuat aplikasi CRUD dengan php tanpa framework kita butuh beberapa file. File-file yang digunakan untuk mengolah satu data lebih baik diletakkan di dalam satu tabel.

Kali ini kita hanya akan membuat CRUD untuk satu tabel. Kita akan membuat 6 file sebagai berikut di dalam satu folder.

  • index.php
  • tambah.php
  • aksi_tambah.php
  • edit.php
  • aksi_edit.php
  • hapus.php
File pertama yang harus kita buat adalah index.php. File tersebut digunakan untuk menampilkan data di dalam tabel. Data didapatkan dengan statement Select. Selain itu, ada tombol yang digunakan untuk mengarahkan pengguna ke halaman lain.
<html>
<head>
    <title>CRUD</title>
    <style>
        .tabelku, .tabelku th, .tabelku td{
            border:1px solid black;
            border-collapse:collapse;
        }
    </style>
</head>
<body>
    <h2>CRUD sederhana</h2>
    <a href="tambah.php"><button>Tambah</button></a><br><br>
    <table class="tabelku">
    <tr>
        <th>Nama Barang</th>
        <th>Harga</th>
        <th>Aksi</th>
    </tr>
    <?php 
        $koneksi=mysqli_connect("localhost", "root", "");
        mysqli_select_db($koneksi, "databaseku");
        $hasil=mysqli_query($koneksi, "SELECT * FROM barang");

        while($a=mysqli_fetch_array($hasil)){
    ?>
            <tr>
                <td><?=$a["nama"]?></td>
                <td><?=$a["harga"]?></td>
                <td><a href='hapus.php?id=<?=$a["id"]?>'><button>Hapus</button></a>
                <a href='edit.php?id=<?=$a["id"]?>'><button>Edit</button></a></td>
            <tr>
    <?php
        }
        mysqli_close($koneksi);
    ?>
    </table>
</body>
</html>
File di atas menampilkan tabel yang berisi data. Selain itu ada tombol tambah di atasnya. Saat tombol tambah tersebut ditekan, kita akan diarahkan ke file tambah.php.
<html>
    <head>
        <title>Tambah Data</title>
        <style>
            .formku{
                display:grid;
                grid-template-columns:auto;
                width:50vw;
                margin-bottom:4px;
            }
        </style>
    </head>
    <body>
        <h2>Form Tambah</h2>
        <form action="aksi_tambah.php" method="post">
            <div class="formku">
                <label for="nama">Nama</label>
                <input type="text" name="nama">
                <label for="harga">Harga</label>
                <input type="number" name="harga">
            </div>
            <input type="submit" value="Simpan">
        </form>
    </body>
</html>
Script di atas hanya berisi kode html tanpa script php. Saat tombol simpan ditekan, tombol tersebut akan mengarahkan kita ke file aksi_tambah.php yang kodenya seperti di bawah ini.
<?php
    $koneksi=mysqli_connect("localhost", "root", "");
    mysqli_select_db($koneksi, "databaseku");

    $nama=mysqli_real_escape_string($koneksi, $_POST["nama"]);
    $harga=$_POST["harga"];

    $hasil=mysqli_query($koneksi, "INSERT INTO barang(nama, harga) VALUES('$nama', '$harga')");
    mysqli_close($koneksi);
    header('location:index.php');
?>
File yang digunakan untuk menghapus data akan kita beri nama hapus.php. Query SQLnya menggunakan statement Delete. Script di dalam file tersebut akan menghapus data saat tombol hapus ditekan. Penghapusan data menggunakan statement delete dan klausa where berdasarkan nilai kolom id. Isi file hapus.php adalah seperti di bawah ini.
<?php
    $koneksi=mysqli_connect("localhost", "root", "");
    mysqli_select_db($koneksi, "databaseku");

    $nama=mysqli_real_escape_string($koneksi, $_POST["nama"]);
    $harga=$_POST["harga"];

    $hasil=mysqli_query($koneksi, "INSERT INTO barang(nama, harga) VALUES('$nama', '$harga')");
    mysqli_close($koneksi);
    header('location:index.php');
?>

Dalam file index.php, ada tombol edit untuk setiap baris data. Saat salah satu tombol ditekan, tombol tersebut akan diarahkan ke file edit.php. Isi file tersebut bisa kalian lihat di bawah ini.

<?php 
    $id=$_GET["id"];
    $koneksi=mysqli_connect("localhost", "root", "");
    mysqli_select_db($koneksi, "databaseku");
    $hasil=mysqli_query($koneksi, "SELECT * FROM barang where id=$id");
    if($hasil){
        $a=mysqli_fetch_array($hasil);
    }else{
        $a=["nama"=>"", "harga"=>""];
    }
    mysqli_close($koneksi);
?>
<html>
    <head>
        <title>Tambah Data</title>
        <style>
            .formku{
                display:grid;
                grid-template-columns:auto;
                width:50vw;
                margin-bottom:4px;
            }
        </style>
    </head>
    <body>
        <h2>Form Edit</h2>
        <form action="aksi_edit.php" method="post">
            <div class="formku">
                <input type="hidden" name="id" value="<?=$_GET["id"]?>">
                <label for="nama">Nama</label>
                <input type="text" name="nama" value="<?=$a["nama"]?>">
                <label for="harga">Harga</label>
                <input type="number" name="harga" value="<?=$a["harga"]?>">
            </div>
            <input type="submit" value="Simpan">
        </form>
    </body>
</html>

Saat tombol simpan ditekan, tombol tersebut akan mengarahkan kita ke file aksi_edit.php. File tersebut berisi query update yang mengubah data berdasarkan id.

<?php
    $id=$_POST["id"];
    $koneksi=mysqli_connect("localhost", "root", "");
    mysqli_select_db($koneksi, "databaseku");
    
    $nama=mysqli_real_escape_string($koneksi, $_POST["nama"]);
    $harga=$_POST["harga"];

    $hasil=mysqli_query($koneksi, "UPDATE barang SET nama='$nama', harga='$harga' WHERE id=$id");
    mysqli_close($koneksi);
    header('location:index.php');
?>

Jika kita ingin membuat CRUD untuk tabel lain, kita bisa membuat folder baru dan menyalin keenam file yang sudah kita buat di atas. Setelah file disalin, kita bisa mengganti nama tabel di dalam query SQLnya.