author Ahmad Muhardian

Kode CRUD dalam Satu File PHP


Pernah mebayangkan, tidak?

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.

Fungsi-fungsi tersebut dipanggil pada fungsi (program) utama.

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"> &laquo; 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"> &laquo; 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.

Skema database pertanian

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 Home

Halaman (form) tambah data:

Halaman Create Data

Halaman tampil data:

Halaman Read Data

Halaman (form) ubah data:

Halaman Update

Demo:

Tampilannya memang masih plain (polos).

Silahkan tambahkan CSS untuk menghiasnya 😃.

Baca Juga ini

Cara Menampilkan Pesan Error untuk Debugging Program PHP

Cara Menampilkan Pesan Error untuk Debugging Program PHP

Secara default, konfigurasi yang akan diberikan pada server Apache di Linux adalah mode production. Server produksi (production server) merupakan server yang digunakan setelah web selesai dikembangkan atau sudah siap dipakai. Server produksi tidak akan menampilkan apa-apa kalau terjadi error. Karena itu, kita harus mengubahnya ke dalam mode development. Silahkan simak caranya, sebagai berikut. 1. Buka File Konfigurasi ServerSilahkan buka file konfigurasi server yang ada di /etc/php5/apache2/php.ini dengan teks editor.

Membuat Template Wordpress #2: Fungsi-fungsi Dasar Wordpress di Homepage

Membuat Template Wordpress #2: Fungsi-fungsi Dasar Wordpress di Homepage

Pada tutorial sebelumnya kita telah membuat konstruksi awal dari template. Ada dua file yang telah kita dibuat, index.php dan style.css. Sekarang kita fokus pada file index.php. Isinya adalah sebuah HTML percobaan (hello world). Tentu ini bukan tujuan akhir yang kita inginkan, Karena itu, kita akan menggantinya. Mari kita mulai… googletag.cmd.push(function () { googletag.display('div-gpt-ad-multibanner1'); }); Modifikasi File index.phpFile index.php merupakan file utama template.

Belajar Membuat Template Wordpress Sendiri dari Nol

Belajar Membuat Template Wordpress Sendiri dari Nol

Di luar sana, ada banyak sekali bertebaran tema atau template Wordpress gratis. Namun, kita perlu hati-hati dalam menggunakan template gratis tersebut. Beberapa hari yang lalu, saya sudah mengecek website wordpress teman saya. Katanya ia memesan web sekaligus temanya dari seorang developer. Begitu saya cek… Eh, ternyata di sana ada script backdoor yang memungkinkan si developer masuk kapan saja ke web dia. Script ini ditanam pada kode tema atau template.

Konfigurasi Server Apache PHP di Linux agar bisa Upload File

Konfigurasi Server Apache PHP di Linux agar bisa Upload File

Saya berencana akan melakukan instal ulang dalam waktu dekat ini. Karena ada beberapa kerusakan yang saya temukan di Distro Linux yang sedang saya pakai. Sebelum melakukan itu, ada baiknya mencatat dulu konfigurasi server yang sedang berjalan. Supaya nanti mudah mengonfigurasi lagi. Server Apache dan PHP di Linux tidak seperti server XAMPP di Windows. Server Apache dan PHP di linux memiliki hak akses direktori yang harus dipatuhi.

Membuat Project PHP dengan Composer

Membuat Project PHP dengan Composer

Sebanarnya untuk memulai belajar pemrograman PHP, kita tidak butuh banyak alat. Cukup dengan 4 alat ini...