Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Melakukan Aksi Tertentu Sebelum Record Dihapus di Aplikasi Web dari PHPMaker
Menambahkan Business Logic Setelah Record Dihapus di Aplikasi Web dari PHPMaker
Menyaring Record Sebelum Pencarian Data di Aplikasi Web dari PHPMaker

Melakukan Aksi Tertentu Sebelum Record Dihapus di Aplikasi Web dari PHPMaker

Jum, 6 Juni 2014 oleh Masino Sinaga 17 Komentar

Sering sekali Web Developer bertanya kepada saya, Bagaimana cara menambahkan business-logic tertentu ketika sebuah atau bahkan beberapa Record akan dihapus dari Database? Atau pertanyaan yang mirip dengan itu adalah, Bagaimana cara mendapatkan data record yang akan sedang dihapus di sebuah Aplikasi Web?

Ketika sebuah Record atau bahkan beberapa Record akan dihapus dari Database melalui sebuah Aplikasi Web, maka beragam business-logic bisa diterapkan oleh Web Developer. Ada yang ingin merekam data tersebut terlebih dulu ke dalam tabel lain; ada juga yang ingin hanya merekam data tersebut ke file log, sebelum data tersebut akhirnya benar-benar dihapus. Atau bahkan, ada juga Web Developer yang ingin menjalankan pernyataan SQL tertentu untuk mengubah data terkait di tabel lain.

Tentu tidak ada yang salah dengan semua itu. Sayangnya, masih banyak Web Developer yang kesulitan dan kebingungan bagaimana cara menerapkan business-logic tersebut. PHPMaker bisa menangani setiap kemungkinan yang bisa terjadi saat event penghapusan Record. Tentu saja Anda sebagai Web Developer tidak akan mengalami kesulitan jika menggunakan PHPMaker sebagai tools untuk mengembangkan aplikasi berbasis web dengan cepat sekaligus berkualitas.

PHPMaker sudah menyediakan sebuah server event yang bernama Row_Deleting yang lokasinya berada di bawah Server Events -> Table-Specific -> Common di dalam project PHPMaker Anda. Pastikan sebelumnya Anda sudah memilih salah satu Table yang Anda inginkan dari panel Database di sebelah kiri dari project PHPMaker Anda, untuk memastikan Anda menambahkan kode di server event pada Table yang tepat.

Sesuai dengan namanya, server event ini akan dipanggil ketika ada Record yang akan dihapus dari Database. Yang enaknya adalah, server event ini dijalankan bukan hanya untuk menghapus satu Record saja, tapi berlaku juga untuk proses penghapusan beberapa Record sekaligus. Seperti yang kita ketahui, PHPMaker juga mendukung untuk pembuatan fitur penghapusan beberapa record sekaligus (Multiple-Delete).

Itulah mengapa server event ini disebut dengan Row_Deleting yang kurang lebih artinya adalah saat Baris atau Record atau Row sedang dihapus. Jadi, di samping berlaku untuk penghapusan satu Row, server event ini berlaku juga untuk penghapusan beberapa Row sekaligus dengan memanggil ulang server event ini untuk setiap Row yang dihapus.

Server event ini merupakan member dari Class Table. Anda sebagai Web Developer dapat menggunakan member lainnya yang terdapat di Class ini (jika dibutuhkan). Server event ini memiliki sebuah argumen yang berupa sebuah Record yang akan dihapus sebagai sebuah array. Artinya, Anda bisa menggunakan argumen ini untuk mengambil nilai di field tertentu dari Record yang akan dihapus tadi, menggunakan sintaks untuk mengakses elemen yang terdapat di sebuah array.

Supaya lebih jelas, mari kita simak contoh berikut. Katakanlah Anda ingin menampilkan data nama lengkap dari field Nama_Lengkap di tabel pelanggan sesaat sebelum sebuah Record dihapus. Untuk itu, maka kita dapat menggunakan kode seperti ini:

