Halo! Sekarang sudah edisi ke 13, yeay! Dan di edisi Belajar PHP OOP kali ini, saya akan membahas tentang membuat aplikasi CRUD sederhana dengan PDO. Selain menggunakan PDO, kita juga coba implementasikan materi-materi belajar PHP OOP yang sudah kita pelajari.

Kalau sudah dengar CRUD (Create, Read, Update, Delete), pasti kita bisa membayangkan aplikasi yang bisa memanipulasi data, seperti menambahkan, menampilkan, mengubah dan menghapus data. Kalau di postingan saya sebelumnya, kita sudah membahas tentang CRUD dengan framework CodeIgniter [Baca: CRUD Sederhana CodeIgniter]. Pada edisi belajar PHP OOP ini kita gunakan PDO untuk menangani operasi CRUD. Jadi apa itu PDO?

Apa itu PDO?

PDO (PHP Data Objects) adalah ekstensi PHP yang menyediakan antarmuka untuk berinteraksi dengan berbagai jenis basis data menggunakan cara yang seragam. PDO dirancang untuk memberikan layer abstraksi yang konsisten terhadap berbagai sistem basis data, sehingga memungkinkan pengembang untuk mengakses dan bekerja dengan database tanpa perlu mengubah banyak kode jika basis data yang digunakan berubah.

Beberapa keuntungan menggunakan PDO antara lain:

  1. Portabilitas: PDO mendukung banyak jenis basis data, termasuk MySQL, PostgreSQL, SQLite, dan lainnya. Ini memungkinkan Anda untuk dengan mudah beralih dari satu jenis basis data ke yang lain tanpa mengubah banyak kode.

  2. Keamanan: PDO menyediakan fitur pengamanan seperti penggunaan parameterized queries (prepared statements), yang membantu melindungi aplikasi dari serangan SQL injection.

  3. Kode yang Lebih Bersih: PDO menyediakan antarmuka yang konsisten untuk bekerja dengan basis data, sehingga kode Anda menjadi lebih bersih dan mudah dipahami.

  4. Kemampuan Transaksi: PDO mendukung transaksi, yang memungkinkan Anda untuk melakukan beberapa operasi database sebagai satu unit yang dapat di-rollback jika terjadi kesalahan.

Contoh penggunaan PDO untuk mengakses basis data MySQL dapat dilihat di bawah ini:

// Mengatur koneksi ke basis data MySQL menggunakan PDO
$dsn = 'mysql:host=localhost;dbname=nama_database';
$username = 'username';
$password = 'password';

try {
    $dbh = new PDO($dsn, $username, $password);
    echo "Koneksi sukses";
} catch (PDOException $e) {
    echo "Koneksi gagal: " . $e->getMessage();
}

Setelah koneksi dibuat, Anda dapat menggunakan PDO untuk menjalankan query SQL, memanfaatkan parameterized queries, dan melakukan berbagai operasi basis data lainnya.

Lalu, kenapa CRUD Dengan PDO jadi tema di edisi kali ini? Itu karena, beberapa waktu yang lalu, di diskusi grup ada yang menanyakan hal yang terkait Deprecated-nya MySQL sewaktu upgrade versi PHP, katanya terdapat error pada aplikasinya karena masih menggunakan MySQL. Setelah saya googling, banyak yang menyarankan untuk menggunakan PDO. (Sebetulnya dierrornya juga sudah ada petunjuknya sih, kalau kita perhatikan). Ini cukup menggelitik rasa penasaran saya untuk mencoba membuat aplikasi CRUD sederhana dengan PDO dan untuk tampilannya (user interface), saya akan coba memakai Bootsrap. Dan, sebagai contoh saya akan membuat aplikasi CRUD sederhana untuk mengelola data barang pada aplikasi kasir. Seperti apa langkah-langkah dalam membuat aplikasi CRUD dengan PDO? Try this out ya!

Overview

