CRUD PHP OOP Style


Pada kesempatan kali ini saya akan memberikan sebuah contoh crud php dengan gaya oop (Object Oriented Programming). Konsep penulisan kode akan mengikuti tutorial sebelumnya tentang crud php procedural style, hanya saja gaya penulisan kodenya berbeda, karena ini menggunakan gaya oop. Saya asumsikan bahwa Andad sudah mengerti konsep dasar CRUD (Create, Read, Update dan Delete) sehingga Saya tidak akan terlalu banyak menjelaskan tentang fungsi atau penulisan kode, beberapa kode penting akan diberi tanda komen /* dan dijelaskan apa fungsinya

Konsep Penulisan Kode
Sepeti biasa beberapa fungsi untuk melakukan query akan diringkan ke dalam sebuah fungsi, seluruh operasi crud akan disimpan di dalam sebuah file fungsi dan query akan dijalankan dengan konsep prepared statement yang juga telah disederhankan di dalam sebuah fungsi. Semua penulisan kode query tentunya juga menggunakan konsep oop php.

Database
Buat sebuah database baru, misal dengan nama oop_mahasiswa. Lalu buat tabel dengan struktur seperti berikut ini


-- phpMyAdmin SQL Dump
-- version 4.5.0.2
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: 02 Okt 2019 pada 22.32
-- Versi Server: 10.0.17-MariaDB
-- PHP Version: 5.6.14

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: `oop_mahasiswa`
--

-- --------------------------------------------------------

--
-- Struktur dari tabel `tabel_mahasiswa`
--

CREATE TABLE `tabel_mahasiswa` (
  `id` int(11) NOT NULL,
  `nim` varchar(12) NOT NULL,
  `nama_mahasiswa` varchar(30) NOT NULL,
  `jk` enum('L','P') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data untuk tabel `tabel_mahasiswa`
--

INSERT INTO `tabel_mahasiswa` (`id`, `nim`, `nama_mahasiswa`, `jk`) VALUES
(5, '123456789', 'Ahmad Zaelani', 'L'),
(6, '987654321', 'Wulandari', 'P');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `tabel_mahasiswa`
--
ALTER TABLE `tabel_mahasiswa`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tabel_mahasiswa`
--
ALTER TABLE `tabel_mahasiswa`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
/*!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 */;


Koneksi
Buat sebuah file untuk melakukan koneksi ke database mysql misal dengan nama koneksi.php

<?php
define('DB_SERVER', 'localhost');
define('DB_USER', 'root');
define('DB_PASS','');
define('DB_NAME','oop_mahasiswa');
$koneksi= new mysqli(DB_SERVER,DB_USER,DB_PASS,DB_NAME);
if($koneksi==false){
 die("Gagal melakukan koneksi ke database :".$koneksi->connect_error());
}

?>


Fungsi
Di bawah ini merupakan function/fungsi yang digunakan untuk melakukan proses crud php oop. Proses menambah, menampilkan, mengedit/mengupdate, dan delete data akan bergantung pada file ini. File ini akan selalu dipanggil ketika proses crud dilakukan. Buat file baru misal dengan nama fungsi.php, dan Anda bisa menyalin contoh kode dibawah ini.

<?php

/*

Code ini dibuat oleh root93.co.id. Anda bisa melihat tutorial
lainnya pada halaman tersebut

*/
//menyederhanakan fungsi query
function query($data){
 global $koneksi;
 $perintah=$koneksi->query($data);
 if(!$perintah) die("Gagal melakukan query.".$koneksi->error());
 return $perintah;
}
//menyederhanakan fungsi prepare
function prepare($data){
 global $koneksi;
 $perintah=$koneksi->prepare($data);
 if(!$perintah) die("Gagal melakukan query".$koneksi->error());
 return $perintah;
}

