Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Kapan Harus Menggunakan Object $rsold dan $rsnew dari PHPMaker?
Begini Mudahnya Men-Debug Aplikasi Web yang Dihasilkan Oleh PHPMaker
Menyembunyikan Field di Table Detail pada Halaman Master/Detail dari PHPMaker

Kapan Harus Menggunakan Object $rsold dan $rsnew dari PHPMaker?

Kam, 21 April 2016 oleh Masino Sinaga 7 Komentar

Ada empat server event yang sering digunakan oleh Web Developer untuk mengimplementasikan business-logic saat data sedang atau sudah berhasil ditambah atau diperbarui. Mereka adalah Row_Inserting, Row_Inserted, Row_Updating, dan Row_Updated.

Akhiran ing artinya sedang berlangsung, sedangkan akhiran ed sudah selesai berlangsung. Row_Inserting dan Row_Updating masing-masing artinya saat sistem sedang menambah dan saat sistem sedang memperbarui data ke Database. Sedangkan Row_Inserted dan Row_Updated masing-masing artinya saat sistem sudah selesai menambah dan memperbarui data ke Database.

Di keempat server event tersebut, masing-masing memiliki dua parameter, yaitu $rsold dan $rsnew. Arti dari kata rsold adalah recordset old, sedangkan rsnew adalah recordset new. Gampang kan?

Karena dari namanya demikian informatif, seharusnya kita tidak mengalami kesulitan lagi untuk membedakan keduanya, apalagi untuk menggunakannya. Object $rsold digunakan jika ingin mengambil nilai dari recordset yang lama, sedangkan object $rsnew jika ingin mengambil nilai dari recordset yang baru, atau jika ingin mengubah nilai recordset yang baru tadi.

Di server event Row_Inserting, kita akan lebih sering bermain-main dengan $rsnew. Mengapa? Karena semua data yang sedang ditambah pasti berasal dari recordset yang baru. kita menggunakan $rsold di server event ini saat menambah data dengan menggunakan cara Copy. Jika kita ingin mengetahui data aslinya, gunakan $rsold, karena data yang disalin tersebut disimpan di $rsold.

Contoh, di server event Row_Inserting kita ingin menyesuaikan nilai field Nama_Lengkap supaya saat disimpan ke Database semua karakter berubah menjadi karakter huruf besar semua, maka gunakan object $rsnew:

$rsnew["Nama_Lengkap"] = strtoupper($rsnew["Nama_Lengkap"]);

Di server event Row_Updating, kita harus berhati-hati membedakan antara $rsold dan $rsnew. Jika kita yakin data di suatu field saat Edit data tidak akan diubah (misalnya karena diset ReadOnly dari Fields setup), maka kita cukup menggunakan $rsold untuk mengambil nilai dari field tadi. Tapi jika kita yakin nilai di suatu field pada event ini pasti berubah saat proses Edit data, maka gunakan $rsnew.

Contoh, saat proses Edit data, nilai field Nama_Lengkap harus diubah nilainya berdasarkan gabungan dari Nama_Awal dan Nama_Akhir yang datanya tidak diubah pada server event Row_Updating, maka kodenya menjadi:

$rsnew["Nama_Lengkap"] = $rsold["Nama_Awal"] . " " . $rsold["Nama_Akhir"];

Dari contoh barusan, data pada field Nama_Awal dan Nama_Akhir tidak mengalami perubahan. Kita menggunakan object $rsold, yaitu ambil nilainya dari recordset yang lama.

Kadang-kadang kita tidak bisa memastikan apakah perubahan nilai di suatu field akan disimpan atau tidak, maka cara amannya kita bisa membandingkan antara nilai pada $rsold dan $rsnew, contoh:

$rsnew["Alamat"] = ($rsold["Alamat"] <> $rsnew["Alamat"]) ? $rsnew["Alamat"] : $rsold["Alamat"];

Perhatikanlah dari contoh barusan. Karena kita tidak bisa memastikan apakah field Alamat ini nantinya akan berubah atau tidak, tapi kita ingin saat proses Edit data Alamat harus tetap ikut disimpan, maka bandingkan nilai di recordset lama dan recordset baru. Jika tidak sama, maka itu artinya nilai pada recordset baru sudah berubah, lalu gunakan nilai tersebut. Sedangkan jika sama, maka tetap gunakan nilai pada recordset lama.

