Simple CRUD menggunakan OOP, PDO dan Mysql

Simple CRUD, pada postingan kali ini saya akan sedikit berbagi pengetahuin mengenai bagaimana caranya membuat sebuah proses create, retrieve, update dan delete pada sebuah program sederhana dengan menggunakan PHP data object dan contoh sederhana dari sebuah konsep pemrogramman barbasis object oriented programming atau OOP.

https://padsite.blogspot.com/2019/06/simple-crud-menggunakan-oop-pdo-dan-mysql.html Dari judul postingan ini saya ambil kata simple, karena disini saya ingin menonjolkan sebuah fungsi – fungsi dari PDO sendiri sedangkan tampilkan pada tabel maupun form tidak saya gunakan pada tahap awal ini, tujuannya adalah untuk memberikan gambaran bagaimana cara menggunakan PDO. Lalu mengapa tidak menggunakan Mysql atau mysql, saya rasa PDO ini wajib untuk dipelajari karena mengingat mysql sendiri telah kehilangan perhatiannya dari para pengembangnya meskipun ada mysql akan tetapi tentunya banyak keuntungan yang akan di dapat jika menggunakan PDO.

https://padsite.blogspot.com/2019/06/simple-crud-menggunakan-oop-pdo-dan-mysql.html

Baiklah sebelum menju ke source code, anda perhatikan terlbih dahulu struktur direktori dari file – file yang digunakan pada contoh crud ini.

Struktur file
/ buku -- +
-- + Class_Buku.php
-- + db_connection.php
-- + form_create_buku.php
-- + form_delete_buku.php
-- + form_edit_buku.php
-- + index.php

Setelah anda melihat struktur file silahkan anda buat sebuah database dengan nama example (bebas) pada servel local anda jika menggunakan xampp kemudian anda masuk pada alamat localhost/phpmyadmin, setelah membuat database anda masuk pada tab sql kemudian anda copy dan paste sql untuk membuat tabel buku berikut.