Pada tutorial kali ini kita akan membuat aplikasi crud menggunakan PDO dengan studi kasus membuat fitur untuk mengelola data barang pada aplikasi kasir.

Goal akhir dari tutorial ini tentu kita bisa paham lebih jauh tentang OOP dan penggunaan PDO.

Step 1 - Persiapan direktori project

Sebelum memulai coding, pertama kita harus menyiapkan direktori project kita. Kita buat folder baru di dalam folder htdocs (asumsi kita sama-sama pakai Xampp) kita kasih nama aplikasi_kasir. Ini contoh saja, kamu boleh kasih nama apa aja, bebas kok..

Nanti folder aplikasi_kasir ini akan kita gunakan untuk menyimpan file-file php. FYI, Karena User Interfacenya saya menggunakan Bootsrap yang diload melalui CDN, mungkin kamu perlu juga siapin koneksi internet. Atau kamu bisa download Bootstrapnya terlebih dahulu di tautan ini.

Selanjutnya buka folder aplikasi_kasir di code editor. Kalau menggunakan visual studio code, buka menu File lalu pilih sub menu Open Folder lalu pilih folder C:/xampp/htdocs/aplikasi_kasir, lalu klik tombol Open untuk membuka folder di visual studio code.

Step 2 - Membuat Database dan Table

Selanjutnya kita akan buat database. Karena aplikasi yang akan kita buat itu berhubungan dengan manipulasi data atau CRUD, tentu saja kita harus buat database terlebih dahulu.

Sekarang kita buat database baru menggunakan phpMyAdmin. Sebagai contoh, database ini kita beri nama belajar_oop. Setelah itu, kita buat table di dalam database yang baru saja kita buat, saya kasih nama barang dengan struktur tabel seperti gambar berikut:

crud php oop - qadrLabs

