Masino Sinaga

Web Development, PHPMaker, & PHP Report Maker

Anda di sini: Beranda / PHPMaker / Mudahnya Me-redirect ke Halaman Lain Antar Modal Dialog di PHPMaker 2021
Menampilkan Data Master di Bagian Table Detail pada Master/Detail PHPMaker 2021
Cara Mengatur Timezone di PHPMaker 2021

Mudahnya Me-redirect ke Halaman Lain Antar Modal Dialog di PHPMaker 2021

November 23, 2020 oleh Masino Sinaga 4 Komentar

Hari ini kita akan membahas betapa mudahnya me-redirect Pengguna Akhir ke halaman lain menggunakan Modal dialog di aplikasi web yang dihasilkan oleh PHPMaker 2021. Kemampuan ini baru saja saya ketahui ketika mencoba kode di server event Row_Inserting untuk me-redirect Pengguna dari halaman Add pada Modal dialog, ke halaman View yang juga masih menggunakan Modal dialog.

Artinya, dengan menggunakan PHPMaker 2021, kita sekarang sudah bisa me-redirect Pengguna dari halaman satu ke halaman lain, yang sama-sama menggunakan Modal dialog. Kemampuan ini sepertinya baru saya rasakan di versi 2021. Di versi-versi major sebelumnya, PHPMaker belum memiliki kemampuan tersebut. Satu lagi alasan kuat, mengapa harus selalu menggunakan PHPMaker 2021, yaitu versi terakhir saat artikel ini ditulis.

Katakanlah kita ingin membuat business-logic seperti ini melalui file project demo2021. Ketika Pengguna Akhir menambah lalu menyimpan data Order Details baru dari form/halaman Add, ternyata data tersebut sudah pernah dientri sebelumya dan sudah tersimpan di database. Sistem akan mencegah proses penyimpanan, menampilkan pesan error, lalu menampilkan data tersebut pada form/halaman View.

Perhatikanlah kata-kata bercetakan tebal pada alinea sebelum ini. Di situ tercantum form/halaman Add dan form/halaman View. Itu artinya, dalam hal ini kita menggunakan Modal dialog untuk kedua halaman tersebut. Untuk itu, maka pastikan kita sudah mengaktifkan pilihan Modal dialog yang masing-masing terdapat di bawah View Page dan Add Page pada Table setup milik table orderdetails di dalam project PHPMaker 2021.

