Apa Itu PDO?
PDO adalah singkatan dari PHP Data Object. PDO adalah extension di PHP yang digunakan untuk mengakses database. PDO menyediakan data-access
abstraction layer yang memungkinkan kita menggunakan fungsi yang sama
untuk berbagai jenis database. Jadi, anda tidak perlu kawatir tentang
database yang anda pakai entah itu MySQL, MSSQL, Postgresql, atau Oracle
fungsi yang anda pakai untuk mengambil atau memanipulasi database tetap
sama.
Oke, setelah anda mengenal PDO sekarang kita bisa memulai untuk membuat aplikasi CRUD kita.
Step 1: Membuat Database
Langkah pertama yang perlu anda lakukan adalah membuat database yang akan digunakan, anda bisa membuatnya menggunakan
phpMyAdmin
. Database yang akan kita gunakan akan diberi nama crud_oopStep 2: Membuat Table
Setelah membuat database, kita harus membuat table dengan nama
tbBiodata
dengan struktur seperti gambar berikut:Anda bisa membuat table dengan struktur tersebut dengan menjalankan peritah SQL berikut:
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` enum('Islam','Kristen','Katholik','Hindu','Budha','Konghuchu') NOT NULL,
`alamat` varchar(100) NOT NULL,
`no_telepon` varchar(12) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Setelah anda mebuat table anda bisa mengisi data di table tersebut sesuai keinginan atau dengan menjalankan perintah SQL berikut:
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', '', '', '');
(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', '', '', '');
Saatnya coding!
buatlah foldel di C:\xampp\htdocs\kita beri nama
'pdo_oop'
Source Code yang pertama 1 Sekarang
kita buat file untuk koneksi ke database mysql misal kita beri nama "library.php" berikut source codenya :
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);
if(!$query){
return "Failed";
}
else{
return "Success";
} }
}
?>
Sourcode yang ke 2 : kita beri nama "index.php" berikut source codenya :
<!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']);
if($del == "Success"){
header('Location: List.php'); }
?>
lalu kita coba buka, kolo saya menggunakan mozilla firefox ketikan
http://localhost/pdo_oop
jika berhasil maka akan tampil seerti gambar berikut.
source Code yang ke 3 kita buat code untuk mnampilkan data dari my sql, saya buat dengan nama "list.php" berikut source kodenya.
<!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']);
}
?>
jika kita panggil maka akan tampil sbb
Source Code yang ke 4, inilah source code yang terahir, yaitu untuk mengedit
isi dari my sql
yang saya beri nama "edit.php" berikut source codenya.
<?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-BVYiiSIFeK1dGmJRAkycuHAHRg32OmU
cww7on3RYdg4Va+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 row">
NIM : <input type="text" name="nim" value="'.$edit->nim.'" required class=
"form-control"><br>
Nama : <input type="text" name="nama" value="'.$edit->nama.'" required
class="form-control"><br>
Tempat Lahir : <input type="text" name="tempat_lahir" value="'.
$edit->tempat_lahir.'" required class="form-control"><br/>
Tanggal Lahir : <input type="text" name="tanggal_lahir" value="'.
$edit->tanggal_lahir.'" required class="form-control"><br/>
Jenis Kelamin : <input type="text" name="jenis_kelamin" value="'.
$edit->jenis_kelamin.'" required class="form-control"><br/>
Agama : <input type="text" name="agama" value="'.$edit->agama.'
" required class="form-control"><br/>
No. Telepon : <input type="text" name="no_telepon" value="'.
$edit->no_telepon.'" required 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');
}
}
?>
beginilah tutorial yang saya dalam pembahasan kali ini
Semoga bermanfaat ya.... :D