Delete Data di Database Menggunakan Function


ROOT93 - Sebelumnya sudah dijelaskan tentang bagaimana cara menampilkan data menggunakan function, dimana function yang dibuat berisi variabel query. Begitupun pembahasan kali ini, query delete nantinya disimpan didalam function, namuan disini teknik querynya menggunakan prepared statement. Ada beberapa kondisi yang bisa dibuat dalam proses delete data ini, mungkin kita bisa membuatnya menjadi tiga cara atau tiga teknik penulisan.

Baca sebelumnya di root93 : Menampilkan Data di PHP Menggunakan Function

Maksudnya seperti berikut :

  1. Sebelum data di Delete, maka telebih dahulu dilakukan konfirmasi, id data akan didapatkan menggunakan GET, kemudian di POST dan selanjutnya di eksekusi sebagai perintah delete. Namun masalahnya jika seperti ini, ketika user dengan sengaja merubah parameter id di url yang nilai ID nya tidak terdapat di database, maka hasilnya query tetap di eksekusi dan akan menghasilkan nilai benar.

    Contoh : DELETE FROM `datamhs` WHERE `datamhs`.`id` = 3
    Jika misal saya menggunakan query diatas, dan nilai ID 3 tidak terdapat di database/tabel, maka sebenarnya query diatas tidak akan menghasilkan nilai error, melainkan menampilkan pesan 0 baris terpengaruh. (Pencarian dilakukan dalam 0.0000 detik.) maksudnya disana berarti tidak ada error meskipun data yang dimaksud tidak ada. Dan ini memang tidak masalah juga
  2.  Didalam mysqli_stmt_excute() kita bisa mengeksekusi 2 perintah, perintah pertama untuk mendelete data, dan perintah kedua untuk SELECT DATA, dimana jika select data yang dimaksud tidak mengandung data, akan dialihkan ke Halaman Error, didalam eksekusi kedua kita jalankan perintah num_rows if(mysqli_num_rows($result)==1){, jika misal nilainya == 1, kita bisa mengksekusi perintah benar dan yang kedua ada yang salah. Dalam praktiknya query kedua ini bisa digunakan untuk proses unlink gambar jika memang data yang dimaksud ada gambar dan perlu dihapus dari direktori.

    Didalam function query eksekusi kedua nantinya mungkin bisa dibuat seperti ini

    if(mysqli_num_rows($result)==1){
    //nilai benar
    }else{
    //nilai salah
    }

    Atau bisa seperti ini

    if(!mysqli_num_rows($result)==1){
    //nilai salah
    }
  3. Data ditampilkan dulu, dengan melakukan query berdasarkan parameter id yang bersangkutan, jika parameter id yang bersangkutan tidak mengandung unsur data, maka kita bisa mengarahkannya ke halaman error
Dari ketiga cara tersebut, kita akan praktikan cara satu dan keduanya saja. Berikut ini root93 berikan contoh Delete Data di Database Menggunakan Function



FUNCTION CONTOH #1
function delete_data($var_id){
 global $koneksi;
 $sql = "SELECT id FROM datamhs where id =?";
 if($stmt=mysqli_prepare($koneksi, $sql)){
  mysqli_stmt_bind_param($stmt,"i", $param_id);
  $param_id = $var_id;
  
  if(mysqli_stmt_execute($stmt)){
   return true;
  }else{
   return false;
  }
 }
 //tutup statement
 mysqli_stmt_close($stmt);
}

FUNCTION CONTOH #2

Pada function contoh kedua, akan ada dua penulisan atau cara, kalian bisa menggunakannya sesuai kebutuhan

Contoh Pertama
Jika didalam select atau query kedua ada keperluan semisal seperti untuk unlink gambar, maka setelah di num_rows maka data bisa di fetch untuk mendapatkan data dari id yang bersangkutan, jika tidak ada data yang bisa di dapatkan, maka Anda bisa mengarahkannya ke halaman error


function delete_data($var_id){
 global $koneksi;
 $sql = "DELETE FROM datamhs where id =?";
 if($stmt=mysqli_prepare($koneksi, $sql)){
  mysqli_stmt_bind_param($stmt,"i", $param_id);
  $param_id = $var_id;
   /*Query kedua untuk mengrow atau unlink*/
                $sql="SELECT * FROM datamhs where id=?";
                //prepared data
              if($prepare=mysqli_prepare($koneksi, $sql)){
                      // Bind Parameter
                      mysqli_stmt_bind_param($prepare, "i", $param_id);
                       //execute query
                      mysqli_stmt_execute($prepare);
                      //get result
                      $result = mysqli_stmt_get_result($prepare);
                      //jika data ditemukan data yang ingin dihapus
                      if(mysqli_num_rows($result)==1){
                      //jalankan sesuatu jika memang butuh, misal seperti unlink gambar
                                       
                    }else{
                      //jika datanya tidak temukan maka arahkan ke halaman error
                       header("location: error");
                        exit();                   
              }
                }
                
  if(mysqli_stmt_execute($stmt) && ($prepare)){
   return true;
  }else{
   return false;
  }
 }
 //tutup statement
 mysqli_stmt_close($stmt);
}



Contoh Kedua
Pada contoh kedua, didalam num rows, kita bisa tambahkan karakater atau tanda seru (!), maksudnya jika data tidak memiliki nilai, maka langsung saja arahkan ke halaman error, atau selanjutnya bisa dibuat percabangan else, jika memang ada perintah lain yang ingin di eksekusi

function delete_data($var_id){
 global $koneksi;
 $sql = "DELETE FROM datamhs where id =?";
 if($stmt=mysqli_prepare($koneksi, $sql)){
  mysqli_stmt_bind_param($stmt,"i", $param_id);
  $param_id = $var_id;
   /*Query kedua untuk mengrow atau unlink*/
                $sql="SELECT * FROM datamhs where id=?";
                //prepared data
              if($prepare=mysqli_prepare($koneksi, $sql)){
                      // Bind Parameter
                      mysqli_stmt_bind_param($prepare, "i", $param_id);
                       //execute query
                      mysqli_stmt_execute($prepare);
                      //get result
                      $result = mysqli_stmt_get_result($prepare);
                      //jika data ditemukan data yang ingin dihapus
                      if(!mysqli_num_rows($result)==1){
  //jika tidak perintah yang mau di eksekusi, maka arahkan saja ke halaman error
                      header("location:error");
                    }
                }
                
  if(mysqli_stmt_execute($stmt) && ($prepare)){
   return true;
  }else{
   return false;
  }
 }
 //tutup statement
 mysqli_stmt_close($stmt);
}

KONFIRMASI SEBELUM DELETE DATA
Delete Data di Database Menggunakan Function root93
Konfirmasi sebelum delete data
Sumber : root93

Idealnya sebelum data di delete, maka dilakukan konfirmasi terlebih dahulu, data tidak akan dihapus jika user membatalkan. Namun jika user mengklik tombol Ya, artinya parameter id yang ada di url atau di input hiddden akan dikirimkan sebagai perintah kedalam function yang sebelumnya telah dibuat.

Baik menggunakan function pertama atau kedua (penulisan pertama atau kedua) maka cara meanggilnya sama, yaitu cukup seperti ini if(delete_data($_POS[])) , didalam main kode tidak ada query – query, hanya memanggil functionnysa saja.

Contoh lengkapanya :

<?php
include ('koneksi.php');
include ('function.php');
?>
<html>
<head>
 <title>DELETE DATA ROOT93</title>
</head>
<body>

<?php
if(isset($_POST['id']) && !empty($_POST['id'])){
 //panggil function delete data
 if(delete_data(trim($_POST['id']))){
  echo "data berhasil dihapus";
  echo "<a href='tampil_data.php'>Tampil data</a>";
 }else{
  echo "Gagal mendelete data";
 }
//close koneksi
mysqli_close($koneksi);

}else{

 if(empty(trim($_GET["id"]))){
  header("location:error");
 }
}


?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST">
<input type="hidden" name="id" value="<?php echo trim($_GET['id']); ?>" />
<p> Yakin ingin menghapus data ?</p>
<input type="submit" value="Ya">
<a href="javascript:history.back()">Kembali</a>
</form>
</body>
</html>


Sampai disini  kita telah selesai membuat function delete data dengan prepared statement di PHP dimana query delete datanya disimpan atau di eksekusi di dalam function yang  kita buat sendiri. Jika memang ada hal - hal yang keliru, mohon untuk diluruskan.
(Ahmad Zaelani)
 

2 Responses to "Delete Data di Database Menggunakan Function"

  1. Segera laksanakan men delet data yang ada d database nya dengan senang hati serta riang gembira...karena dengan mendelet di database menggunakan function saya akan terbebas dari data-data yang sudah tidak berguna lagi....
    kalau inget

    ReplyDelete

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin