Cara Membuat CRUD Menggunakan Query Prepare



Berikut ini adalah halaman yang akan merujuk pada pembuatan aplikasi sederhana untuk menampilkan data serta melakukan manipulasi berupa operasi simpan,ubah dan hapus data menggunkan PDO dan Query Prepare,

Pembuatan aplikasi menggunakan query prepared statements membutuhkan tiga langkah diantaranya  Prepared, Bind, dan Execute. Pada proses pertama: prepared, kita mempersiapkan query yang akan dijalankan, tetapi tanpa diisi oleh data secara langsung. Bagian dimana data berada (values) dijadikan sebuah parameter digantikan dengan tanda tanya (?),

database yang akan digunakan sama pada artikel sebelum nya, jika belum ada maka silahkan dibuat terlebih dahulu. source code akan terdiri dari beberapa file yang tergabung dalam sebuah project.

File yang akan digunakan :

  1. tampil.php,  digunakan untuk menampilkan data yang berasal dari tabel buku kedalam sebuah tabel yang akan muncul di halaman web. pada halaman ini juga akan ditambahkan dua buah link untuk melakukan ubah data dan hapus data
  2. form_simpan.php, digunakan sebagai halaman untuk melakukan input data.
  3. simpan.php, digunakan untuk memproses data untuk melakukan penyimpanan data kedalam tabel buku yang berasal dari form_simpan.php.
  4. form_ubah.php, digunakan sebagai halaman untuk melakukan ubah data. 
  5. edit.php, digunakan untuk memproses ubah data yang berasal dari form_ubah.php.
  6. hapus.php, digunakan untuk memproses hapus data berdasarkan premary key pada tabel buku.

Menampilkan Data (tampil.php)

Pada pembahasan kali ini kita akan menampilkan data yang sebelumnya sudah tersimpan di database perpustakaan, data yang akan ditampilkan adalah tabel buku jika belum ada silahkan buat dulu database yang sudah kita bahas pada artikel sebelumnya.

Untuk menampilkan data diperlukan perintah SQL menggunakan perintah SELECT. data yang ditampilkan akan ditampilkan dalam halaman web menggunakan komponen HTML tabel. Dibawah ini adalah source code lengkap untuk menampilkan data disertai dengan dua buah link untuk melakukan update dan hapus data :

<?php
try {
    $koneksi = new PDO('mysql:host=localhost;dbname=perpustakaan', "root", "");
    //  echo "koneksi berhasil";
} catch (PDOExcetion $mesaage) {
    echo "koneksi gagal" . $message->getMessage();
}
 
$sql = "select * from buku";
$query = $koneksi->query($sql);
?>
<h2>Data Buku</h2>
<table border="1" width="60%" cellpadding="2">
    <tr>
        <th>Kode</th>
        <th>Judul</th>
        <th>Pengarang</th>
        <th>ISBN</th>
        <th colspan="2">Aksi</th>
    </tr>
    <?php
    while ($baris = $query->fetch(PDO::FETCH_NUM)) {
        echo "<tr>";
        echo "<td>" . $baris[0] . "</td>";
        echo "<td>" . $baris[1] . "</td>";
        echo "<td>" . $baris[2] . "</td>";
        echo "<td>" . $baris[3] . "</td>";
        echo "<td><a href=form_edit.php?kode_buku=$baris[0]>Edit</a></td>";
        echo "<td><a href=hapus.php?kode_buku=$baris[0]>Hapus</a></td>";
        echo "</tr>";
    }
    ?>
</table>
Sekilas mengenai komponen HTML yang digunakan yaitu perintah <tabel></tablet> digunakan untuk membuat tabel  dan <tr> (table row) adalah perintah untuk membuat baris sedangkan <td> (table data) digunakan untuk membuat kolom. 

Data diatas tampil menggunakan metode PDO::FETCH_NUM, selain metode tersebut tentu saja kita juga dapat menggunakan metode yang lain seperti PDO::FETCH_ASSOC,PDO::FETCH_BOTH,PDO::FETCH_OBJEK ataupun PDO::FETCH_LAZY. silahkan anda mencoba dengan metode-metode tersebut agar lebih paham dalam penggunaan nya, jika sudah lupa silahkan buka lagi artikel berikut ini.

Ketika ditekan tombol edit akan masuk ke halaman form edit data seperti pada artikel berikut, dan ketika ditekan hapus data akan menghapus record yang dipilih.
Berikut adalah tampilan dari source code diatas :

Menyimpan Data

Untuk melakukan simpan data kita perlu membuat sebuah halaman untuk melakukan input data, pembuatan halaman input akan menggunakan perintah html form,tabel,input text,input submit.
buatlah sebuah nama file pada project anda dengan nama form_simpan.php kemudian masukan source code berikut :

<?php
try {
    $koneksi = new PDO('mysql:host=localhost;dbname=perpustakaan', "root", "");
    echo "koneksi berhasil";
} catch (PDOExcetion $mesaage) {
    echo "koneksi gagal" . $message->getMessage();
}

