Pentingnya Database Transaksi Di PHP Code Igniter

Hasil gambar untuk Db transactionSabtu ini saya akan membahas tentang bahasa pemograman PHP yang memakai framework Code Igniter sesuai dengan judul yang saya buat. Apa itu database transaksi ? Database Transaksi merupakan sebuah fungsi yang dapat menjaga konsistensi data transaksi yang ada didalam database.

Jadi proses didalam sebuah method transaksi pasti mempunyai banyak sekali proses ke dalam database antara lain perintah Create, Update, Delete. Contoh : katakanlah sebuah proses method transaksi pembelian didalamnya terdapat banyak sekali perintah :

1. Create untuk tabel transaksi, 
2. Update penambahan modal pada tabel master produk, 
3. Update mengurangi jumlah Qty
4. Create Informasi Pembelian pada tabel informasi_beli

Fungsi dari Database transaksi adalah menjaga perintah perintah tersebut. Apa maksudnya menjaga ? 4 perintah tersebut adalah menjadi satu kesatuan apabila ada salah satu perintah yang gagal di eksekusi maka 4 perintah tersebut akan digagalkan semua. Apabila perintah nomer 4 gagal maka perintah 1,2 dan 3 akan di rollback atau tidak dijalankan atau dikembalikan.

Mengapa harus seperti itu dikarenakan, apabila tidak menggunakan Database transaksi dan perintah 4 gagal maka perintah 1,2 dan 3 akan tetap berhasil di jalankan hal ini mengakibatkan data tidak konsisten, Semua data sudah masuk tetapi informasi pembelian tidak ada padahal informasi pembelian sangat penting karena data ini terhubung ke data tabel transaksi.

Hal ini yang sangat berbahaya apabila kita tidak memakai Database transaksi sebagai pengamanan proses transaksi kita. Lalu bagaimana caranya menggunakan database transaksi di Code Igniter. Dibawah ini adalah keseluruhan Kode Database Transaksi.


  1. $this->db->trans_begin();
  2.     try{
  3.         //---- Perintah Database [Start] ----
  4.        
  5.         //---- Perintah Database [Finish] ----
  6.  
  7.          if($this->db->trans_status()) $this->db->trans_commit();
  8.          else throw new Exception("Error DB", 1);
  9.     }
  10.     catch (Exception $e)
  11.     {
  12.         $error = ['error_message' => $e->getMessage()];
  13.         $error_db = $this->db->error();
  14.         if($error_db && !empty($error_db['message'])) $error['error_message'] = $error_db['message'];
  15.         $this->db->trans_rollback(); // Perintah Untuk Rollback
  16.         $this->session->set_flashdata('error_db',  $error['error_message']); // notif error
  17.         redirect('Saham/formsahambonus/'.getPost('idpm')); //Ganti dengan redirect jika error          
  18.     }

Penjelasan dari kode diatas adalah :

  1. $this->db->trans_begin();

Database transaksi dimulai

  1.  //---- Perintah Database [Start] ----
  2.        
  3.  //---- Perintah Database [Finish] ----

Masukkan kode perintah Create, Update, Delete  ditengah kode tersebut

  1.   if($this->db->trans_status()) $this->db->trans_commit();
  2.          else throw new Exception("Error DB", 1);
  3.     }

Fungsi baris diatas, dilakukan pengecekan apakah perintah perintah dari database tadi, statusnya apakah error atau tidak, Kalo tidak maka akan dilakukan Commit yaitu menjalankan perintah untuk masuk kedalam database. Apaabila status database transaksi mengalami error maka akan dilakukan throw new exception yang akan menjalankan perintah Catch

  1. catch (Exception $e)
  2.     {
  3.         $error = ['error_message' => $e->getMessage()];
  4.         $error_db = $this->db->error();
  5.         if($error_db && !empty($error_db['message'])) $error['error_message'] = $error_db['message'];
  6.         $this->db->trans_rollback(); // Perintah Untuk Rollback
  7.         $this->session->set_flashdata('error_db',  $error['error_message']); // notif error
  8.         redirect('Saham/formsahambonus/'.getPost('idpm')); //Ganti dengan redirect jika error          
  9.     }

Nah perintah catch ini berfungsi untuk menghandle error pada saat menjalan perintah perintah ke database. error tersebut akan disimpan , dan dengan fungsi trans_rollback() maka perintah perintah yang sudah berjalan tadi akan dikembalikan semua seperti semula. Seperti tidak terjadi apa apa.

Dengan hal ini maka database kita lebih aman dan data akan menjadi konsisten. Hal ini aplikasi yang kita buat akan juga menjadi lebih aman dan sesuai dengan data yang diinputkan oleh user.

Baik mungkin itu yang bisa saya berikan.. Apabila teman teman ada yang kebingungan silahkan bertanya. 

Tidak ada komentar:

Lebih bermanfaat bagi para pembaca lainya dengan meninggalkan jejak Komentar ^_^

Diberdayakan oleh Blogger.