Tutorial kali ini kita akan belajar cara membuat Creat, Read, Update dan Delete (CRUD) di PHP dengan menggunakan koneksi PDO. Ekstensi PHP Data Objects (PDO) mendefinisikan antarmuka yang ringan dan konsisten untuk mengakses database di PHP.
Kita akan membuat CRUD dengan data buku yang di dalamnya terdapat judul, penulis, tahun penerbit, halman. Data-data tersebut nantinya di masukan ke dalam database.
Membuat Database dan Tabel di MYSQL
Langkah pertama mari kita membuat database terlebih dahulu, silahkan buka http://localhost/phpmyadmin/, kemudian klik create database. setelah itu silahkan jalankan query dibawah ini untuk membuat tabel nya.
CREATE TABLE IF NOT EXISTS `buku` ( `id` int(11) NOT NULL AUTO_INCREMENT, `judul` varchar(255) NOT NULL, `penulis` varchar(255) NOT NULL, `tahun_penerbit` date NOT NULL, `halaman` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
Membuat Koneksi Database
Silahkan kalian buat file koneksi dengan nama connect.php, setelah itu silahkan kalian copy kode dibawah ini.
<?php $db_username = 'root'; $db_password = ''; $pdo_conn = new PDO( 'mysql:host=localhost;dbname=php-crud-pdo', $db_username, $db_password ); ?>
Silahkan kalian sesuaikan nama database, disini nama database yang saya buat yaitu php-crud-pdo.
Fungsi dari kode tersebut yaitu untuk terhubung dengan database yang sudah kita buat tadi. pastikan juga nama database harus sama dengan yang dibuat di MYSQL.
Membuat Halaman Create
langkah selanjutnya mari kita buat file create.php, kemudian kalian kalian copy kode dibawah ini.
<?php if(!empty($_POST["add_record"])) { require_once("connect.php"); $sql = "INSERT INTO book ( judul, penulis, tahun_penerbit, halaman ) VALUES ( :judul, :penulis, :tahun_penerbit, :halaman )"; $pdo_statement = $pdo_conn->prepare( $sql ); $result = $pdo_statement->execute( array( ':judul'=>$_POST['judul'], ':penulis'=>$_POST['penulis'], ':tahun_penerbit'=>$_POST['tahun_penerbit'], ':halaman'=>$_POST['halaman'] ) ); if (!empty($result) ){ header('location:index.php'); } } ?>
dari kode tersebut akan memeriksa apakah array add_record (data buku) tidak kosong, jika tida maka data-data yang telah di isi berhasil di kirim. kemudian data-data tersebut akan dimasukan ke dalam tabel buku.
kemudian di baris baru silahkan tambahkan kode berikut sebagai tampilan dari form buku.
<html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <title>PHP PDO CRUD</title> </head> <body> <div class="container mt-4"> <h1>Tambah Data</h1> <form name="frmAdd" action="" method="POST"> <div class="form-group"> <label for="judul">Judul</label> <input type="text" class="form-control" id="judul" name="judul"> </div> <div class="form-group"> <label for="penulis">Penulis</label> <input type="text" class="form-control" id="penulis" name="penulis"> </div> <div class="form-group"> <label for="tahun_penerbit">Tahun Penerbit</label> <input type="date" class="form-control" id="tahun_penerbit" name="tahun_penerbit"> </div> <div class="form-group"> <label for="halaman">Halaman</label> <input type="number" class="form-control" id="halaman" name="halaman"> </div> <input name="add_record" type="submit" value="Tambah" class="btn btn-primary"> <a href="index.php"><button type="button" class="btn btn-secondary">Kembali</button></a> </form> </div> </body> </html>
Membuat Halaman Index
Mari kita buat halaman index. silahkan kalian buat file index.php. setelah itu silahkan kalian copy kode berikut ini.
<?php require_once("connect.php"); ?> <!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <title>PHP PDO CRUD</title> </head> <body> <div class="container mt-4"> <div class="btn-group mb-2" role="group" aria-label="Basic example"> <a href="create.php"><button type="button" class="btn btn-success">+ Tambah Data</button></a> </div> <?php $pdo_statement = $pdo_conn->prepare("SELECT * FROM book"); $pdo_statement->execute(); $result = $pdo_statement->fetchAll(); ?> <table class="table"> <thead class="thead-dark"> <tr> <th scope="col" class="table-header" width="40%">Judul</th> <th scope="col" class="table-header" width="20%">Penulis</th> <th scope="col" class="table-header" width="20%">Tahun Penerbit</th> <th scope="col" class="table-header" width="20%">Halaman</th> <th scope="col" class="table-header" width="5%">Actions</th> </tr> </thead> <tbody id="table-body"> <?php if(!empty($result)) { foreach($result as $row) { ?> <tr class="table-row"> <td><?php echo $row["judul"]; ?></td> <td><?php echo $row["penulis"]; ?></td> <td><?php echo $row["tahun_penerbit"]; ?></td> <td><?php echo $row["halaman"]; ?></td> <td><a class="ajax-action-links" href='edit.php?id=<?php echo $row['id']; ?>'><span class="material-icons">edit</span></a> <a class="ajax-action-links" href='delete.php?id=<?php echo $row['id']; ?>'><span class="material-icons" style="color:red">delete</span></a></td> </tr> <?php } } ?> </tbody> </table> </table> </div> <!-- Optional JavaScript; choose one of the two! --> <!-- Option 1: jQuery and Bootstrap Bundle (includes Popper) --> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script> <!-- Option 2: jQuery, Popper.js, and Bootstrap JS <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script> --> </body> </html>
Membuat Halaman Update
Langkah selanjutnya kita akan membuat halaman edit, silahkan buat file edit.php. setelah itu kalian copy kode di bawah ini.
<?php require_once("connect.php"); if(!empty($_POST["save_record"])) { $pdo_statement=$pdo_conn->prepare("update book set judul='" . $_POST[ 'judul' ] . "', penulis='" . $_POST[ 'penulis' ]. "', tahun_penerbit='" . $_POST[ 'tahun_penerbit' ]. "', halaman='" . $_POST[ 'halaman' ]. "' where id=" . $_GET["id"]); $result = $pdo_statement->execute(); if($result) { header('location:index.php'); } } $pdo_statement = $pdo_conn->prepare("SELECT * FROM book where id=" . $_GET["id"]); $pdo_statement->execute(); $result = $pdo_statement->fetch(); ?>
dari kode tersebut akan memeriksa apakah array save_record (data buku) tidak kosong, jika tida maka data-data yang telah di isi berhasil di kirim. kemudian data-data tersebut akan dimasukan ke dalam tabel buku.
kemudian pada pdo_statement terdapat query untuk menampilkan data sesuai id yang telah dikirim melalui method GET dan kemudian di tampung di variabel result.
Selanjutnya kita buat form edit. Kemudian di baris baru silahkan tambahkan kode berikut sebagai tampilan dari form edit.
<html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <title>PHP PDO CRUD</title> </head> <body> <div class="container mt-4"> <h1>Edit Data</h1> <form name="frmAdd" action="" method="POST"> <div class="form-group"> <label for="judul">Judul</label> <input type="text" class="form-control" id="judul" name="judul" value="<?php echo $result['judul'];?>"> </div> <div class="form-group"> <label for="penulis">Penulis</label> <input type="text" class="form-control" id="penulis" name="penulis" value="<?php echo $result['penulis'];?>"> </div> <div class="form-group"> <label for="tahun_penerbit">Tahun Penerbit</label> <input type="date" class="form-control" id="tahun_penerbit" name="tahun_penerbit" value="<?php echo $result['tahun_penerbit'];?>"> </div> <div class="form-group"> <label for="halaman">Halaman</label> <input type="number" class="form-control" id="halaman" name="halaman" value="<?php echo $result['halaman'];?>"> </div> <input name="save_record" type="submit" value="Simpan" class="btn btn-primary"> <a href="index.php"><button type="button" class="btn btn-secondary">Kembali</button></a> </form> </div> </body> </html>
Membuat Delete Data
langkah terakhir yaitu kita akan membuat delete data. silahkan kalian buat file delete.php. kemudian silahkan kalian copy kode dibawah ini.
<?php require_once("connect.php"); $pdo_statement=$pdo_conn->prepare("delete from book where id=" . $_GET['id']); $pdo_statement->execute(); header('location:index.php'); ?>
Dari kode diatas nantinya akan menghapus data dari id yang di terima method GET.
Sekian tutorial Cara Membuat CRUD PHP dengan PDO MYSQL. Jika ada kesulitan kalian bisa komentar dibawah ini