Setelah itu, cukup copy lalu paste-kan kode PHP berikut ke dalam server event Row_Inserting milik table orderdetails, tepat sebelum baris kode return true:

    // check the current new record in the database ...
    global $basePath;
    $row = ExecuteRow("SELECT OrderID, ProductID FROM orderdetails WHERE OrderID = " . $rsnew["OrderID"] . " AND ProductID = " . $rsnew["ProductID"]);
    if (!empty($row)) { // if not empty
        if ( ($row["OrderID"] == $rsnew["OrderID"]) && ($row["ProductID"] == $rsnew["ProductID"]) ) { // if found
    	// show the failure message
        $this->setFailureMessage("OrderID <strong>" . $row["OrderID"] . "</strong> and ProductID <strong>" . $row["ProductID"] . "</strong> already exists. Here is the View page that displays the existing record.");
        // redirect to the View page
        $this->terminate($basePath . "orderdetails/view/" . $row["OrderID"] . "/" . $row["ProductID"]);
        return false;
    }

Dengan kata lain, kode selengkapnya di server event Row_Inserting di atas tadi, kira-kira seperti ini (asumsi: belum ada kode PHP lainnya):

// Row Inserting event
function Row_Inserting($rsold, &$rsnew)
{
    // Enter your code here
    // To cancel, set return value to false
    // check the current new record in the database ...
    global $basePath;
    $row = ExecuteRow("SELECT OrderID, ProductID FROM orderdetails WHERE OrderID = " . $rsnew["OrderID"] . " AND ProductID = " . $rsnew["ProductID"]);
    if (!empty($row)) { // if not empty
        if ( ($row["OrderID"] == $rsnew["OrderID"]) && ($row["ProductID"] == $rsnew["ProductID"]) ) { // if found
    	// show the failure message
        $this->setFailureMessage("OrderID <strong>" . $row["OrderID"] . "</strong> and ProductID <strong>" . $row["ProductID"] . "</strong> already exists. Here is the View page that displays the existing record.");
        // redirect to the View page
        $this->terminate($basePath . "orderdetails/view/" . $row["OrderID"] . "/" . $row["ProductID"]);
        return false;
        }
    }
    return true;
}

O iya, sekedar informasi saja. Contoh kode ini sebenarnya sudah pernah kita bahas pada artikel saya yang berjudul: Menampilkan Data pada Halaman View Jika Sudah Pernah Dientri di PHPMaker 2021. Di artikel tersebut penekanannya adalah bagaimana mudahnya kita me-redirect ke halaman View dari halaman Add. Sedangkan di artikel ini, penekanannya adalah kita dapat me-redirect dari satu Modal dialog ke Modal dialog berikutnya, tanpa harus menutup Modal dialog yang pertama.

Oke, kembali ke kode di atas. Pertama sekali, kita memeriksa data di table orderdetails berdasarkan field OrderID dan ProductID menggunakan global function ExecuteRow. Jika datanya ditemukan, maka tampilkan pesan error, lalu redirect Pengguna Akhir ke halaman View yang menampilkan data yang akan dientri tadi.

Perhatikan bahwa saat me-redirect ke halaman View menggunakan method terminate(), kita menambahkan variable global yang bernama $basePath dimana variabel ini digunakan di file layout.php yang berada di dalam sub-direktori views.

Artinya, karena URL standar/default yang digunakan oleh PHPMaker 2021 adalah orderdetailsview, sementara pada kode di atas tadi kita memisahkan jenis halamannya, sehingga URL nya menjadi orderdetails/view, maka kita wajib menambahkan variabel $basePath sebelum alamat halaman View.

Tujuannya, supaya jendela Modal dialog saat menampilkan halaman View tersebut, tombol dan caption pada Modal dialog nya akan otomatis menyesuaikan. Jika tidak, maka saat halaman View ditampilkan, caption di Modal dialog masih menggunakan Add atau Tambah, dan tombol Add serta Cancel akan terbawa, alias tidak sinkron dengan halaman View.

Sebelum mencoba hasilnya, pastikan kita sudah men-generate ulang semua file script menggunakan PHPMaker 2021 seperti biasa. Setelah itu, silahkan akses aplikasi web yang dihasilkan tersebut melalui browser. Login menggunakan username admin dan password master, lalu cobalah menambahkan data baru yang sudah pernah tersimpan di database melalui menu Order Details.

Saat menambah data, kita menggunakan Modal dialog untuk menampilkan halaman Add. Kemudian sistem me-redirect ke halaman View yang masih menggunakan Modal dialog. Saat data di halaman View ditampilkan, Modal dialog sebelumnya masih aktif dan tidak tertutup.

Satu lagi pengalaman yang luar biasa saat menggunakan PHPMaker 2021. Diam-diam ternyata PHPMaker sudah menambahkan kemampuan ini di versi 2021.

PHPMaker gitu, lho! 😉

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, PHPMaker 2021, PHPMaker Indonesia, 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.

Menampilkan Data Master di Bagian Table Detail pada Master/Detail PHPMaker 2021
Cara Mengatur Timezone di PHPMaker 2021

Comments

  1. sukirno kasau mengatakan

    November 29, 2020 pada 7:16 am

    pak masino saya punya masalah di phpmaker 2021 ketika , hasil generate berjalan lancar di local, semenatara jika saya pindahkan ke hosting, reportnya tidak bisa terbuka pesan errornya “An internal error has occurred while processing your request.”, kira2 masalahya dimn ya? terima kasih sebelumnya

    Balas
    • Masino Sinaga mengatakan

      November 29, 2020 pada 11:08 am

      Aktifkan pengaturan berikut dari menu Tools -> Advanced Settings:
      – Debug
      – Treat PHP warnings and notices as errors

      lalu generate ulang semua file script seperti biasa.

      Setelah itu, upload ulang semua file script ke server hosting, lalu coba lagi akses aplikasi web-nya.

      Balas
  2. sukirno mengatakan

    Januari 5, 2021 pada 1:47 pm

    saya pernah alami yang seperti ini, sy jalankan seperti yang mas masino sarankan,, muncul errornya tapi anehnya kalau saya pindahkan hosting lain, berjalan dengan mulus, jadi kesimpulan saya masalahnya bukan pada phpmakernya tapi pada hostingnya., dan sampai skrg saya belum dapat solusi ahirnysa saya putuskan pindah hosting

    Balas
    • Masino Sinaga mengatakan

      Januari 13, 2021 pada 9:33 am

      Biasanya penyebab kasus seperti itu terjadi karena perbedaan versi PHP yang digunakan oleh hosting yang satu dengan yang lainnya berbeda-beda. Untuk PHPMaker 2021 disarankan untuk menggunakan PHP 7.2 ke atas.

      Balas

Tinggalkan Balasan Batalkan balasan

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pos-pos Terbaru

  • Server Event Page_Render dan Page_Rendering di PHPMaker, Apa Sih Bedanya?
  • Begini Mudahnya Mengubah Judul Browser Secara Dinamis di PHPMaker 2021
  • Solusi Supaya PreviewRow dan PreviewOverlay Bisa Sama-Sama Berfungsi di PHPMaker 2021
  • Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Seperti Ini Mudahnya Menyembunyikan Data Label di Chart dari PHPMaker 2021

Menu

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

Komentar Terbaru

  • Masino Sinaga pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Masino Sinaga pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada PHPMaker 2021
  • Masino Sinaga pada Mudahnya Menambahkan Global Function untuk Auto-Update Field di PHPMaker
  • Abu Syifa pada Setting Import Data Berikut Wajib Anda Ketahui Bedanya di PHPMaker 2021
  • Abu Syifa pada Jangan Pernah Lagi Mencampur Kode PHP di Client Script atau Startup Script pada 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 - 2019 | WordPress | Catat masuk | Kembali ke atas