$sql = "insert into buku (kode_buku,judul,pengarang,isbn) values (:kode_buku,:judul,:pengarang,:isbn)";
$query=$koneksi->prepare($sql);
$query->bindParam(':kode_buku', $_POST['kode_buku']);
$query->bindParam(':judul', $_POST['judul']);
$query->bindParam(':pengarang', $_POST['pengarang']);
$query->bindParam(':isbn', $_POST['isbn']);
$query->execute();
header("location:tampil.php");
?>

Sekarang coba program anda untuk melakukan pengetesan dan isikan datanya sesuai dengan kolom-kolom yang sudan disediakan. jika berhasil data akan tersimpan ke database dan halaman akan diarahkan kepada halaman tampil.php.

Mengubah Data 

untuk mengubah data kita akan membuat sebuah file untuk mengambil data yang akan diubah dan menampilkan nya dalam sebuah halaman, tambahkan sebuah file dengan nama form_edit.php berikut adalah source code form_edit.php :


<?php
try {

    $koneksi = new PDO('mysql:host=localhost;dbname=perpustakaan', "root", "");
} catch (PDOExcetion $mesaage) {
    echo "koneksi gagal" . $message->getMessage();
}

$sql = "select * from buku";
$query = $koneksi->query($sql);
if (!isset($_GET['kode_buku'])) {
    die("Error: kode buku tidak ditemukan");
}
$query = $koneksi->prepare("SELECT * FROM buku WHERE kode_buku = :kode_buku");
$query->bindParam(":kode_buku", $_GET['kode_buku']);
$query->execute();
if ($query->rowCount() == 0) {
    die("Error: Buku tidak ditemukan.");
} else {
    $data = $query->fetch();
}
?>

<!DOCTYPE html>
<html>
    <head>
        <title>CRUD PDO</title>
        <meta charset="utf-8">
    </head>
    <body>
        <h2>EDIT DATA</h2>
        <form method="post" action="edit.php">
            <table width="546" border="0">
                <tr>
                    <td >Kode Buku</td>
                    <td >:</td>
                    <td >
                        <input type="text" name="kode_buku" value="<?php echo $data['kode_buku'] ?>" readonly="readonly"> 
                    </td>
                </tr>
                <tr>
                    <td>Judul</td>
                    <td >:</td>
                    <td >
                        <input type="text" name="judul" value="<?php echo $data['judul'] ?>">
                    </td>
                </tr>
                <tr>
                    <td>Pengarang</td>
                    <td>:</td>
                    <td>
                        <input name="pengarang" type="text" size="50" value="<?php echo $data['pengarang'] ?>">
                    </td>
                </tr>
                <tr>
                    <td>ISBN</td>
                    <td>:</td>
                    <td>
                        <input name="isbn" type="text" size="50" value="<?php echo $data['isbn'] ?>">
                    </td>
                </tr>
                <tr>
                    <td height="42"> </td>
                    <td></td>
                    <td>
                        <input type="submit" name="submit" value="EDIT">
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>

Dan menambahkan sebuah file dengan nama edit.php sebagai berikut :


<?php

try {
    $koneksi = new PDO('mysql:host=localhost;dbname=perpustakaan', "root", "");
} catch (PDOExcetion $mesaage) {
    echo "koneksi gagal" . $message->getMessage();
}
if (!isset($_POST['kode_buku'])) {
    die("Error: kode buku tidak ditemukan");
}
if (isset($_POST['submit'])) {
    $sql_ubah = "UPDATE buku SET judul=:judul,pengarang=:pengarang,isbn=:isbn WHERE kode_buku=:kode_buku";
    $query = $koneksi->prepare($sql_ubah);
    $query->bindParam(":judul", $_POST['judul']);
    $query->bindParam(":pengarang", $_POST['pengarang']);
    $query->bindParam(":isbn", $_POST['isbn']);
    $query->bindParam(":kode_buku", $_POST['kode_buku']);
    $query->execute();
    header("location: tampil.php");
}
?>

Ketika ditekan tombol Edit maka hasilnya :

Jika berhasil data akan berubah dan halaman akan diarahkan ke file tampil.php.

Menghapus Data 

untuk menghapus data kita membutuhkan sebuah file untuk melakukan proses hapus, tambahkan sebuah file hapus.php dan masukan source code sebagai berikut :


<?php

try {
    $koneksi = new PDO('mysql:host=localhost;dbname=perpustakaan', "root", "");
    if (isset($_GET["kode_buku"])) {
        $kode_buku=$_GET["kode_buku"];
        $sql = "delete from buku where kode_buku=:kode_buku";
        $query = $koneksi->prepare($sql);
        $query->bindParam(":kode_buku",$kode_buku);
        $query->execute();
        header("location:tampil.php");
    }else
    {
        echo 'gagal hapus';
    }
} catch (PDOExcetion $mesaage) {
    echo "koneksi gagal" . $message->getMessage();
}