Tutorial CRUD di PHP menggunakan PDO

Assalamualaikum Wr. Wb.

Hai Kawan J

Saya akan berbagi mengenai apa itu PDO dan CRUD. Apa sih itu PDO ??  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.

Di blog kali ini saya juga akan membahas tentang bagaimana cara Create, Read, Update, dan Delete atau biasa disebut CRUD. Sebenarnya apa sih CRUD itu?? Anda sudah tahu kepanjangan dari istilah CRUD tersebut, namun untuk penjelasanya ada 4 karakter yaitu :
  • C (Create): yang berarti membuat sebuah data baru, contoh kita sedang melakukan registrasi disebuah web itu sudah merupakan Create dari CRUD karena kita membuat dan menyimpan data registrasi ke database.
  • R (Read): Membaca atau menampilkan suatu data yang tadinya berada didatabase MySQL misalnya, kemudian ditampilkan di WEB menggunakan bahasa pemrograman Php
  • U (Update): nah untuk yang satu ini prosesnya adalah mengedit sebuah data dari database yang kemudian di edit menggunakan bahasa pemrograman Php berupa WEB. Contoh edit profil facebook.
  • D (Delete): Pastinya Anda tahu fungsinya apa bukan? Fungsinya hampir sama dengan Update akan tetapi proses ini adalah untuk melakukan penghapusan data di database melalui bahasa Php. Contoh pada sebuah blog terkadang ada komentar, kemudian kita hapus komentar tersebut, nah itu sudah termasuk proses delete dalam CRUD.

Setelah kita mengetahui apa itu crud, sekarang kita masuk ke inti dari pembahasan kita yang satu ini, yaitu cara CRUD menggunakan PDO.

Berikut cara CRUD menggunakan PDO :
1. Pertama buatlah database terlebih dahulu dengan nama crud_oop di phpmyadmin.
2. Setelah membuat database, buatlah tabel. 

Silahkan masukan script dibawah ini :

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;

3. Jika tabel sudah dibuat, selanjutnya buatlah field-field dari tabel tersebut. 

Silahkan masukkan script dibawah ini :

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 */;

<strong>
</strong>

4. Setelah selesai membuat database dan tabelnya, buat folder dengan nama pdo.

5. Buat file pada text editor, contoh text editor yang saya pakai adalah sublime text. yang 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" >

 Nama : <input type="text" name="nama" required="required" class="form-control">

 Tempat Lahir : <input type="text" name="tempat_lahir" class="form-control">

 Tanggal Lahir : <input type="text" name="tanggal_lahir" class="form-control">

 Jenis Kelamin : <input type="text" name="jenis_kelamin" class="form-control">

 Agama : <input type="text" name="agama" class="form-control">

 No. Telepon : <input type="text" name="no_telepon" class="form-control">

 Alamat : <textarea name="alamat" class="form-control"></textarea>

 <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');
 }
 }
  
?>

6. 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">

Nama : <input type="text" name="nama" value="'.$edit->nama.'" class="form-control">

Tempat Lahir : <input type="text" value="'.$edit->nama.'" name="tempat_lahir" class="form-control">

Tanggal Lahir : <input type="text" value="'.$edit->tanggal_lahir.'" name="tanggal_lahir" class="form-control">

Jenis Kelamin : <input type="text" value="'.$edit->jenis_kelamin.'" name="jenis_kelamin" class="form-control">

Agama : <input type="text" name="agama" value="'.$edit->agama.'" class="form-control">

No. Telepon : <input type="text" value="'.$edit->no_telepon.'" name="no_telepon" class="form-control">

Alamat : <textarea name="alamat" class="form-control">'.$edit->alamat.'</textarea>



<input type="submit" name="updates" 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($id, $nim, $nama, $tempat_lahir, $tanggal_lahir, $jenis_kelamin, $agama, $alamat, $no_telepon);
if($upd == "Success"){
header('Location: list.php');
}
}

?>

7. 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";
$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);
}
}
?>

8. 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?nim=$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']);

}
?>

9. 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 :


10. 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 klik button “Edit”, namun tampilannya kosong seperti yang dibawah ini :


Mengapa tampilan kosong? karena ada kesalahan pada source code yang sudah dicopynya tadi. Untuk mengatasi masalah seperti  ini, saya akan memberikan cara mengatasinya. Langsung saja kita lihat file List.php baris 35

<td><a class='btn btn-info' href='edit.php?nim=$data->id'>Edit</td>

diubah menjadi seperti dibawah ini:

<td><a class='btn btn-info' href='edit.php?id=$data->id'>Edit</td>

Kemudian kita lihat juga file Edit.php baris 24

Tempat Lahir : <input type="text" value="'.$edit->nama.'" name="tempat_lahir"

diubah menjadi :

Tempat Lahir : <input type="text" value="'.$edit->tempat_lahir.'

Setelah file Edit.php baris 24 tadi sudah dirubah, maka akan muncul tampilan seperti dibawah ini :


Setelah muncul tampilan diatas, silahkan ubah data misalkan pada nama yang akan dirubah, kemudian klik Button “Update”. Namun ada kesalahan lagi apabila di klik button “update” masih belum mau mengupdate datanya. Cara mengatasinya adalah kembali buka file Edit.php baris 32 dirubah yang tadinya :

<input type="submit" name="updates" value="Update" class="btn btn-info">

dirubah menjadi :

<input type="submit" name="updateMhs" value="Update" class="btn btn-info">

Kemudian pada baris 52 samakan parameter di file edit.php dengan library.php supaya tidak error. Berikut source code baris 52 pada file edit.php :

$upd = $Lib->updateMhs($id, $nim, $nama, $tempat_lahir, $tanggal_lahir, $jenis_kelamin, $agama, $alamat, $no_telepon);

dirubah supaya sama dengan parameter pada file library.php menjadi:

$upd = $Lib->updateMhs($nim, $nama, $tempat_lahir, $tanggal_lahir, $jenis_kelamin, $agama, $alamat, $no_telepon);

Setelah menyamakan parameter di file edit.php baris 52 coba refresh web browsernya. Maka akan muncul tampilan seperti dibawah :


Kemudian klik button “Delete” untuk menghapus data yang akan dihapus. Tetapi datanya tidak bisa dihapus, cara mengatasinya adalah buka file list.php pada setelah baris 48 tambahkan source code berikut :

header('Location: list.php');

fungsi source code teakhir itu adalah supaya bisa menghapus data. Selanjutnya kita mencoba refresh kembali web browsernya kini sudah tidak ada lagi kesalahan pada list mahasiswa.


Demikian tutorial CRUD di PHP menggunakan PDO serta cara mengatasi masalah-masalah apabila ada error seperti penjelasan yang sudah saya sampaikan diatas.

Semoga bermanfaat bagi kalian yah J