Oh iya, kita juga bisa buat table pakai perintah SQL di bawah ini lho! Di phpmyadmin, di database belajar_oop, kita klik menu SQL, lalu copy-paste, perintah sql di bawah ini.

 CREATE TABLE `barang` (

  `id_barang` varchar(10) NOT NULL,
  `nama` varchar(50) NOT NULL,
  `stok` int(10) NOT NULL,
  `harga` int(25) NOT NULL,
  PRIMARY KEY (`id_barang`)

 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Step 3 - Coding Konfigurasi Database

Setelah database dan tabel kita buat, selanjutnya kita buat file untuk mengkonfigurasi database.

Pada tahapan ini kita sudah mulai masuk ke coding.

Buka text editor kesayanganmu, lalu ketik sintaks di bawah ini:

<?php

try {

    $con = new PDO('mysql:host=localhost;dbname=belajar_oop', 'root', '', array(PDO::ATTR_PERSISTENT => true));
} catch (PDOException $e) {

    echo $e->getMessage();
}

include_once 'barang_class.php';

$brg = new barang($con);

?>

Simpan filenya di folder aplikasi_kasir dengan nama dbconfig.php.

Bisa kita lihat, pada baris ke 5, kita akan membuat object $con menggunakan Class PDO, bersamaan dengan informasi data source name dan user credential pada parameternya, yaitu localhost untuk hostnya, belajar_oop untuk databasenya, root untuk username dan password (isi password kalau mysql kamu pakai password).

Selain konfigurasi database, kita juga akan memanggil file barang_class.php menggunakan fungsi include_once pada baris ke 12. Lalu kita buat sebuah object dengan $brg. Nanti kita bakalan pakai object ini di file lainnya.

Step 4 - Coding Class dan Halaman User Interface

Ya, it's coding time! Langkah selanjutnya kita akan membuat beberapa file php, yaitu barang_class.php, index.php, add.php, edit.php, dan hapus.php. File-file php tersebut dan file dbconfig.php kita simpan dalam folder aplikasi_kasir.

Sekarang kita buat file barang_class.php. Buka kembali text kesayanganmu, lalu ketik sintaks di bawah ini:

<?php

class barang
{
    private $db;

    public function __construct($con)
    {
        $this->db = $con;
    }

    ### Start : fungsi insert data ke database ###

    public function insertData($id_barang, $nama, $stok, $harga)
    {
        try {
            $stmt = $this->db->prepare("INSERT INTO barang(id_barang,nama,stok,harga) VALUES(:id_barang, :nama, :stok, :harga)");

            $stmt->bindparam(":id_barang", $id_barang);

            $stmt->bindparam(":nama", $nama);

            $stmt->bindparam(":stok", $stok);

            $stmt->bindparam(":harga", $harga);

            $stmt->execute();

            return true;
        } catch (PDOException $e) {
            echo $e->getMessage();

            return false;
        }
    }

    ### End : fungsi insert data ke database ###

    ### Start : fungsi ambil data dari database ###

    public function getID($id_barang)
    {
        $stmt = $this->db->prepare("SELECT * FROM barang WHERE id_barang=:id_barang");

        $stmt->execute(array(":id_barang" => $id_barang));

        $data = $stmt->fetch(PDO::FETCH_ASSOC);

        return $data;
    }

    ### End: fungsi ambil data dari database ###

    ### Start : fungsi untuk menampilkan data dari database ###

    public function viewData($query)
    {
        $stmt = $this->db->prepare($query);

        $stmt->execute();

        if ($stmt->rowCount() > 0) {
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                ?>

                <tr>

                    <td><?php echo($row['id_barang']); ?></td>

                    <td><?php echo($row['nama']); ?></td>

                    <td><?php echo($row['stok']); ?></td>

                    <td><?php echo($row['harga']); ?></td>

                    <td align="center">

                        <a href="edit.php?edit_id=<?php echo($row['id_barang']); ?>">

                            <i class="glyphicon glyphicon-edit"></i></a>

                    </td>

                    <td align="center">

                        <a href="hapus.php?delete_id=<?php echo($row['id_barang']); ?>">

                            <i class="glyphicon glyphicon-remove-circle"></i></a>

                    </td>

                </tr>

                <?php
            }
        } else {
            ?>

            <tr>

                <td>Data tidak ditemukan...</td>

            </tr>

            <?php
        }
    }

    ### End : fungsi untuk menampilkan data dari database ###

    ### Start : fungsi untuk memperbaharui data###

    public function updateData($id_barang, $nama, $stok, $harga)
    {
        try {
            $stmt = $this->db->prepare("UPDATE barang SET nama=:nama,

                                                                    stok=:stok,

                                                                    harga=:harga

                                                                WHERE id_barang=:id_barang ");

            $stmt->bindparam(":id_barang", $id_barang);

            $stmt->bindparam(":nama", $nama);

            $stmt->bindparam(":stok", $stok);

            $stmt->bindparam(":harga", $harga);

            $stmt->execute();

            return true;
        } catch (PDOException $e) {
            echo $e->getMessage();

            return false;
        }
    }

    ### End : fungsi untuk memperbaharui data###

    ### Start : fungsi untuk menghapus data###

    public function deleteData($id_barang)
    {
        $stmt = $this->db->prepare("DELETE FROM barang WHERE id_barang=:id_barang");

        $stmt->bindparam(":id_barang", $id_barang);

        $stmt->execute();

        return true;
    }

    ### End : fungsi untuk menghapus data###

    ### Start : fungsi paging###

    public function paging($query, $records_per_page)
    {
        $starting_position = 0;

        if (isset($_GET["page_no"])) {
            $starting_position = ($_GET["page_no"] - 1) * $records_per_page;
        }

        $query2 = $query . " limit $starting_position,$records_per_page";

        return $query2;
    }

    ### End : fungsi paging###

    ### Start : fungsi pindah page###

    public function paginglink($query, $records_per_page)
    {
        $self = $_SERVER['PHP_SELF'];

        $stmt = $this->db->prepare($query);

        $stmt->execute();

        $total_no_of_records = $stmt->rowCount();

        if ($total_no_of_records > 0) {
            ?>
            <ul class="pagination"><?php

            $total_no_of_pages = ceil($total_no_of_records / $records_per_page);

            $current_page = 1;

            if (isset($_GET["page_no"])) {
                $current_page = $_GET["page_no"];
            }

            if ($current_page != 1) {
                $previous = $current_page - 1;

                echo "<li><a href='" . $self . "?page_no=1'>First</a></li>";

                echo "<li><a href='" . $self . "?page_no=" . $previous . "'>Previous</a></li>";
            }

            for ($i = 1; $i <= $total_no_of_pages; $i++) {
                if ($i == $current_page) {
                    echo "<li><a href='" . $self . "?page_no=" . $i . "' style='color:red;'>" . $i . "</a></li>";
                } else {
                    echo "<li><a href='" . $self . "?page_no=" . $i . "'>" . $i . "</a></li>";
                }
            }

            if ($current_page != $total_no_of_pages) {
                $next = $current_page + 1;

                echo "<li><a href='" . $self . "?page_no=" . $next . "'>Next</a></li>";

                echo "<li><a href='" . $self . "?page_no=" . $total_no_of_pages . "'>Last</a></li>";
            } ?></ul><?php
        }
    }

    ### End : fungsi pindah page###
}

Simpan kembali file barang_class.php.

Selanjutnya, kita buat file index.php yang digunakan untuk menampilkan data barang dalam tabel. Buka kembali teks editor lalu ketik sintaks di bawah ini:

 <?php

include_once 'dbconfig.php';

?>

<!DOCTYPE html>

<html lang="en">

<head>

    <title>Aplikasi CRUD Sederhana Dengan PHP OOP PDO</title>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!--Bootstrap-->

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

</head>

<body>

<div class="container">

    <div class="panel panel-primary">

        <div class="panel-heading">Data Barang</div>

        <div class="panel-body">

            <a href="add.php" class="btn btn-large btn-default">

                <i class="glyphicon glyphicon-plus"></i>

                &nbsp; Tambah Data</a>

            <br/><br/>

            <table class='table table-bordered table-responsive'>

                <tr>

                    <th>ID Barang</th>

                    <th>Nama Barang</th>

                    <th>Stok</th>

                    <th>Harga</th>

                    <th colspan="2" align="center">Actions</th>

                </tr>

                <?php

                $query = "SELECT * FROM barang";

                $records_per_page = 5;

                $newquery = $brg->paging($query, $records_per_page);

                $brg->viewData($newquery);

                ?>

                <tr>

                    <td colspan="7" align="center">

                        <div class="pagination-wrap">

                            <?php $brg->paginglink($query, $records_per_page); ?>

                        </div>

                    </td>

                </tr>

            </table>

        </div>
        <!--End: Panel-body-->

    </div>
    <!--End: Panel-->

</div>

<div class="container">

    <div class="alert alert-success">

        <p><strong>Selamat Belajar :) </strong></p>

        <p>If you have question, feel free to ask me <a href="http://facebook.com/gungunpriatna002">here</a>!</p>

    </div>

</div>

<!--Bootstrap-->

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
        integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
        crossorigin="anonymous"></script>

</body>

</html>

Simpan kembali file index.php.

Nah, untuk menambahkan data kita akan buat file add.php. Ketik lagi sintaks di bawah ini ya! ^^

<?php

include_once 'dbconfig.php';

if (isset($_POST['btn-save'])) {
    $id_barang      = strtoupper($_POST['id_barang']);

    $nama           = $_POST['nama'];

    $stok          = $_POST['stok'];

    $harga           = $_POST['harga'];

    if ($brg->insertData($id_barang, $nama, $stok, $harga)) {
        header("Location: add.php?inserted");
    } else {
        header("Location: add.php?failure");
    }
}

?>

<!DOCTYPE html>

<html lang="en">

<head>

    <title>Aplikasi CRUD Sederhana Dengan PHP OOP PDO</title>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!--Bootstrap-->

    <!--Bootstrap-->

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

</head>

<body>

<div class="container">

    <div class="panel panel-primary">

        <div class="panel-heading">Form Tambah Data</div>

        <div class="panel-body">

            <?php

            if (isset($_GET['inserted'])) {
                ?>

                <div class="container">

                    <div class="alert alert-info">

                        <strong>Info!</strong> Data berhasil tersimpan! Silakan klik di <a href="index.php">sini</a> untuk kembali ke beranda.

                    </div>

                </div>

                <?php
            } elseif (isset($_GET['failure'])) {
                ?>

                <div class="container">

                    <div class="alert alert-warning">

                        <strong>Warning!</strong> Data gagal disimpan !

                    </div>

                </div>

                <?php
            }

            ?>

            <div class="clearfix"></div><br />

            <form method='post'>

                <table class='table table-bordered'>

                    <tr>

                        <td>Id Barang</td>

                        <td><input type='text' name='id_barang' class='form-control' required maxlength="10" autofocus></td>

                    </tr>

                    <tr>

                        <td>Nama Barang</td>

                        <td><input type='text' name='nama' class='form-control' required maxlength="50"></td>

                    </tr>

                    <tr>

                        <td>Stok</td>

                        <td><input type='text' name='stok' class='form-control' required></td>

                    </tr>

                    <tr>

                        <td>Harga</td>

                        <td><input type='text' name='harga' class='form-control' required></td>

                    </tr>

                    <tr>

                        <td colspan="2">

                            <button type="submit" class="btn btn-primary" name="btn-save">Simpan

                            </button>

                            <button type="reset" class="btn btn-primary" name="btn-reset">Reset

                            </button> <br /><br />

                            <a href="index.php" class="btn btn-large btn-success">

                                <i class="glyphicon glyphicon-backward"></i> &nbsp; Kembali ke halaman utama</a>

                        </td>

                    </tr>

                </table>

            </form>

        </div>
        <!--End: Panel-body-->

    </div>
    <!--End: Panel-->

</div>

<div class="container">

    <div class="alert alert-success">

        <p><strong>Selamat Belajar :) </strong></p>

        <p>If you have question, feel free to ask me <a href="http://facebook.com/gungunpriatna002">here</a>!</p>

    </div>

</div>

<!--Bootstrap-->

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

</body>

</html>

Setelah selesai diketik, simpan kembali file add.php.

Berikutnya, kita buat file edit.php. Ya, buka kembali text editor kesayanganmu, lalu ketik sintaks di bawah ini:

<?php

include_once 'dbconfig.php';

$id_barang = $_GET['edit_id'];

if (isset($_POST['btn-update'])) {
    $nama = $_POST['nama'];

    $stok = $_POST['stok'];

    $harga = $_POST['harga'];

    if ($brg->updateData($id_barang, $nama, $stok, $harga)) {
        $msg = "<div class='alert alert-info'>

                          <strong>Info</strong> Data berhasil diubah! Silakan klik di <a href='index.php'>sini</a> untuk kembali ke beranda.

                          </div>";
    } else {
        $msg = "<div class='alert alert-warning'>

                          <strong>Warning!</strong> Update Data Gagal !

                          </div>";
    }
}

if (isset($id_barang)) {
    extract($brg->getID($id_barang));
}

?>

<!DOCTYPE html>

<html lang="en">

<head>

    <title>Aplikasi CRUD Sederhana Dengan PHP OOP PDO</title>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!--Bootstrap-->

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

</head>

<body>

