Cara Membuat Aplikasi CRUD Sederhana Menggunakan PDO dan Bootstrap - Salam sejahtera semuanya, pada postingan kali ini yaitu membuat aplikasi CRUD dengan PDO dan Bootstrap. Apa itu CRUD.? CRUD adalah kepanjangan dari Create Read Update and Delete. Apa itu PDO.? PDO merupakan singkat dari PHP Data Objects. PDO adalah suatu cara atau teknik untuk mengakses sebuah Database. Dengan PDO, programmer dapat lebih mudah dalam mengembangkan aplikasi. PDO ini bisa dikatakan seperti lapisan dalam akses data yang menggunakan API (Application Programming Interface) terpadu. Dan Boostrap adalah sebuah framework yang telah terintegrasi dengan HTML, CSS dan Javascript. Framework yang dikatakan paling populer dalam penggunaannya dalam pembuatan Front-End yang Responsive pada situs web anda. Dengan Bootstrap ini tampilan website anda dapat diakses menggunakan berbagai device mobile seperti smartphone, table, laptop dan lain-lain.
Saya rasa penjelasan singkat diatas dapat menambah wawasan anda. Oke, langsung saja. Dalam pembuatan aplikasi ini beberapa teknik dan tahap yang saya gunakan. Saya membuat 2 konsep yaitu PDO tanpa OOP dan PDO menggunakan OOP. Bedanya apa.? Nah, untuk penjelasan mengenai OOP, anda boleh searching di mBah Google :D.
Satu lagi, saya menggunakan teknik MVC (Model, View and Controller) anda juga boleh search ya. Singkatnya dengan menggunakan teknik MVC dapat lebih terstruktur, tapi ini saya buat pada konsep PDO yang menggunakan OOP.
Next gan, dalam tutorial ini saya menggunakan 1 database. Jadi, buat terlebih dahulu databasenya, berikut gambar dari struktur database yang saya buat.
Dapat anda perhatikan, Nama Database : crud, Nama Tabel : tamu dan beberapa field lainnya (disesuaikan saja dengan gambar).
CRUD PDO Basic
Seperti yang saya katakan tadi, kita memiliki 2 konsep. Dan konsep ini tanpa menggunakan OOP (Object-Oriented Programming). Berikut gambar struktur dari Foldernya. Terlebih dahulu Download Bootstrapnya di getbootstrap.com.
Tanpa panjang lebar lagi, dibawah beberapa scriptnya dari struktur diatas. Untuk penjelasan dari setiap script, anda bisa melihatnya di php.net (recomended).
File : welcome.php
<?php include_once 'header.php'; ?>
<div class="container">
<div class="alert alert-info">
<strong>SELAMAT DATANG DI APLIKASI CRUD DENGAN PDO + BOOTSTRAP</strong><br>
<p><small>Create By : <a href="www.bahasaprogram.com">Bahasa Program</a></small></p>
<p><small>Author : Ramses Putra</small></p>
</div>
</div>
<?php include_once 'footer.php'; ?>
File : select.php
<?php include_once 'header.php'; ?>
<?php include_once 'config/config.php'; ?>
<?php
$sql = "SELECT * FROM tamu";
$stmt = $connect->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll();
?>
<div class="container">
<table class="table table-striped">
<tr>
<th>No</th>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
<th>Action</th>
</tr>
<?php
$no = 1;
foreach($result as $key => $value ) :
?>
<tr>
<td><?php echo $no; ?></td>
<td><?php echo $value['firstname']; ?></td>
<td><?php echo $value['lastname'] ?></td>
<td><?php echo $value['email'] ?></td>
<td>
<a href="edit.php?edit-data=<?php echo $value['id']; ?>" class="btn btn-primary"><span class="glyphicon glyphicon-pencil"></span> Edit</a> |
<a href="delete.php?delete-data=<?php echo $value['id']; ?>" class="btn btn-danger" onclick="confirm('Apakah anda yakin.?');"><span class="glyphicon glyphicon-trash"></span> Delete</a>
</td>
</tr>
<?php $no++; endforeach; ?>
</table>
</div>
<?php include_once 'footer.php'; ?>
File : insert.php
<?php include_once 'header.php'; ?>
<?php include_once 'config/config.php'; ?>
<?php
if(isset($_POST['insert-data'])) {
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$sql = "INSERT INTO tamu(firstname, lastname, email) VALUES (:firstname, :lastname, :email)";
$stmt = $connect->prepare($sql);
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);
if($stmt->execute()) {
echo '
<div class="container">
<div class="alert alert-info">
<strong>Berhasil Memasukkan Data</strong>
</div>
</div>
';
} else {
echo '
<div class="container">
<div class="alert alert-warning">
<strong>Gagal Memasukkan Data</strong>
</div>
</div>
';
}
}
?>
<div class="container">
<div class="col-sm-5">
<form method="post" action="">
<div>
<label>Firsname</label>
<input class="form-control" name="firstname" placeholder="Enter Firstname">
</div>
<div>
<label>Lastname</label>
<input class="form-control" name="lastname" placeholder="Enter Lastname">
</div>
<div>
<label>Email</label>
<input class="form-control" name="email" placeholder="Enter Email">
</div>
<div>
<p> </p>
<button class="btn btn-primary" type="submit" name="insert-data"><span class="glyphicon glyphicon-plus"></span> Insert Data</button>
<button class="btn btn-danger" type="reset">Reset</button>
</div>
</form>
</div>
</div>
<?php include_once 'footer.php'; ?>
File : header.php
<!DOCTYPE html>
<html>
<head>
<title>Belajar CRUD dengan PDO dan Bootstrap</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="navbar navbar-default navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header">
<a href="?welcome" class="navbar-brand" >Home</a>
<a href="insert.php" class="navbar-brand">Insert</a>
<a href="select.php" class="navbar-brand">Lihat</a>
<a href="http://bahasaprogram.com" class="navbar-brand">Tutorial</a>
</div>
</div>
</div>
File : footer.php
<script src="bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
</body>
</html>
File : edit.php
<?php include_once 'header.php'; ?>
<?php include_once 'config/config.php'; ?>
<?php
if(isset($_GET['edit-data'])) {
$id = (int) $_GET['edit-data'];
$sql = "SELECT * FROM tamu WHERE id = :id";
$stmt = $connect->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$result = $stmt->fetch();
}
if(isset($_POST['update-data'])) {
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$id = (int) $_GET['edit-data'];
$sql = "UPDATE tamu SET firstname = :firstname, lastname = :lastname, email = :email
WHERE id = :id";
$stmt = $connect->prepare($sql);
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':id', $id);
if($stmt->execute()) {
echo '
<div class="container">
<div class="alert alert-info">
<strong>Berhasil Update Data</strong>
</div>
</div>
';
} else {
echo '
<div class="container">
<div class="alert alert-warning">
<strong>Gagal Update Data</strong>
</div>
</div>
';
}
}
?>
<div class="container">
<div class="col-sm-5">
<form method="post" action="">
<div>
<label>Firsname</label>
<input class="form-control" name="firstname" placeholder="Enter Firstname" value="<?php echo $result['firstname'] ?>">
</div>
<div>
<label>Lastname</label>
<input class="form-control" name="lastname" placeholder="Enter Lastname" value="<?php echo $result['lastname'] ?>">
</div>
<div>
<label>Email</label>
<input class="form-control" name="email" placeholder="Enter Email" value="<?php echo $result['email'] ?>">
</div>
<div>
<p> </p>
<button class="btn btn-success" type="submit" name="update-data"><span class="glyphicon glyphicon-plus"></span> Update Data</button>
<button class="btn btn-danger" type="reset">Reset</button>
</div>
</form>
</div>
</div>
<?php include_once 'footer.php'; ?>
File : delete.php
<?php include_once 'header.php'; ?>
<?php include_once 'config/config.php'; ?>
<?php
if(isset($_GET['delete-data'])) {
$id = (int) $_GET['delete-data'];
$sql = "DELETE FROM tamu WHERE id = :id";
$stmt = $connect->prepare($sql);
$stmt->bindParam(':id', $id);
if($stmt->execute()) {
echo '
<div class="container">
<div class="alert alert-info">
<strong>Berhasil Hapus Data</strong>
</div>
</div>
';
} else {
echo '
<div class="container">
<div class="alert alert-warning">
<strong>Gagal Hapus Data</strong>
</div>
</div>
';
}
}
?>
<?php include_once 'footer.php'; ?>
File : config.php
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$database = 'crud';
try {
$connect = new PDO("mysql:host={$host};dbname={$database}", $user, $pass);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
Gimana gan.?? Panjang ya. Nah dari script diatas, akan menghasilkan aplikasi seperti demo dibawah ini gan.
Sangat sederhana bukan.?? Oke, saya akan lanjutkan ke konsep yang menggunakan OOP.
CRUD PDO Basic With OOP
Pada bagian ini hampir sama dengan konsep diatas, cuma mungkin agak ribet terlalu banyak liku-likunnya. Nah, agar dapat memahami proses dibawah nanti, saya sarankan belajar OOP dulu ya. Oke, disini saya akan memberikan scriptnya saja, databasenya dan lain-lainnya sama juga dengan diatas. Berikut struktur foldernya :
<?php
$host = "localhost";
$user = "root";
$pass = "";
$database = "crud";
try {
$connect = new PDO("mysql:host={$host};dbname={$database}", $user, $pass);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo $e->getMessage();
}
include_once "controller/class.php";
$process = new crud($connect);
?>
File : class.php
<?php
class crud
{
private $db;
function __construct($connect)
{
$this->db = $connect;
}
public function createData($firsname, $lastname, $email)
{
try {
$sql = "INSERT INTO tamu (firstname, lastname, email) VALUES (:firsname, :lastname, :email)";
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':firsname', $firsname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);
return $stmt->execute();
}
catch(PDOException $e) {
echo $e->getMessage();
return false;
}
}
public function selectData()
{
try {
$sql = "SELECT * FROM tamu";
$stmt = $this->db->prepare($sql);
$stmt->execute();
return $stmt->fetchAll();
}
catch(PDOException $e) {
echo $e->getMessage();
return false;
}
}
public function getData($id)
{
try {
$sql = "SELECT * FROM tamu WHERE id = :id";
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
return $stmt->fetch();
}
catch(PDOException $e) {
echo $e->getMessage();
return false;
}
}
public function updateData($firstname, $lastname, $email, $id)
{
try {
$sql = "UPDATE tamu SET firstname = :firstname, lastname = :lastname, email = :email
WHERE id = :id";
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':id', $id);
return $stmt->execute();
}
catch(PDOException $e) {
echo $e->getMessage();
return false;
}
}
public function deleteData($id)
{
try {
$sql = "DELETE FROM tamu WHERE id = :id";
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':id', $id);
return $stmt->execute();
}
catch(PDOException $e) {
echo $e->getMessage();
return false;
}
}
}
File : delete.php
<?php
if(isset($_GET['delete-data'])) {
$id = (int)$_GET['delete-data'];
if($process->deleteData($id)) {
echo '
<div class="container">
<div class="alert alert-info">
<strong>Berhasil Menghapus Data</strong>
</div>
</div>
';
} else {
echo '
<div class="container">
<div class="alert alert-warning">
<strong>Gagal Menghapus Data</strong>
</div>
</div>
';
}
}
?>
File : insert.php
<?php
if(isset($_POST['insert-data'])) {
$firsname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
if($process->createData($firsname, $lastname, $email)) {
echo '
<div class="container">
<div class="alert alert-info">
<strong>Berhasil Memasukkan Data</strong>
</div>
</div>
';
} else {
echo '
<div class="container">
<div class="alert alert-warning">
<strong>Gagal Memasukkan Data</strong>
</div>
</div>
';
}
}
?>
File : select.php
<?php
if(isset($_GET['edit-data'])) {
$id = (int) $_GET['edit-data'];
$result = $process->getData($id);
if(isset($_POST['update-data'])) {
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
if($process->updateData($firstname, $lastname, $email, $id)) {
echo '
<div class="container">
<div class="alert alert-info">
<strong>Berhasil Mengubah Data</strong>
</div>
</div>
';
} else {
echo '
<div class="container">
<div class="alert alert-warning">
<strong>Gagal Mengubah Data</strong>
</div>
</div>
';
}
}
}
?>
File : content.php
<?php
if(isset($_GET['data'])) {
if($_GET['data'] == 'insert-data') {
include 'config/config.php';
include 'controller/insert.php';
include 'view/form-create.php';
}elseif ($_GET['data'] == 'lihat-data') {
include 'config/config.php';
include 'model/data-tamu.php';
}
}elseif(isset($_GET['edit-data'])) {
include 'config/config.php';
include 'controller/select.php';
include 'view/form-edit.php';
}elseif(isset($_GET['delete-data'])) {
include 'config/config.php';
include 'controller/delete.php';
}elseif(isset($_GET['welcome'])) {
include 'welcome.php';
}
?>
File : footer.php
<script src="bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
</body>
</html>
File : header.php
<!DOCTYPE html>
<html>
<head>
<title>Belajar CRUD dengan PDO dan Bootstrap</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="navbar navbar-default navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header">
<a href="?welcome" class="navbar-brand" >Home</a>
<a href="?data=insert-data" class="navbar-brand">Insert</a>
<a href="?data=lihat-data" class="navbar-brand">Lihat</a>
<a href="http://bahasaprogram.com" class="navbar-brand">Tutorial</a>
</div>
</div>
</div>
File : data-tamu.php
<div class="container">
<table class="table table-striped">
<tr>
<th>No</th>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
<th>Action</th>
</tr>
<?php
$no = 1;
foreach($process->selectData() as $key => $value ) :
?>
<tr>
<td><?php echo $no; ?></td>
<td><?php echo $value['firstname']; ?></td>
<td><?php echo $value['lastname'] ?></td>
<td><?php echo $value['email'] ?></td>
<td>
<a href="?edit-data=<?php echo $value['id']; ?>" class="btn btn-primary"><span class="glyphicon glyphicon-pencil"></span> Edit</a> |
<a href="?delete-data=<?php echo $value['id']; ?>" class="btn btn-danger" onclick="confirm('Apakah anda yakin.?');"><span class="glyphicon glyphicon-trash"></span> Delete</a>
</td>
</tr>
<?php $no++; endforeach; ?>
</table>
</div>
File : form-create.php
<div class="container">
<div class="col-sm-5">
<form method="post" action="">
<div>
<label>Firsname</label>
<input class="form-control" name="firstname" placeholder="Enter Firstname">
</div>
<div>
<label>Lastname</label>
<input class="form-control" name="lastname" placeholder="Enter Lastname">
</div>
<div>
<label>Email</label>
<input class="form-control" name="email" placeholder="Enter Email">
</div>
<div>
<p> </p>
<button class="btn btn-primary" type="submit" name="insert-data"><span class="glyphicon glyphicon-plus"></span> Insert Data</button>
<button class="btn btn-danger" type="reset">Reset</button>
</div>
</form>
</div>
</div>
File : form-edit.php
<div class="container">
<div class="col-sm-5">
<form method="post" action="">
<div>
<label>Firsname</label>
<input class="form-control" name="firstname" placeholder="Enter Firstname" value="<?php echo $result['firstname'] ?>">
</div>
<div>
<label>Lastname</label>
<input class="form-control" name="lastname" placeholder="Enter Lastname" value="<?php echo $result['lastname'] ?>">
</div>
<div>
<label>Email</label>
<input class="form-control" name="email" placeholder="Enter Email" value="<?php echo $result['email'] ?>">
</div>
<div>
<p> </p>
<button class="btn btn-success" type="submit" name="update-data"><span class="glyphicon glyphicon-plus"></span> Update Data</button>
<button class="btn btn-danger" type="reset">Reset</button>
</div>
</form>
</div>
</div>
File : index.php
<?php include_once 'layout/header.php'; ?>
<?php include_once 'layout/content.php'; ?>
<?php include_once 'layout/footer.php'; ?>
File : welcome.php
<div class="container">
<div class="alert alert-info">
<strong>SELAMAT DATANG DI APLIKASI CRUD DENGAN PDO + BOOTSTRAP</strong><br>
<p><small>Create By : <a href="www.bahasaprogram.com">Bahasa Program</a></small></p>
<p><small>Author : Ramses Putra</small></p>
</div>
</div>
Wew, selesai juga gan. Oke, dari script diatas kalau di jalankan maka hasilnya sama dengan demo dengan konsep sebelumnya. Yang menjadi perbedaannya ialah konsepnya.
Dari kedua konsep ini ada memiliki kelebihan dan kekurangan, jadi terserah anda untuk memilih yang mana. Tapi menurut pendapat saya, anda sebaiknya memilih yang menggunakan konsep OOP, tapi lainnya juga bisa kok dipelajari. Oke, sampai disini tutorial Cara Membuat Aplikasi CRUD Sederhana Menggunakan PDO dan Bootstrap yang saya berikan, semoga dapat bermanfaat. Maaf jika ada kata atau penjelasan yang kurang. Sekian dan terima kasih. Oh ya, bagi anda yang ingin mau script kita tadi, boleh sertakan emailnya di kolom komentarnya, nanti saya kirimkan.
Update Contact :
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email : Fajarudinsidik@gmail.com
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email: Fajarudinsidik@gmail.com
atau Kirimkan Private messanger melalui email dengan klik tombol order dibawah ini :