//menampilkan data
function TampilData(){
 $sql="SELECT * FROM tabel_mahasiswa";
 $perintah=query($sql);
 return $perintah;

}
//menyederhanakan fungsi insert data dengan prepare
function InsertData($nim,$nama_mahasiswa,$jk){
 $sql="INSERT INTO tabel_mahasiswa (nim,nama_mahasiswa,jk) VALUES (?,?,?)";
 if($stmt=prepare($sql)){
  $stmt->bind_param("sss",$param_nim,$param_nama_mahasiswa, $param_jk);
  $param_nim=$nim;
  $param_nama_mahasiswa=$nama_mahasiswa;
  $param_jk=$jk;
  if($stmt->execute()){
   return true;
  }else{
   return false;
  }
 }
 $stmt->stmt_close();
}
//detail data
function DetailData($var_id){
 global $id, $nim, $nama_mahasiswa, $jk;
 $sql="SELECT id, nim, nama_mahasiswa, jk FROM tabel_mahasiswa WHERE id=?";
 if($stmt=prepare($sql)){
  $stmt->bind_param("i",$param_id);
  $param_id=$var_id;
  if($stmt->execute()){
   $stmt->store_result();
   $stmt->bind_result($id, $nim, $nama_mahasiswa, $jk);
   $stmt->fetch();
   if($stmt->num_rows==1){
    return true;
   }else{
    return false;
   }
  }

 }
 $stmt->close();
}
//update data
function UpdateData($nim,$nama_mahasiswa,$jk, $id){
 $sql="UPDATE tabel_mahasiswa SET nim=?, nama_mahasiswa=?, jk=? WHERE id=?";
 if($stmt=prepare($sql)){
  $stmt->bind_param("sssi",$param_nim, $param_nama_mahasiswa, $param_jk, $param_id);
  $param_nim=$nim;
  $param_nama_mahasiswa=$nama_mahasiswa;
  $param_jk=$jk;
  $param_id=$id;
  if($stmt->execute()){
   return true;
  }else{
   return false;
  }
 }
 $stmt->close();
}
//fungsi delete data
function DeleteData($data){
 $sql="DELETE FROM tabel_mahasiswa WHERE id=?";
 if($stmt=prepare($sql)){
  $stmt->bind_param("i",$param_id);
  $param_id=$data;
  if($stmt->execute()){
   return true;
  }else{
   return false;
  }
 }
 $stmt->close();
}
//membuat fungsi untuk cek nim
function CekNim($nim){
 $sql="SELECT nim FROM tabel_mahasiswa WHERE nim=?";
 if($stmt=prepare($sql)){
  $stmt->bind_param("s",$param_nim);
  $param_nim=$nim;
  if($stmt->execute()){
   $stmt->store_result();
   if($stmt->num_rows==1){
    return true;
   }else{
    return false;
   }

  }else{
   die("Gagal mengeksekusi data");
  }
 }
 $stmt->close();

}

?>


Menambah Data
Selanjutnya Anda bisa membuat sebuah antar muka untuk melakukan proses penambahan data (Create). Buat file baru ini dengan nama misal insert.php

<?php
require_once 'koneksi.php';
require_once 'fungsi.php';
//set variabel ketika kosong dan ketika error
$nim=$nama_mahasiswa=$jenis_kelamin="";
$nim_err=$nama_mahasiswa_err=$jenis_kelamin_err="";
if($_SERVER['REQUEST_METHOD']=='POST'){
 if(empty(trim($_POST['nim']))){
  $nim_err="Nim Mahasiswa tidak boleh kosong";
 }else{
  //memanggil fungsi untuk cek nim mahasiswa yang sudah ada di db
  if(CekNim($_POST['nim'])){
   $nim_err="Maaf nim tersebut sudah ada !";
  }else{
   $nim=$_POST['nim'];
   $nim=$koneksi->real_escape_string($nim);

  }
  
 }
 if(empty(trim($_POST['nama_mahasiswa']))){
  $nama_mahasiswa_err="Nama mahasiswa tidak boleh kosong";
 }else{
  $nama_mahasiswa=$_POST['nama_mahasiswa'];
  $nama_mahasiswa=$koneksi->real_escape_string($nama_mahasiswa);
 }
 if(empty(trim($_POST['jenis_kelamin']))){
  $jenis_kelamin_err="Jenis kelamin tidak boleh kosong";
 }else{
  $jenis_kelamin=$_POST['jenis_kelamin'];
  $jenis_kelamin=$koneksi->real_escape_string($jenis_kelamin);
 }
  if(empty($nim_err)&&empty($nama_mahasiswa_err)&& empty($jenis_kelamin_err)){
   if(InsertData($nim,$nama_mahasiswa,$jenis_kelamin)){
    echo "Data berhasil disimpan";
   }else{
    echo"Data gagal disimpan";
   }
  }
  $koneksi->close();
}