// Row Deleting event
function Row_Deleting(&$rs) {
    // Enter your code here
    // To cancel, set return value to False
    $this->setSuccessMessage("Nama lengkap dari record yang dihapus: " . $rs["Nama_Lengkap"]);
    return TRUE;
}

Setelah file script di-generate ulang oleh PHPMaker lalu Aplikasi Web dijalankan lewat browser, maka ketika Pengguna menghapus Record di tabel pelanggan maka sistem akan menampilkan pesan yang berisi Nama Lengkap data pelanggan yang dihapus. Artinya, jika hanya ada satu Record yang berhasil dihapus, maka akan muncul pesan sebanyak satu kali. Sedangkan jika ada beberapa Record dihapus (misalnya 3 Record), maka akan ada tiga baris pesan yang muncul memberitahukan data Nama Lengkap dari Record yang sedang dihapus.

Hal penting lainnya yang perlu Anda ketahui dari server event Row_Deleting adalah, bahwa dia dapat digunakan untuk mem-validasi terlebih dulu Record yang akan dihapus. Artinya, Anda sebagai Web Developer masih diberi kesempatan oleh PHPMaker untuk memeriksa data mana saja yang boleh dihapus, dan mana yang tidak.

Jika Anda tidak ingin menghapus Record tertentu, maka Anda dapat menambahkan kondisi tertentu, dan jika kondisi tersebut memenuhi syarat, maka cukup kembalikan nilai FALSE, sebaliknya untuk Record yang boleh dihapus, maka Anda cukup mengembalikan nilai TRUE. Wouw. Mudah sekali, bukan?

Pada contoh berikut akan ditunjukkan bagaimana caranya memeriksa record yang tidak boleh dihapus jika memenuhi kriteria tertentu. Katakanlah dari 10 Record yang akan dihapus (menggunakan fitur Multiple-Delete di PHPMaker), terdapat 3 Record yang tidak boleh dihapus.

Kriteria dari Record-Record yang tidak boleh dihapus itu adalah jika nilai field Nama_Lengkap-nya masing-masing sama dengan Masino Sinaga, Dorce Simatupang, dan Elvis Sinaga. Mari langsung simak kode berikut:

// Row Deleting event
function Row_Deleting(&$rs) {
    // Enter your code here
    // To cancel, set return value to False
    if ($rs["Nama_Lengkap"] == "Masino Sinaga" || $rs["Nama_Lengkap"] == "Dorce Simatupang" || $rs["Nama_Lengkap"] == "Elvis Sinaga") {
        $this->setWarningMessage("Tidak diijinkan dihapus: " . $rs["Nama_Lengkap"]);
        return FALSE;
    }
    return TRUE;
}

Setelah file script untuk Aplikasi Web di-generate ulang oleh PHPMaker, kemudian Aplikasi Web dijalankan dari browser, lalu Pengguna mencoba menghapus 10 Record, di mana tiga di antaranya memenuhi kondisi yang tidak boleh dihapus, maka jika sistem baru menemukan satu Record saja yang memenuhi syarat untuk tidak boleh dihapus, sistem akan menampilkan pesan yang menyatakan bahwa Record tersebut tidak dapat dihapus. Seketika itu juga proses penghapusan akan dibatalkan oleh sistem.

Artinya, ketika satu Record saja tidak boleh dihapus sesuai dengan kondisi tadi, maka Record-Record lainnya yang meskipun memenuhi syarat untuk dihapus pun akan dibatalkan penghapusannya. Jadi, penghapusan beberapa Record lainnya baru bisa dilakukan jika tidak ada satupun Record yang memenuhi syarat untuk tidak boleh dihapus.

Sekarang mari kita simak contoh lainnya bagaimana Web Developer dapat mengupdate data di Table terkait lainnya ketika sebuah Record yang terkait dengan Table tersebut dihapus dari Database:

function Row_Deleting(&$rs) {
    // Enter your code here
    // To cancel, set return value to False
    ew_Execute("UPDATE table_lain SET Field1 = 'deleted' WHERE ID_Table = '".$rs["id"]."'");
    return TRUE;
}

Betapa mudahnya kita bisa memperbarui record di Table lain hanya dengan menambahkan satu baris kode saja. Kode ini akan berlaku juga untuk penghapusan beberapa Record sekaligus, dan akan memperbarui Record yang terkait di Table lainnya.

Inilah beberapa bukti yang menunjukkan bahwa server event ini akan dijalankan untuk setiap Record atau Row yang dihapus di level Table. Setiap Record akan memanggil server event ini saat sedang dihapus. Sampai di sini saya berharap Anda memahami kemampuan dan kehebatan dari server event ini sehingga dapat Anda gunakan sebagaimana mestinya.

See? Betapa mudah, cepat, sekaligus menyenangkan sekali bukan menerapkan business-logic sendiri melalui server event yang telah disediakan oleh PHPMaker? Betapa PHPMaker sudah menangani hal-hal seperti ini, yang justru sering kali dirasakan sebagai hambatan bagi Web Developer ketika akan menerapkan business-logic tertentu saat Record akan dihapus dari Database pada Aplikasi Web yang mereka bangun. πŸ™‚

Ditempatkan di bawah: PHPMaker Ditag dengan:PHPMaker Indonesia, Row_Deleting, Server Events, Tutorial PHPMaker

Masino Sinaga

Web Developer pengguna PHPMaker untuk membangun Aplikasi Web sejak tahun 2004. Sampai sekarang masih aktif dan rajin membagikan pengalamannya menggunakan PHPMaker melalui situs masinosinaga.com, ilovephpmaker.com, dan phpmakerprojects.com.

Menambahkan Business Logic Setelah Record Dihapus di Aplikasi Web dari PHPMaker
Menyaring Record Sebelum Pencarian Data di Aplikasi Web dari PHPMaker

