Membuat CRUD (Create, Read, Update, Delete) menggunakan PDO di PHP


Assalamualaikum Wr. Wb.

PDO (PHP Data Objects) adalah interface universal yang disediakan PHP untuk “berkomunikasi” dengan database server. Maksud istilah “interface universal” disini adalah bahwa PDO tidak terikat dengan aplikasi database tertentu. Apabila saat ini kita menggunakan database MySQL dan dikemudian hari ingin bermigrasi menggunakan PostgreSQL, kita hanya tinggal mengganti cara pemanggilan awal PDO dan seluruh kode program yang ada bisa langsung digunakan untuk database baru.

Kondisi ini berbeda jika menggunakan mysql extension atau mysqli extension. Kedua extension ini hanya bisa bekerja dengan database MySQL. Karena alasan inilah banyak sebaiknya kita mulai beralih menggunakan PDO dibandingkan mysqli.

Dari pengertian diatas sekarang saya akan memberikan langkah-langkah untuk membuat CRUD menggunakan PDO di PHP. Berikut adalah langkah-langkah untuk membuat CRUD PDO di PHP :

  • Buatlah database dengan nama crud_oop pada XAMPP Control Panel, ketik pada url link localhost/phpmyadmin kemudian buat database baru dengan nama crud_oop. Kemudian Import source code dibawah ini:
-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Oct 18, 2016 at 08:38 AM
-- Server version: 10.1.10-MariaDB
-- PHP Version: 5.6.19
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `crud_oop`
--
-- --------------------------------------------------------
--
-- Table structure for table `mahasiswa`
--
DROP TABLE IF EXISTS `mahasiswa`;
CREATE TABLE `mahasiswa` (
  `id` int(11) NOT NULL,
  `nim` varchar(20) NOT NULL,
  `nama` varchar(30) NOT NULL,
  `tempat_lahir` varchar(30) NOT NULL,
  `tanggal_lahir` date NOT NULL,
  `jenis_kelamin` enum('Laki-laki','Perempuan') NOT NULL,
  `agama` varchar(20) NOT NULL,
  `alamat` varchar(100) NOT NULL,
  `no_telepon` varchar(12) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `mahasiswa`
--
INSERT INTO `mahasiswa` (`id`, `nim`, `nama`, `tempat_lahir`, `tanggal_lahir`, `jenis_kelamin`, `agama`, `alamat`, `no_telepon`) VALUES
(1, '16001', 'Danang Kusuma', 'Bandar Lampung', '1990-02-01', 'Laki-laki', 'Islam', 'Jalan Gatot Subroto No. 10, Bandar Lampung', '085758857775'),
(2, '16002', 'Isyana Sarasvati', 'Jakarta', '1993-05-02', 'Perempuan', 'Islam', 'Jalan Pagar Alam No. 15, Kedaton, Bandar Lampung', '085789892909'),
(3, '16003', 'Indra Styawantoro', 'Purbolinggo', '1991-05-15', 'Laki-laki', 'Islam', 'Perum Griya Gedung Meneng Blok C2 No. 2, Rajabasa, Bandar Lampung', '085669919769'),
(4, '16004', 'Maudy Ayunda', 'Jakarta', '1994-12-19', 'Perempuan', 'Islam', 'Jalan Radin Intan No. 77, Tanjung Karang, Bandar Lampung', '089977955772'),
(5, '16005', 'Valentino Rossi', 'Metro', '1979-03-16', 'Laki-laki', 'Islam', 'Jalan Zaenal Abidin Pagaralam No. 1, Bandar Lampung', '081922919212'),
(6, '16006', 'Raisa Andriana', 'Jakarta', '1990-06-06', 'Perempuan', 'Islam', 'Jalan Yos Sudarso No. 135, Bandar Lampung', '081388955767'),
(7, '16007', 'Cristiano Ronaldo', 'Teluk Betung', '1986-02-25', 'Laki-laki', 'Islam', 'Jalan Teuku Umar No. 52, Kedaton Bandar Lampung', '081269962201'),
(8, '16008', 'M Muzaqi', '', '0000-00-00', '', '', '', ''),
(9, '099023022', 'Nia Ramadhani', 'Jakarta', '1996-02-01', 'Perempuan', 'Islam', 'Cengkareng Barat', '12345678'),
(10, '109209381', 'Frienly Faisal', '', '0000-00-00', 'Laki-laki', '', '', '');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `mahasiswa`
--
ALTER TABLE `mahasiswa`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `mahasiswa`
--
ALTER TABLE `mahasiswa`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

  • Setelah selesai membuat ddatabase, buat folder dengan nama pdo.
  • Buat file pada text editor, contoh text editor yang saya pakai adalah sublime text. beri nama index.php kemudian bisa ketik atau paste source code dibawah ini:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CRUD PDO</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
<h2>Tambah Mahasiswa Baru</h2>
<form action="index.php" method="POST" class="form-group row">
NIM : <input type="text" name="nim" required="required" class="form-control" ><br/>
Nama : <input type="text" name="nama" required="required" class="form-control"><br/>
Tempat Lahir : <input type="text" name="tempat_lahir" class="form-control"><br/>
Tanggal Lahir : <input type="text" name="tanggal_lahir" class="form-control"><br/>
Jenis Kelamin : <input type="text" name="jenis_kelamin" class="form-control"><br/>
Agama : <input type="text" name="agama" class="form-control"><br/>
No. Telepon : <input type="text" name="no_telepon" class="form-control"><br/>
Alamat : <textarea name="alamat" class="form-control"></textarea><br/>
<input type="submit" name="tambahMhs" value="Tambah" class="btn btn-success">
<input type="reset" value="Batal" class="btn btn-warning">
</form>
</div>
</body>
</html>
<?php
require('library.php');
if(isset($_POST['tambahMhs'])){
$nim = $_POST['nim'];
$nama = $_POST['nama'];
$tempat_lahir=$_POST['tempat_lahir'];
$tanggal_lahir=$_POST['tanggal_lahir'];
$jenis_kelamin=$_POST['jenis_kelamin'];
$agama=$_POST['agama'];
$alamat=$_POST['alamat'];
$no_telepon=$_POST['no_telepon'];
$Lib = new Library();
$add = $Lib->tambahMhs($nim, $nama, $tempat_lahir, $tanggal_lahir, $jenis_kelamin, $agama, $alamat, $no_telepon);
if($add == "Success"){
header('Location: List.php');
}
}

?>
  • Buat file baru dengan nama edit.php. Kemudian ketik atau paste source code dibawah ini : 
<?php
require('library.php');

if(isset($_GET['id'])){
$Lib = new Library();
$id = $Lib->editMhs($_GET['id']);
$edit = $id->fetch(PDO::FETCH_OBJ);
echo '
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Edit Data Mahasiswa</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
<h2>Ubah Data Mahasiswa</h2>
<form action="edit.php" method="POST" class="form-group">
NIM : <input type="text" name="nim" value="'.$edit->nim.'" required="required" class="form-control"><br>
Nama : <input type="text" name="nama" value="'.$edit->nama.'" class="form-control"><br>
Tempat Lahir : <input type="text" value="'.$edit->tempat_lahir.'" name="tempat_lahir" class="form-control"><br/>
Tanggal Lahir : <input type="text" value="'.$edit->tanggal_lahir.'" name="tanggal_lahir" class="form-control"><br/>
Jenis Kelamin : <input type="text" value="'.$edit->jenis_kelamin.'" name="jenis_kelamin" class="form-control"><br/>
Agama : <input type="text" name="agama" value="'.$edit->agama.'" class="form-control"><br/>
No. Telepon : <input type="text" value="'.$edit->no_telepon.'" name="no_telepon" class="form-control"><br/>
Alamat : <textarea name="alamat" class="form-control">'.$edit->alamat.'</textarea><br/>


<input type="submit" name="updateMhs" value="Update" class="btn btn-info">
<input type="reset" value="Batal" class="btn btn-warning">
</form>
</div>
</body>
</html>
';
}

if(isset($_POST['updateMhs'])){
$nim = $_POST['nim'];
$nama = $_POST['nama'];
$tempat_lahir=$_POST['tempat_lahir'];
$tanggal_lahir=$_POST['tanggal_lahir'];
$jenis_kelamin=$_POST['jenis_kelamin'];
$agama=$_POST['agama'];
$alamat=$_POST['alamat'];
$no_telepon=$_POST['no_telepon'];

$Lib = new Library();
$upd = $Lib->updateMhs($nim, $nama, $tempat_lahir, $tanggal_lahir, $jenis_kelamin, $agama, $alamat, $no_telepon);
if($upd == "Success"){
header('Location: list.php');
}
}

?>
  • Buat file baru dengan nama library.php. Kemudian ketik atau paste source code dibawah ini :
<?php
class Library{
public function __construct(){
$this->db = new PDO('mysql:host=localhost;dbname=crud_oop','root','');
}
public function tambahMhs($nim, $nama, $tempat_lahir, $tanggal_lahir, $jenis_kelamin, $agama, $alamat, $no_telepon){
$sql = "INSERT INTO mahasiswa (nim, nama, tempat_lahir, tanggal_lahir, jenis_kelamin, agama, alamat, no_telepon) VALUES('$nim', '$nama', '$tempat_lahir', '$tanggal_lahir', '$jenis_kelamin', '$agama', '$alamat', '$no_telepon')";
$query = $this->db->query($sql);
if(!$query){
return "Failed";
}
else{
return "Success";
}
}
public function editMhs($id){
$sql = "SELECT * FROM mahasiswa where id='$id'";
$query = $this->db->query($sql);
return $query;
}
public function updateMhs($nim, $nama, $tempat_lahir, $tanggal_lahir, $jenis_kelamin, $agama, $alamat, $no_telepon){
$sql = "UPDATE mahasiswa SET nim='$nim', nama='$nama', tempat_lahir='$tempat_lahir', tanggal_lahir='$tanggal_lahir', jenis_kelamin='$jenis_kelamin', agama='$agama', alamat='$alamat', no_telepon='$no_telepon' WHERE nim='$nim'";
$query = $this->db->query($sql);
if(!$query){
return "Failed";
}
else{
return "Success";
}
}

public function showmahasiswa(){
$sql = "SELECT * FROM mahasiswa order by id desc";
$query = $this->db->query($sql);
return $query;
}
public function deleteMhs($nim){
$sql = "DELETE FROM mahasiswa WHERE nim='$nim'";
$query = $this->db->query($sql);
}
}
?>
  • Dan yang terakhir adalah buat file baru dengan nama list.php. Kemudian ketik atau paste source code dibawah ini : 
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>List Mahasiswa</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</head>

<body>
<div class="container">
<h2>Daftar Nama Mahasiswa</h2>
<table class="table">
<tr>
<td>NIM</td>
<td>Nama</td>
<td>Jenis Kelamin</td>
<td>Alamat</td>
<td>Edit</td>
<td>Delete</td>
</tr>
<?php
require("library.php");
$Lib = new Library();
$show = $Lib->showmahasiswa();
while($data = $show->fetch(PDO::FETCH_OBJ)){
echo "
<tr>
<td>$data->nim</td>
<td>$data->nama</td>
<td>$data->jenis_kelamin</td>
<td>$data->alamat</td>
<td><a class='btn btn-info' href='edit.php?id=$data->id'>Edit</td>
<td><a class='btn btn-danger' href='list.php?delete=$data->nim'>Delete</a></td>
</tr>";
};
?>
</table>
<a href="index.php" class="btn btn-success">Tambah Mahasiswa Baru</a>
</div>
</body>
</html>

<?php
if(isset($_GET['delete'])){
$del = $Lib->deleteMhs($_GET['delete']);
header('Location: list.php');
}
?>
Setelah mengetik/mempaste semua source code diatas. Kemudian panggil file index.php di web browser contohnya web browser chrome. ketikkan localhost/pdo/index.php maka akan muncul tampilan seperti ini :


Kemudian kita inputkan data mahasiswa baru, lalu klik button “Tambah”


Setelah menambahkan data, selanjutnya akan menuju tampilan list.php. Untuk mengedit data mahasiswa, klik button “Edit” seperti yang dibawah ini:


Setelah muncul tampilan diatas, silahkan ubah data misalkan pada alamat yang akan dirubah, kemudian klik Button “Update”.


Setelah itu akan muncul tampilan seperti dibawah :


Kemudian klik button “Delete” untuk menghapus data yang akan dihapus.


Jika hapus berhasil maka data yang kita hapus akan hilang.


Demikian cara membuat CRUD PDO di PHP. Jika ingin mendownload script secara lengkap silahkan download file ZIP disini.

Wassalamualaikum Wr. Wb.



Previous
Next Post »

3 comments

Click here for comments
wiranto
admin
Thursday, May 21, 2020 at 11:36:00 PM GMT+7 ×

Terima kasih Kak Website ini sangat bermanfaat untuk saya dengan penjelasannya. Saya merasa senang dapat ilmu tentang Membuat script untuk CRUD (Create read update delete) dari PHP ke My SQL. Materi yang disampaikan oleh kakak sangat mudah dimengerti. trus webnya bagus,sangat jelas, sangat lengkap dengan penjelasannya serta gambar kodingnya & mudah di pahami terus berkreasi kak .
Salam kenal kak nama saya Wiranto(Si2K), kunjungi juga dong website kampus kami https://www.atmaluhur.ac.id

Reply
avatar
thisisasf
admin
Wednesday, June 10, 2020 at 7:24:00 PM GMT+7 ×

Artikel yang sangat bermanfaat untuk mahasiswa seperti saya. Saya merasa penjelasannya sangat teperinci dan mudah untuk dipahami. Perkenalkan nama saya muhammad Asfarezhan nim 1922500056 kelompok si2j, dari kampus ISB Atmaluhur kota pangkalpinang. https://www.atmaluhur.ac.id

Reply
avatar
Thanks for your comment