?>
<html>
<head>
 <title>OOP PHP - ROOT93.CO.ID</title>
<style type="text/css">
 span{
  color: red;
 }
 #posting{
  max-width: 760px;
  margin:15px auto;
  border: 1px solid #ccc;
 }
 
</style>
</head>
<body>
<div id="posting" align="center">
<h2>Tutorial CRUD PHP OOP STYLE - Page Insert<br> - WWW.ROOT93.CO.ID</h2>

 <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
  <input type="text" name="nim" value="<?php echo $nim; ?>" size="30" placeholder="Masukan nim mahasiswa"><br/>
  <span class="error"><?php echo $nim_err;?></span><br/>
 
  <input type="text" name="nama_mahasiswa" value="<?php echo $nama_mahasiswa; ?>" size="30" placeholder="Masukan nama mahasiswa" ><br/>
  <span class="error"><?php echo $nama_mahasiswa_err;?></span><br/>
 
  <select name="jenis_kelamin">
   <option value="L">Laki laki</option>
   <option value="P">Perempuan</option>
  </select><br>
  <span class="error"><?php echo $jenis_kelamin_err;?></span><br/>
  <input type="submit" value="submit" /><br/>
 </form>
 <a href="index.php">Ke Halaman Depan</a>
</div>


</body>
</html>

Crud oop php - antar muka tambah data (create data page) - root93

Menampilkan Data
Kemudian buat file index.php lalu pada file index ini Anda bisa memanggil fungsi untuk menampilkan data (Read) seperti yang terlihat pada contoh kode di bawah ini

<?php
require_once 'koneksi.php';
require_once 'fungsi.php';
?>
<html>
<head>
 <title>CRUD OOP PHP - BY : ROOT93</title>
<style type="text/css">
 #posting{
  max-width: 760px;
  margin:15px auto;
  border: 1px solid #ccc;
 }
</style>
</head>
<body>
<div id="posting" align="center">
<h2>Tutorial CRUD PHP OOP STYLE <br> - WWW.ROOT93.CO.ID</h2>

<?php
$tampil=TampilData();
//nomor
$no=1;
if($tampil->num_rows>0){
 echo'
 <table width="390px" border="1">
  <thead>
  <th>NO</th>
  <th>NIM</th>
  <th>NAMA</th>
  <th>J/K</th>
  <th>Aksi</th>
  </thead>
  <tbody>
 ';
 while($data=$tampil->fetch_array()){

  echo '
  
  <tr>
  <td>'.$no.'</td>
  <td>'.$data['nim'].'</td>
  <td>'.$data['nama_mahasiswa'].'</td>
  <td>'.$data['jk'].'</td>
  <td>
  <a title="Edit" href="update.php?id='.$data['id'].'">E</a>
  <a title="Delete" href="delete.php?id='.$data['id'].'">D</a>
  </td>
  </tr>
  
  ';
  $no++;

 }

 echo'
 </tbody>
 </table>
 
 ';

}
echo'
 
 <br/>
 <a href="insert.php">Tambah Data</a>
 <br/>
 <br/>
 ';
$tampil->free_result();
$koneksi->close();

?>
</div>

</body>
</html>

antar muka untuk menampilkan data (read page) - root93

Mengedit/Mengupdate Data
Proses selanjutnya yang dibutuhkan dari proses crud ini adalah melakukan proses pengeditan/pembaharuan (Update) data yang telah tersimpan sebelumnya di database. Buat file baru dengan nama update.php

<?php
if(!empty(trim($_GET['id']) || intval($_GET['id']))){
 
 require_once 'koneksi.php';
 require_once 'fungsi.php';
 if(!DetailData($_GET['id'])){
  die('Data tidak ditemukan');
 }

}else{
 die('Data id : error');
}