<div class="container">

    <div class="panel panel-primary">

        <div class="panel-heading">Form Edit Data</div>

        <div class="panel-body">

            <?php

            if (isset($msg)) {
                echo $msg;
            }

            ?>

        </div>

        <div class="clearfix"></div>
        <br/>

        <form method='post'>

            <table class='table table-bordered'>

                <tr>

                    <td>Id Barang</td>

                    <td><input type='text' name='id_barang' class='form-control' required maxlength="10"
                               value="<?php echo $id_barang; ?>" readonly></td>

                </tr>

                <tr>

                    <td>Nama Barang</td>

                    <td><input type='text' name='nama' class='form-control' required maxlength="50"
                               value="<?php echo $nama; ?>" autofocus></td>

                </tr>

                <tr>

                    <td>Stok</td>

                    <td><input type='text' name='stok' class='form-control' value="<?php echo $stok; ?>" required></td>

                </tr>

                <tr>

                    <td>Harga</td>

                    <td><input type='text' name='harga' class='form-control' value="<?php echo $harga; ?>" required>
                    </td>

                </tr>

                <tr>

                    <td colspan="2">

                        <button type="submit" class="btn btn-primary" name="btn-update">Simpan

                        </button>

                        <button type="reset" class="btn btn-primary" name="btn-reset">Reset

                        </button>
                        <br/><br/>

                        <a href="index.php" class="btn btn-large btn-success">

                            <i class="glyphicon glyphicon-backward"></i> &nbsp; Kembali ke halaman utama</a>

                    </td>

                </tr>

            </table>

        </form>

    </div>
    <!--End: Panel-body-->

</div>
<!--End: Panel-->

</div>

<div class="container">

    <div class="alert alert-success">

        <p><strong>Selamat Belajar :) </strong></p>

        <p>If you have question, feel free to ask me <a href="http://facebook.com/gungunpriatna002">here</a>!</p>

    </div>

</div>

<!--Bootstrap-->

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
        integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
        crossorigin="anonymous"></script>

</body>

</html> 

Yep, simpan file edit.php.

Dan yang terakhir, kita buat file hapus.php. Ok, ketik kembali sintaks di bawah ini:

<?php

include_once 'dbconfig.php';

if (isset($_POST['btn-del'])) {
    $id_barang = $_GET['delete_id'];

    $brg->deleteData($id_barang);

    header("Location: hapus.php?deleted");
}

?>

<!DOCTYPE html>

<html lang="en">

<head>

    <title>Contoh Implementasi Class Diagram</title>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!--Bootstrap-->

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

</head>

<body>

<div class="container">

    <div class="panel panel-primary">

        <div class="panel-heading">Halaman Hapus Data</div>

        <div class="panel-body">

            <?php

            if (isset($_GET['deleted'])) {
                ?>

                <div class="alert alert-success">

                    <strong>Info!</strong> Data berhasil dihapus...

                </div>

                <?php
            } else {
                ?>

                <div class="alert alert-danger">

                    <strong>Warning!</strong> apa anda yakin ingin menghapusnya ?

                </div>

                <?php
            }

            ?>

        </div>

        <div class="container">

            <?php

            if (isset($_GET['delete_id'])) {
                $id_barang = $_GET['delete_id']; ?>

                <table class='table table-bordered'>

                    <tr>

                        <th>#</th>

                        <th>Nama</th>

                        <th>Stok</th>

                        <th>Harga</th>

                    </tr>

                    <?php

                    extract($brg->getID($id_barang)); ?>

                    <tr>

                        <td><?php echo $id_barang; ?></td>

                        <td><?php echo $nama; ?></td>

                        <td><?php echo $stok; ?></td>

                        <td><?php echo $harga; ?></td>

                    </tr>

                </table>

                <?php
            }

            ?>

        </div>

        <div class="container">

            <p>

                <?php

                if (isset($id_barang)) {
                ?>

            <form method="post">

                <input type="hidden" name="id" value="<?php echo $id_barang; ?>"/>

                <button class="btn btn-large btn-primary" type="submit" name="btn-del">

                    <i class="glyphicon glyphicon-trash"></i> &nbsp; YES
                </button>

                <a href="index.php" class="btn btn-large btn-success">

                    <i class="glyphicon glyphicon-backward"></i> &nbsp; NO</a>

            </form>

            <?php
            } else {
                ?>

                <a href="index.php" class="btn btn-large btn-success">

                    <i class="glyphicon glyphicon-backward"></i> &nbsp; Back to index</a>

                <?php
            }

            ?>

            </p>

        </div>

    </div>
    <!--End: Panel-body-->