Dari penjelasan di kedua server event itu, seharusnya sudah bisa dibedakan $rsold dan $rsnew pada dua server event yang lainnya, yaitu Row_Inserted dan Row_Updated.

Betapa mudahnya, bukan? PHPMaker memang tidak ada lawannya! 😉

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, PHPMaker Indonesia, Row_Inserted, Row_Inserting, Row_Updated, Row_Updating, rsnew, rsold, 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 dan ilovephpmaker.com.

Begini Mudahnya Men-Debug Aplikasi Web yang Dihasilkan Oleh PHPMaker
Menyembunyikan Field di Table Detail pada Halaman Master/Detail dari PHPMaker

Komentar

  1. yocki mengatakan

    Sab, 14 Mei 2016 pada 11:13 am

    Ok. tq artikelnya. bermanfaat sekali.. 🙂

    Balas
  2. Rudy mengatakan

    Rab, 3 Agustus 2016 pada 11:01 am

    siang Pak masino, kenapa isi object $rsnew tetep data lama ? padahal saat data sudah di edit menjadi data yang baru.

    contoh : Kolom Site : Jakarta value nya saya rubah menjadi Bandung,
    tapi saat row_updated
    nilai $rsNew tetep Jakarta bukan Bandung

    Balas
    • Masino Sinaga mengatakan

      Rab, 3 Agustus 2016 pada 11:05 am

      Kode yang Anda tulis seperti apa?

      Balas
      • Rudy mengatakan

        Kam, 4 Agustus 2016 pada 11:24 am

        function Row_Updated($rsold, &$rsnew) {

        //echo “Row Updated”;
        $sShift = ew_ExecuteScalar(“SELECT Shift FROM shift WHERE id='”.$rsnew[“Shift”].”‘”);
        $iFact_code = ew_ExecuteScalar(“SELECT FactCode FROM Plant WHERE Kode='”.$rsnew[“Site”].”‘”);

        return TRUE;
        }

        Nilai $rsnew[“Site”] selalu nilai yg lama pak
        walaupun sudah saya ganti saat proses edit data.

        Balas
        • Masino Sinaga mengatakan

          Kam, 4 Agustus 2016 pada 3:39 pm

          Cek, apakah field Kode itu sebagai Primary Key. Jika iya, maka data tersebut tidak bisa diubah.

          Balas
          • Rudy mengatakan

            Kam, 4 Agustus 2016 pada 4:25 pm

            Bukan Pak,, Bukan Primary key

            Balas
            • Masino Sinaga mengatakan

              Kam, 4 Agustus 2016 pada 8:29 pm

              Tampilkan aja datanya dengan echo.

              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

  • Hati-Hati Memilih Versi PHP Sebelum Generate Code di PHPMaker 2022
  • Alasan AlwaysUseEnglishUSLocale Sebaiknya Aktif di Masino Extensions untuk PHPMaker 2022
  • MasinoInputMask18 Extension, Autoformat Angka dengan Fitur Lebih Kaya di PHPMaker 2022
  • MasinoSignature18 Extension, Mudahnya Mengelola Tanda Tangan di PHPMaker 2022
  • MasinoFormWizard18 Extension, Mengubah Tampilan Multi-Page di PHPMaker 2022

Menu

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

Komentar Terbaru

  • Masino Sinaga pada Hati-Hati Memilih Versi PHP Sebelum Generate Code di PHPMaker 2022
  • Thien Rudi pada Hati-Hati Memilih Versi PHP Sebelum Generate Code di PHPMaker 2022
  • Masino Sinaga pada Cara Menggunakan Login by session variables di Aplikasi Web dari PHPMaker 2021
  • Masino Sinaga pada Cara Menggunakan Login by session variables di Aplikasi Web dari PHPMaker 2021
  • Masino Sinaga pada Cara Menggunakan Login by session variables di Aplikasi Web dari PHPMaker 2021

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. 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 - 2021 | WordPress | Catat masuk | Kembali ke atas