?>
<?php
//set variabel ketika kosong dan ketika error
$id_err=$nim_err=$nama_mahasiswa_err=$jenis_kelamin_err="";
if($_SERVER['REQUEST_METHOD']=='POST'){
 if(empty($_POST['id'])){
  die("id data tidak ditemukan");
 }else{
  $id=$_POST['id'];
  $id=$koneksi->real_escape_string($id);
 }
 if(empty(trim($_POST['nim']))){
  $nim_err="Nim Mahasiswa tidak boleh kosong";
 }else{
  /*Jika nim yang di update tidak sama, maka cek. Variabel $nim diambil dari fungsi DetailData */
  if(trim($_POST['nim'])!=$nim){
    if(CekNim($_POST['nim'])){
     $nim_err="Nim tersebut sudah digunakan !";
    }else{
     $nim=$_POST['nim'];
     $nim=$koneksi->real_escape_string($nim);
    }
  }else{
   //tetapi jika sama simpan nilainya   
   $nim=$_POST['nim'];
   $nim=$koneksi->real_escape_string($nim);
   
   

  }
  
 }
 if(empty(trim($_POST['nama_mahasiswa']))){
  $nama_mahasiswa_err="Nama mahasiswa tidak boleh kosong";
 }else{
  $nama_mahasiswa=$_POST['nama_mahasiswa'];
  $nama_mahasiswa=$koneksi->real_escape_string($nama_mahasiswa);
 }
 if(empty(trim($_POST['jenis_kelamin']))){
  $jenis_kelamin_err="Jenis kelamin tidak boleh kosong";
 }else{
  $jenis_kelamin=$_POST['jenis_kelamin'];
  $jenis_kelamin=$koneksi->real_escape_string($jenis_kelamin);
 }
  if(empty($nim_err)&&empty($nama_mahasiswa_err)&& empty($jenis_kelamin_err)){
   if(UpdateData($nim,$nama_mahasiswa,$jenis_kelamin,$id)){
    echo "Data berhasil disimpan";
   }else{
    echo"Data gagal disimpan";
   }
  }
  $koneksi->close();
}

?>
<html>
<head>
 <title>OOP PHP - ROOT93.CO.ID</title>
<style type="text/css">
 span{
  color: red;
 }
 #posting{
  max-width: 760px;
  margin:15px auto;
  border: 1px solid #ccc;
 }
 
</style>
</head>
<body>
<div id="posting" align="center">
<h2>Tutorial CRUD PHP OOP STYLE -Page Update<br> - WWW.ROOT93.CO.ID</h2>

 <form action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>" method="post">
  <input type="text" name="nim" value="<?php echo $nim; ?>" size="30" placeholder="Masukan nim mahasiswa">
  <input type="hidden" name="id" value="<?php echo $id; ?>">
  <br/>
  <span class="error"><?php echo $nim_err;?></span><br/>
 
  <input type="text" name="nama_mahasiswa" value="<?php echo $nama_mahasiswa; ?>" size="30" placeholder="Masukan nama mahasiswa" ><br/>
  <span class="error"><?php echo $nama_mahasiswa_err;?></span><br/>
 
  <select name="jenis_kelamin">
   <option value="L">Laki laki</option>
   <option value="P">Perempuan</option>
  </select><br>
  <span class="error"><?php echo $jenis_kelamin_err;?></span><br/>
  <input type="submit" value="submit" /><br/>
 </form>
 <a href="index.php">Ke Halaman Depan</a>
</div>


</body>
</html>
antar muka untuk update data - crud oop php - root93


Delete Data
Terakhir, data – data yang sudah tersimpan bisa dihapus (delete) oleh user. Anda bisa membuat sebuah file baru dengan nama misal delete.php

<?php
require_once 'koneksi.php';
require_once 'fungsi.php';
?>
<?php
/*Delete data tanpa konfirmasi */
if(DeleteData(trim($_GET['id']))){
 header("location: index.php");
}else{
 die("Data gagal dihapus");
}

?>


Sampai disini proses CRUD PHP OOP Style sudah berhasil, selanjutnya Anda bisa langsung menguji proses crud php yang sudah Anda buat di atas.



Related Posts :

1 Response to "CRUD PHP OOP Style "

Silahkan untuk meninggalkan komentar, santai saja dan mulailah berkomentar...