</div>
<!--End: Panel-->

</div>

<div class="container">

    <div class="alert alert-success">

        <p><strong>Selamat Belajar :) </strong></p>

        <p>If you have question, feel free to ask me <a href="http://facebook.com/gungunpriatna002">here</a>!</p>

    </div>

</div>

<!--Bootstrap-->

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
        integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
        crossorigin="anonymous"></script>

</body>

</html>

Simpan file hapus.php dan selesai. :D

Setelah proses coding selesai, kita bisa lihat ada enam file php yang sudah kita simpan di direktori project crud kita, yaitu aplikasi kasir.

php oop crud - qadrLabs

Step 5 - Uji Coba Project

Sekarang kita coba run project di browser, buka url localhost/aplikasi_kasir. Pada browser kita bisa lihat tampilan project kita seperti gambar berikut ini.

uji coba run - php oop crud - qadrLabs

Pada gambar di atas adalah tampilan ketika table barang sudah kita tambahkan data. Untuk menambah data barang, sekarang kita coba klik tombol 'Tambah Data', nanti browser akan membuka halaman add.php. Di halaman ini ada form untuk menambah data barang. Sekarang kita coba isi formnya, misalnya kaya gini.

uji coba add data - php oop crud - qadrLabs

Setelah kita isi formnya, klik tombol 'Simpan' untuk menyimpan data barang. Nah, untuk mengecek apakah data berhasil disimpan atau belum kita bisa klik tombol 'Kembali ke halaman utama'. Sekarang kita bisa lihat datanya sudah tersimpan.

daftar bertambah - php oop crud - qadrLabs

Pada gambar di atas, saya sudah coba menambah beberapa barang. Kalau data melebihi 5, nanti bakalan nambah halamannya kaya gambar di atas. Untuk mengatur jumlah data yang ditampilkan di dalam tabel, cek halaman index.php line 35.

code - php oop crud - qadrLabs

Di line 35 ada variabel $records_per_page, valuenya disetting 5 untuk menampilkan 5 data perhalamannya. Untuk mengatur data yang ditampilkan perhalamannya, kita bisa mengganti value variabel tersebut.

Selanjutnya, bisa kita lihat di tabel ada kolom Actions yang berisi dua icon, icon edit sama icon delete. Untuk mengedit data barang, kita coba klik icon edit.

edit data - php oop crud - qadrLabs

Kita bisa lihat form edit dan juga data barangnya. Sekarang kita coba edit datanya, lalu klik tombol 'Simpan'. Selanjutnya akan ditampilkan notifikasi atau pemberitahuan kalau data berhasil diubah.

Sekarang klik tombol ke 'Kembali ke halaman utama', kita bisa lihat di tabel kalau datanya sudah berhasil kita ubah.

edit data bagian 2 - php oop crud - qadrLabs

edit data bagian 3 - php oop crud - qadrLabs

Lalu, bagaimana kalau kita mau hapus data barang?

Yep, kamu benar.^^

Kita tinggal klik icon 'delete' di kolom actions. Nanti bakalan muncul pertanyaan untuk konfirmasi hapus data. Kita tinggal Klik 'Yes' untuk menghapus data.

hapus data - php oop crud

See? Datanya sudah terhapus.. ^^


Kawan, aplikasi CRUD ini masih sederhana. Masih banyak kekurangan yang bisa diperbaiki. Masih terdapat banyak ruang yang bisa kamu kembangkan. Semoga dengan adanya seri Belajar PHP OOP edisi ke 13 ini bisa menambah semangat belajarmu ya...

Semoga bermanfaat.. ^^


Referensi:

Gun Gun Priatna
Software Engineer, Content Writer and Founder qadrlabs.com
Komentar

blog comments powered by Disqus