Wednesday, November 2, 2016

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


Assalamulaikum Wr.Wb 


Pengertian PDO (PHP Data Objects)

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.

Secara teknis, apabila menggunakan mysql atau mysqli extension, PHP langsung berhubungan dengan MySQL Server, tetapi jika menggunakan PDO, ia tidak berhubungan langsung dengan database, tetapi hanya sebagai “interface”.

PHP PDO –> Database Driver –> Database Server

PDO bekerja dengan metode yang disebut “data-access abstraction layer”. Artinya, apapun jenis database server yang digunakan, kode PHP yang ditulis akan tetap sama. PDO menyediakan “abstraction layer” untuk berkomunikasi dengan database server.

Jenis Dabase Server yang didukung PDO

CUBRID

MS SQL SERVER

FIREBIRD

IBM

INFORMIX

MYSQL

  

Cara Mengaktifkan PDO Extension


Walaupun PDO Extension telah aktif secara “default” pada PHP versi 5.1 keatas, tetapi tidak semua database driver bisa digunakan. Dengan kata lain, untuk alasan performa, PHP me-nonaktifkan beberapa driver database seperti Oracle atau PostgreSQL di dalam PDO.

Untuk melihat driver database apa saja yang telah aktif dan bisa langsung digunakan, bisa menggunakan fungsi (lebih tepatnya: static method) PDO::getAvailableDrivers():

<?php
   print_r(PDO::getAvailableDrivers());
?>

Ketika saya menjalankan perintah tersebut pada PHP 5.6 bawaan XAMPP , berikut hasil yang didapat.


Array ( [0] => mysql [1] => sqlite )

Darri tampilan diatas, dapat dilihat bahwa drive PDO bawaan PHP yang aktif (dan yang bisa digunakan)hanyalah MySQL dan SQLite


Dari Devinsi PDO 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 crud_php. Langka selanjutnya membuat file baru yang bernama index.php. Kemudian copy-paste coding 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');
}
}

?>

  • Selanjutnya membuat file baru yang bernama edit.php. Kemudian copy-paste coding di bawah 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');
}
}
?>

  • Selanjutnya membuat file baru yang bernama list.php. kemudian copy-paste coding di bawah 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');
}
?>

  • Selanjutnya membuat file baru yang bernama library.php. Kemudian copy-paste coding di bawah 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);
}
}
?>

Setelah coding sudah di copy-paste semua di notpate++ , langkah selanjutnya ke file index.php lalu kita run. dan ini hasilnya :

menu utama


menu ketika mau memasukan data mahaiswa 



menu ketika kita mau mengedit data yang sudah masuk, apabila ada kesalahan menulis data


 menu data mahasiswa setelah di hapus , data akan otomatis di hapus



Demikian tutorial cara membuat CRUD PDO di PHP. Semoga bermanfaat para blogger

Wassalamualaikum Wr.Wb


0 comments:

Post a Comment