Komentar

  1. Rijal mengatakan

    Sel, 3 Maret 2015 pada 7:10 pm

    Pak Masino, sy mau taya nihhh, bagaimana cara memunculkan Form (hanya Textarea) di halaman Konfirmasi Hapus.
    Jadi kasusnya gini Pak.
    Misal saya Punya Tabel :
    1. Tabel Barang : kode_barang, nama_barang.
    2. Tabel Hapus_Barang : id_hapus, kode_barang, nama_barang, keterangan.

    Jadi ketika mau Hapus Data di Tabel barang , akan di arahkan ke Halaman Konfirmasi Hapus dulu, namun disitu akan di munculkan Textarea => untuk menginput Keterangan (mengapa data tsb di hapus).
    Jika Textarea (field keterangan) tsb sudah di isikan maka Data Barang tsb (sesuai kode_barang) akan di insert ke Tabel Hapus_Barang.
    Tujuannya agar Setiap Barang yg di hapus tetap ada Dokumentasinya di Tabel Hapus Barang.

    Balas
    • Masino Sinaga mengatakan

      Sel, 3 Maret 2015 pada 7:42 pm

      Kalau menggunakan fitur Hapus langsung milik tabel Barang memang tidak bisa, karena tidak ada fitur khusus seperti itu.

      Tapi bukan PHPMaker namanya jika Web Developer tidak bisa mengakalinya. Anda bisa saja tetap menggunakan link Delete dari tabel Barang, lalu mengarahkannya ke halaman Add milik tabel Hapus_Barang, dengan menyertakan parameter yang diperlukan pada link Delete yang bisa Anda ubah menggunakan server event ListOptions_Rendered milik tabel Barang.

      Selanjutnya, tampung data yang terkait dari URL atau link dari tabel Barang tadi ke dalam form Add milik tabel Hapus_Barang. Jadi, tidak perlu lagi mengaktifkan halaman konfirmasi.

      Setelah itu, maka cukup eksekusi script DELETE data di tabel Barang dari server event Row_Inserted milik tabel Hapus_Barang tersebut. Tujuannya untuk memastikan log dokumentasi penghapusan ditambahkan terlebih dulu, baru setelah itu menghapus data terkait di tabel Barang.

      Gampang sekali, kan? πŸ˜€

      Balas
      • Rijal mengatakan

        Sel, 3 Maret 2015 pada 8:09 pm

        sudah ada gambaran pak, tapi masih agak bingung, hehe…
        di bagian ini Pak :
        Bagaimana cara merubah default Link Delete di Tabel Barang melalui Project.
        yg tadinya : barangdelete.php?kode_barang=100 menjadi hapus_barangadd.php?kode_barang=100
        (merubah default Link Delete menjadi diarahkan ke halaman hapus_barang add dgn menyertakan ID/ Kode Barang terkait)
        Trimakasih atas Responnya.

        Balas
        • Masino Sinaga mengatakan

          Rab, 4 Maret 2015 pada 8:56 am

          Ini dia cara mengubah link Hapus di halaman List: Mudahnya Mengubah Link Hapus di Halaman List Aplikasi Web dari PHPMaker.

          Balas
  2. Dadan Hermansah mengatakan

    Sel, 24 November 2015 pada 10:29 am

    pak, jika kita menghapus record dari sebuah tabel dan record yang telah kita hapus tadi ingin ditambahkan di tabel lain contohnya penghapusan. Bagaimana ya?

    Mohon pencerahannya, terima kasih!

    Balas
    • Masino Sinaga mengatakan

      Sel, 24 November 2015 pada 11:41 am

      Sama seperti code pada server event Row_Deleting di atas yang mengubah data di table lain.

      Tinggal tambahkan aja kode yang memanggil function ew_Execute() untuk menjalankan perintah penambahan (INSERT INTO) data ke table lain.

      Balas
  3. roni mengatakan

    Sab, 23 April 2016 pada 12:10 am

    Pak saya mau tanya bagaimana cara memvalidasi hapus tabel barang yang sudah terjadi transaksi penjualan supaya tabel tersebut divalidasi bahwa tabel tersebut tidak bisa dihapus karena sudah ada transaksi penjualan. Mohon pencerahannya pak.

    Balas
    • Masino Sinaga mengatakan

      Sab, 23 April 2016 pada 9:29 am

      Ya tinggal periksa aja di server event Row_Deleting dengan mengeksekusi query SQL SELECT ke table terkait. Jika data ditemukan, tampilkan pesan dan kembalikan nilai FALSE.

      Balas
  4. Pramudiyanto mengatakan

    Kam, 20 April 2017 pada 9:08 am

    Seandainya yang dihapus adalah tabel detail di modul master/detail bagaimana?

    Balas
    • Masino Sinaga mengatakan

      Jum, 21 April 2017 pada 11:33 pm

      Ya tinggal tambahkan saja kode Anda di server event Row_Deleting milik tabel detail tersebut.

      Balas
  5. ameisfine mengatakan

    Rab, 4 Oktober 2017 pada 12:00 pm

    Pak Masino, sy punya script sbb:
    Saya pasang di Row_Inserted dan Row_Updated hasilnya sesuai (bisa update) tapi ketika saya pasang di Row_Deleted kok tidak ada update di dbnya ya? apa harus ada perlakukan khusus? what’s wrong ? Thnks

    $abc = $this->Product_Code->CurrentValue;
    $cogs = ew_ExecuteScalar(“SELECT SUM(Cogs_Cost) FROM a_costing_cogs WHERE Product_Code = ‘$abc'”);
    $usdrate = ew_ExecuteScalar(“SELECT USD_Rate FROM a_usdrate WHERE Rate_ID = ‘1’”);
    $volpack = ew_ExecuteScalar(“SELECT vol_pack FROM products WHERE Product_Code = ‘$abc'”);
    $over1 = ew_ExecuteScalar(“SELECT sum(Overhead1_Cost_Year) FROM a_overhead1 WHERE Overhead1_ID between 0 and 20”);
    $total_prod_usd = ($cogs + ($over1 * $volpack)) / $usdrate;
    ew_Execute(“UPDATE products SET Total_Production_CostUSD = “.$total_prod_usd.” WHERE Product_Code = ‘$abc'”);

    Balas
    • Masino Sinaga mengatakan

      Rab, 4 Oktober 2017 pada 5:57 pm

      Pastikan variable $abc nilainya valid. Coba tampilkan dengan kode:
      $this->setMessage(“Nilai $abc = ” . $abc);

      setelah baris ini:
      $abc = $this->Product_Code->CurrentValue;

      Balas
      • ameisfine mengatakan

        Kam, 5 Oktober 2017 pada 10:34 am

        Iya pak sudah saya pasang $this->setMessage(β€œNilai $abc = ” . $abc);
        hasilnya
        di Row_Inserted = keluar hasilnya benar
        di Row_Updated = keluar hasilnya benar
        di Row_Deleted = tidak muncul apa2

        berarti systaxnya musti dibenerin gimana ya pak?

        Balas
        • Masino Sinaga mengatakan

          Kam, 5 Oktober 2017 pada 12:03 pm

          Gunakan $rs[“Product_Code”].

          Balas
          • ameisfine mengatakan

            Rab, 11 Oktober 2017 pada 3:19 pm

            Makasih makasih

            Balas
  6. Hafiedh mengatakan

    Jum, 31 Mei 2019 pada 10:07 am

    Pak saya mau tanya cara menghapus isi tabel database tapi kalau ada data yang sama/saling berhubung tidak dapat dihapus itu bagaimana caranya??

    Balas
    • Masino Sinaga mengatakan

      Jum, 31 Mei 2019 pada 10:55 am

      Caranya tinggal dibuatkan dulu query SELECT untuk menampilkan data dengan kriteria yang sama/saling berhubungan tadi.

      Setelah itu, buatkan lagi query SELECT untuk menampilkan data di luar kriteria tadi, lalu pastikan bahwa kedua bagian terpisah tadi sesuai dengan yang Anda inginkan.

      Jika sudah yakin, ganti perintah SELECT menjadi DELETE FROM … untuk menghapus data di luar kriteria tadi.

      Balas

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

  • Masino Extensions for PHPMaker 2025 Now Changed!
  • Begini Mudahnya Mengurangi Lebar Combobox pada PHPMaker 2025
  • Mudahnya Mengubah Nilai Delay Auto Hide Success Message di PHPMaker 2025
  • Mudahnya Berpindah Layout dari Table ke Cards di Halaman List lewat PHPMaker 2025
  • Jangan Lupa Pakai AdjustSql Saat Insert atau Update Data Lewat ExecuteStatement

Menu

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

Komentar Terbaru

  • Masino Sinaga pada Cara Mengetahui Detail Error di Aplikasi Web yang Dihasilkan oleh PHPMaker 2021
  • Dendi pada Cara Mengetahui Detail Error di Aplikasi Web yang Dihasilkan oleh PHPMaker 2021
  • Charly pada PHPMaker: PHP Code Generator + PHP Framework
  • Masino Sinaga pada PHPMaker: PHP Code Generator + PHP Framework
  • Masino Sinaga pada PHPMaker: PHP Code Generator + PHP Framework

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Projects
  6. PHPMaker Learning

Baru di PHPMaker?

Baca ini terlebih dulu ...

  1. Ayo Menjadi Web Developer yang Cerdas!
  2. PHPMaker: PHP Code Generator + PHP Framework
  3. Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
  4. Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker
  5. Bacalah Help, Bacalah Help, dan Bacalah Help di PHPMaker!

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