CREATE TABLE `buku` (

  `kode_buku` varchar(8) NOT NULL,

  `judul_buku` varchar(50) NOT NULL,

  `pengarang_buku` varchar(20) NOT NULL,

  `penerbit_buku` varchar(50) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Kemudian tambahkan juga primary key untuk table buku, jika anda masih berada pada tab sql tabel buku silahkan ketik baris Sql berikut atau di copy paste.


ALTER TABLE `buku`

  ADD PRIMARY KEY (`kode_buku`);

COMMIT;

Selain itu anda juga dapat langsung mengisi data pada tabel buku dengan baris perintah sql berikut ini.


INSERT INTO `buku` (`kode_buku`, `judul_buku`, `pengarang_buku`, `penerbit_buku`) VALUES

('123456', 'Bahasa Inggris', 'Suryana', 'Atmajaya'),

('123457', 'Bahasa Indonesia', 'Budi', 'CV. Cetak ');

Jika pembuatan database dan tabel buku sudah berhasil di buat maka langkah selanjutnya adalah membuat sebuah folder pada directory htdocs dengan nama buku. Kemudian anda jalankan text editor yang anda miliki dan buatlah sebuah koneksi database menggunakan php data object untuk menghubungkan atau memanggil database yang telah di buat, buatlah sebuah file dengan extensi .php (dot php) pada folder buku dengan nama db_connection.php kemudian anda isi dengan baris kode berikut ini.

db_connection.php
 
<?php
class Connection {
    private $host = "localhost";
    private $db_name = "example";
    private $username = "root";
    private $password = "";
    public $conn;

    public function db_Connection() {

        $this->conn = null;
        try {
            $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $exception) {
            echo "Connection error: " . $exception->getMessage();
        }
        return $this->conn;
    }

}

Pada bagian $host, $user, $db_name dan password anda isi sesuai dengan konfigurasi yang anda miliki jika sudah dikonfigurasi secara default pada xampp user untuk mengakses sebuah database dinamakan dengan root dan tanpa password. Untuk host berikan localhost atau angka 127.0.0.1 dan nama database disesuaikan dengan yang telah anda buat sebelumnya jika memang tidak sama dengan yang sudah saya buat.

Setelah membuat koneksi database selanjutnya kita akan membuat sebuah class yang bersi fungsi – fungsi yang digunakan dalam proses crud tersebut. Class ini terdiri dari fungsi untuk mengambil data, menabah data, mengupdate data dan menghapus data pada tabel buku. Perhatikanlah class Buku berikut ini.

Class_Buku.php

<?php

require_once 'db_connection.php';

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Buku
 *
 * @author Jhon Doe
 */
class Buku {

    //put your code here
    private $conn;

    public function __construct() {
        $database = new Connection();
        $db = $database->db_Connection();
        $this->conn = $db;
    }

    public function _create_Buku($kode_buku, $judul_buku, $pengarang_buku, $penerbit_buku) {
        try {
            $stmt = $this->conn->prepare("INSERT INTO buku(kode_buku, judul_buku, pengarang_buku, penerbit_buku)"
                    . "VALUES(?, ?, ?,?)");
            $stmt->bindparam(1, $kode_buku, PDO::PARAM_STR);
            $stmt->bindparam(2, $judul_buku, PDO::PARAM_STR);
            $stmt->bindparam(3, $pengarang_buku, PDO::PARAM_STR);
            $stmt->bindparam(4, $penerbit_buku, PDO::PARAM_STR);

            $this->conn->beginTransaction();
            $stmt->execute();
            $this->conn->commit();
            return true;
        } catch (PDOException $e) {
            echo $e->getMessage();
            return false;
        }
    }

    public function _retrive_Buku() {
        $stmt = $this->conn->prepare("SELECT * FROM buku");
        $this->conn->beginTransaction();
        $stmt->execute();
        $this->conn->commit();
        while ($row = $stmt->fetch(PDO::FETCH_OBJ)) {
            $data[] = $row;
        }
        return $data;
    }

    public function _retrive_Buku_By_kode_buku($kode_buku) {
        $stmt = $this->conn->prepare("SELECT * FROM buku WHERE kode_buku=:id");
        $this->conn->beginTransaction();
        $stmt->execute(array(":id" => $kode_buku));
        $this->conn->commit();
        $row = $stmt->fetch(PDO::FETCH_OBJ);
        return $row;
    }

    public function _update_Buku($kode_buku, $judul_buku, $pengarang_buku, $penerbit_buku) {
        try {
            $stmt = $this->conn->prepare("UPDATE buku SET  judul_buku=:1, pengarang_buku=:2,  penerbit_buku=:3 WHERE kode_buku=:4");
            $stmt->bindParam(":1", $judul_buku, PDO::PARAM_STR);
            $stmt->bindParam(":2", $pengarang_buku, PDO::PARAM_STR);
            $stmt->bindParam(":3", $penerbit_buku, PDO::PARAM_STR);
            $stmt->bindParam(":4", $kode_buku, PDO::PARAM_STR);

            $this->conn->beginTransaction();
            $stmt->execute();
            $this->conn->commit();
            return true;
        } catch (PDOException $e) {
            echo $e->getMessage();
            return false;
        }
    }

    public function _delete_Buku($kode_buku) {
        $stmt = $this->conn->prepare("DELETE FROM buku WHERE kode_buku=:id");
        $stmt->bindparam(":id", $kode_buku);
        $this->conn->beginTransaction();
        $stmt->execute();
        $this->conn->commit();
        return true;
    }

}

Selanjutnya kita akan membuat sebuah file index.php yang akan berfungsi sebagai halaman untuk menampilkan data buku yang ada pada database. Tambahkan file baru dengan nama index.php kemudian anda isi dengan baris kode berikut ini.

Index.php

<?php
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
error_reporting(0);
require_once 'Class_Buku.php';
$buku = new Buku();
$data = $buku->_retrive_Buku();
?>
<button type="submit" onclick="window.location.href = 'form_create_buku.php'"  class="btn btn-md btn-primary float-right"><span class="fa fa-save"></span> Create</button>

<table border ="1">
    <thead>
        <tr>    
            <th>#</th>
            <th>Kode Buku</th>
            <th>Judul</th>
            <th>Pengarang</th>
            <th>Penerbit</th>
            <th>#</th>
        </tr>
    </thead>
    <tbody>
        <?php
        $no = 1;
        if (!empty($data)) {
            foreach ($data as $row) {
                ?>
                <tr>
                    <td><?php echo $no ++; ?></td>
                    <td><?php echo $row->kode_buku; ?></td>
                    <td><?php echo $row->judul_buku; ?></td>
                    <td><?php echo $row->pengarang_buku; ?></td>
                    <td><?php echo $row->penerbit_buku; ?></td>
                    <td>
                        <button type="button" class="btn btn-md btn-primary" onclick="window.location.href = 'form_edit_buku.php?action=update&id=<?php echo $row->kode_buku; ?>'">Edit</button>&nbsp;|&nbsp;
                        <button type="button" class="btn btn-md btn-primary" onclick="window.location.href = 'form_delete_buku.php?action=delete&id=<?php echo $row->kode_buku; ?>'">Delete</button>

                    </td>
                </tr>
                <?php
            }
        }
        ?>
    </tbody>
</table>

Setelah membuat file index.php selanjutnya kita akan membuat sebuah halaman untuk form tambah data buku, yang akan berfungsi untuk menambah data buku. Buatlah file baru dengan nama form_create_buku.php menggunakan text editor yang anda miliki kemudian isi dengan baris kode berikut ini.

form_create_buku.php
 
<!--
/* 
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
-->
<?php
require_once 'Class_Buku.php';
$buku = new Buku();
if (isset($_POST['form-submitted'])) {
    $kode_buku = $_POST['kode_buku'];
    $judul_buku = $_POST['judul_buku'];
    $pengarang_buku = $_POST['pengarang_buku'];
    $penerbit_buku = $_POST['penerbit_buku'];
    $buku->_create_Buku($kode_buku, $judul_buku, $pengarang_buku, $penerbit_buku);
    ?>
    <script>
        alert('Data berhasil disimpan ...');
        window.location.href = 'index.php';
    </script>
    <?php
}
?>

<button type="submit" onclick="window.location.href = 'index.php'"  class="btn btn-md btn-primary float-right"><span class="fa fa-save"></span> Go Back</button>
<form method="POST" action="">
    <div class="form-group row">
        <label  class="col-sm-3 col-form-label">Kode Buku</label>
        <div class="col-sm-9">
            <input type="text" name="kode_buku" class="form-control" required>
        </div>
    </div>
    <div class="form-group row">
        <label  class="col-sm-3 col-form-label">Judul Buku</label>
        <div class="col-sm-9">
            <input type="text" name="judul_buku" class="form-control" required>
        </div>
    </div>
    <div class="form-group row">
        <label  class="col-sm-3 col-form-label">Pengarang Buku</label>
        <div class="col-sm-9">
            <input type="text" name="pengarang_buku" class="form-control" required>
        </div>
    </div>
    <div class="form-group row">
        <label  class="col-sm-3 col-form-label">Penerbit Buku</label>
        <div class="col-sm-9">
            <input type="text" name="penerbit_buku" class="form-control" required>
        </div>
    </div>
    <div class="form-group row">
        <label  class="col-sm-3 col-form-label"></label>
        <div class="col-sm-9">
            <button type="submit" class="btn btn-md btn-primary"><span class="fa fa-save"></span> Create</button>
        </div>
    </div>
    <input type="hidden" name="form-submitted" value="1" />
</form>

Selanjutnya kita akan membuat lagi sebuah halaman yang berisi form lagi, namun fungsinya untuk melakukan editing data buku. Silahkan anda tambahkan kembali sebuah file baru dengan nama form_edit_buku.php dan tambahkan baris kode berikut ini. form_edit_buku.php
<!--
/* 
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
-->
<?php
if (@$_GET['action'] == 'update') {
    require_once 'Class_Buku.php';
    $buku = new Buku();

    if (isset($_GET['id'])) {
        $kode_buku = $_GET['id'];
        $row = $buku->_retrive_Buku_By_kode_buku($kode_buku);
    }
    if (isset($_POST['form-submitted'])) {
        $kode_buku = $_POST['kode_buku'];
        $judul_buku = $_POST['judul_buku'];
        $pengarang_buku = $_POST['pengarang_buku'];
        $penerbit_buku = $_POST['penerbit_buku'];
        $buku->_update_Buku($kode_buku, $judul_buku, $pengarang_buku, $penerbit_buku);
        ?>   
        <script>
            alert('Data berhasil diperbarui ...');
            window.location.href = 'index.php';
        </script>
        <?php
    }
    ?>
    <button type="submit" onclick="window.location.href = 'index.php'"  class="btn btn-md btn-primary float-right"><span class="fa fa-save"></span> Go Back</button>
    <form method="POST" action="">
        <div class="form-group row">
            <label  class="col-sm-3 col-form-label">Kode Buku</label>
            <div class="col-sm-9">
                <input type="text" name="kode_buku"  value="<?php echo $row->kode_buku; ?>" required readonly>
            </div>
        </div>
        <div class="form-group row">
            <label  class="col-sm-3 col-form-label">Judul Buku</label>
            <div class="col-sm-9">
                <input type="text" name="judul_buku" value="<?php echo $row->judul_buku; ?>" required>
            </div>
        </div>
        <div class="form-group row">
            <label  class="col-sm-3 col-form-label">Pengarang Buku</label>
            <div class="col-sm-9">
                <input type="text" name="pengarang_buku" value="<?php echo $row->pengarang_buku; ?>" required>
            </div>
        </div>
        <div class="form-group row">
            <label  class="col-sm-3 col-form-label">Penerbit Buku</label>
            <div class="col-sm-9">
                <input type="text" name="penerbit_buku" value="<?php echo $row->penerbit_buku; ?>" required>
            </div>
        </div>
        <div class="form-group row">
            <label  class="col-sm-3 col-form-label"></label>
            <div class="col-sm-9">
                <button type="submit" class="btn btn-md btn-primary"><span class="fa fa-save"></span> Update</button>
            </div>
        </div>
        <input type="hidden" name="form-submitted" value="1" />
    </form>
    <?php
}
?>

Selanjutnya kita akan membuat sebuah halaman baru namun halaman ini hanya berfungsi untuk menghapus data saja tanpa menampilkan sebuah data. Tambahkan kembali sebuah file baru dengan nama form_delete_buku.php kemudian anda isi dengan baris perintah berikut ini.

form_delete_buku.php
 
<!--
/* 
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
-->
<?php
if (@$_GET['action'] == 'delete') {
    require_once 'Class_Buku.php';
    $buku = new Buku();

    if (isset($_GET['id'])) {
        $kode_buku = $_GET['id'];
        $row = $buku->_delete_Buku($kode_buku);
        ?>
        <script>
            alert('Data berhasil dihapus ...');
            window.location.href = 'index.php';
        </script>
        <?php
    }
}
?>

Sampai langkah ini semua sudah selesai dilakukan dan kita sudah memiliki sebuah program sederhana yang dapat digunakan untuk melakukan proses create, retrieve, update dan delete data pada sebuah database dengan tabel buku. Jika ada pertanyaan silahkan tinggalkan pada kolom komentar terima kasih.

0 Response to "Simple CRUD menggunakan OOP, PDO dan Mysql"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel