Masino Sinaga

A Web Developer Who Helps Web Developers

Anda di sini: Beranda / PHPMaker / Begini Mudahnya dan Cepatnya Membuat Fake Delete di PHPMaker 2021
Mudahnya Membuat Fake Delete yang Bisa Multi Record di PHPMaker 2021
Menghilangkan Index Field di ExecuteRow dan ExecuteRows pada PHPMaker 2021

Begini Mudahnya dan Cepatnya Membuat Fake Delete di PHPMaker 2021

Sab, 15 Mei 2021 oleh Masino Sinaga 3 Komentar

Fake Delete sering diartikan dengan Penghapusan Palsu. Dengan kata lain, ketika Pengguna Akhir dari Aplikasi Web menghapus data, maka data tersebut sebenarnya tidak dihapus dari database, tetapi hanya ditandai statusnya sebagai sudah dihapus.

Fitur Fake Delete adalah salah satu fitur yang sering dibutuhkan di dalam suatu Aplikasi Web. Khususnya jika ada ketentuan yang mengharuskan data tidak boleh dihapus secara fisik. Pengguna Akhir hanya tidak dapat melihat data yang sudah ditandai statusnya sebagai sudah dihapus.

Beruntunglah Anda jika membangun Aplikasi Web dengan PHPMaker 2021. Anda dapat menerapkan Fake Delete dengan sangat mudah dan cepat. Anda hanya perlu menambahkan sedikit kode saja ke server event Row_Deleting.

Langsung saja kita membuktikannya bersama-sama dari demo project untuk PHPMaker 2021 yang bisa Anda download file-nya dan coba di localhost.

Langkah Pertama, jalankan perintah SQL di bawah ini, untuk menambahkan sebuah field yang bernama IsDelete pada table models di dalam database yang digunakan project demo tadi:

ALTER TABLE `models` 
ADD COLUMN `IsDelete` enum('0','1') NOT NULL DEFAULT '0' AFTER `Model`

Langkah Kedua, pastikan Anda sudah melakukan sinkronisasi struktur table terbaru tadi dengan project demo, dengan mengklik menu Tools -> Synchronize, lalu tekan Yes atau OK untuk menerima perubahan.

Langkah Ketiga, salin kode berikut ke dalam server event Row_Deleting dari table models tepat sebelum baris return true;, sehingga kode selengkapnya menjadi seperti ini:

// Row Deleting event
function Row_Deleting(&$rs)
{
    // Enter your code here
    // To cancel, set return value to False
    $conn = $this->getConnection();
    $conn->executeUpdate("UPDATE models SET IsDelete = '1' WHERE ID = " . $rs["ID"]);
    $conn->commit();
    $conn->beginTransaction();
    $this->setSuccessMessage(Language()->phrase("DeleteSuccess"));
    $this->terminate("modelslist");
    return false;
    
    return true;
}

Kode di atas mengupdate nilai field IsDelete menjadi 1, yang artinya status datanya menjadi sudah dihapus. Di bawahnya kita menambahkan method commit milik object connection, diikuti dengan memulai transaction dengan method beginTransaction, tampilkan pesan berhasil, lalu redirect Pengguna Akhir ke halaman List dari menu Models, dan yang terakhir jangan lupa untuk mengembalikan nilai false.

Jika return false tidak kita gunakan, maka perintah selanjutnya akan lanjut ke kode return true untuk menghapus data tersebut dari database. Tentu saja kita tidak ingin menghapus data tersebut dari database. Untuk itulah kenapa kita harus menggunakan return false.

Langkah Keempat, tambahkan kode berikut ke dalam server event Page_Load di bawah Delete Page milik table models:

    Language()->setPhrase("DeleteCancelled", "");

Jika kode barusan ini tidak kita tambahkan, maka pesan error yang berisi Delete cancelled akan muncul. Supaya pesan ini tidak muncul, maka kita harus mengeset phrase DeleteCancelled dengan string kosong.

Tentu saja Anda bisa mengembangkan fitur ini dengan tidak menampilkan record yang memiliki nilai 1 pada field IsDelete tadi, dengan menambahkan satu baris kode ini saja ke dalam server event Recordset_Selecting:

    AddFilter($filter, "IsDelete = '0'"); // hanya tampilkan yang IsDelete = '0'

Langkah Kelima, pastikan Anda sudah men-generate semua file script dari PHPMaker 2021. Setelah itu, cobalah untuk menghapus sebuah record di menu List Models, maka Anda akan melihat record yang dihapus tetap ada. Hanya nilai pada field IsDelete saja yang berubah.

Perhatikanlah kembali kode di server event Recordset_Selecting, Row_Deleting, dan Page_Load di atas tadi. Hanya dengan sedikit kode itu saja, kita sudah dapat mengimplementasikan Fake Delete di PHPMaker 2021.

Tidak perlu menulis kode berpuluh-puluh atau beratus-ratus baris hanya untuk menerapkan penghapusan palsu tadi. Selebihnya sudah ditangani oleh PHPMaker, sehingga waktu pengembangan Aplikasi Web menjadi lebih cepat.

Sebagai catatan terakhir, trik ini memiliki keterbatasan, yaitu hanya bisa menghapus per satu record saja. Jika opsi Multiple delete diaktifkan, maka hanya record yang paling pertama terpilih saja yang akan ditandai sebagai sudah dihapus.

Jadi, pastikan sekali lagi Anda tidak mengaktifkan Multiple Delete jika ingin menerapkan Fake Delete ini.

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, Fake Delete, PHPMaker 2021, PHPMaker Indonesia, Row_Deleting, Server Events, Tutorial PHPMaker

Mudahnya Membuat Fake Delete yang Bisa Multi Record di PHPMaker 2021
Menghilangkan Index Field di ExecuteRow dan ExecuteRows pada PHPMaker 2021

Komentar

  1. rimix mengatakan

    Sab, 15 Mei 2021 pada 2:52 pm

    what is the utilities to do that after the query ???
    $conn->commit();
    $conn->beginTransaction();

    and why not

    $conn = $this->getConnection();
    $conn->beginTransaction();
    $conn->executeUpdate(“UPDATE models SET IsDelete = ‘1’ WHERE ID = ” . $rs[“ID”]);
    $conn->commit();

    ?????

    Thanks

    Reply
    • Masino Sinaga mengatakan

      Sab, 15 Mei 2021 pada 4:23 pm

      Because by default, PHPMaker has already performed beginTransaction. Therefore, after query UPDATE, we need to perform commit to execute the UPDATE since we will return false immediately afterwards.

      Since commit will close the transaction, then we need to perform beginTransaction again, in order to avoid error There is no active transaction.

      Reply

Trackbacks

  1. Mudahnya Membuat Fake Delete yang Bisa Multi Record di PHPMaker 2021 – Masino Sinaga berkata:
    Ming, 16 Mei 2021 pukul 10:47 am

    […] Anda di sini: Beranda / PHPMaker / Mudahnya Membuat Fake Delete yang Bisa Multi Record di PHPMaker 2021 Begini Mudahnya dan Cepatnya Membuat Fake Delete di PHPMaker 2021 […]

    Reply

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses

Pos-pos Terbaru

  • Alasan 21 Harus Pakai Masino Extensions: Form Wizard dengan jQuery SmartWizard v7
  • Alasan 20 Harus Pakai Masino Extensions: Maximum Record per Page
  • Alasan 19 Harus Pakai Masino Extensions: Custom Breadcrumb Links
  • Alasan 18 Harus Pakai Masino Extensions: Improvement User Level Permissions
  • Alasan 17 Harus Pakai Masino Extensions: Dynamic Permission for Export Data

Menu

  • Siapa Saya?
  • Web Development
  • PHPMaker
  • Umum
  • Syarat dan Ketentuan
  • Sitemap (Peta Situs)
  • Komentar

Komentar Terbaru

  • Alasan 21 Harus Pakai Masino Extensions: Form Wizard dengan jQuery SmartWizard v7 pada Alasan 10 Harus Pakai Masino Extensions: Form Wizard
  • Masino Sinaga pada Kode Javascript yang Berubah di PHPMaker 2026 dari PHPMaker 2025
  • Masino Sinaga pada Kode Javascript yang Berubah di PHPMaker 2026 dari PHPMaker 2025
  • Charly pada Kode Javascript yang Berubah di PHPMaker 2026 dari PHPMaker 2025
  • Charly pada Kode Javascript yang Berubah di PHPMaker 2026 dari PHPMaker 2025

(c) Masino Sinaga 2009 - 2026 | WordPress | Catat masuk | Kembali ke atas