Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Mudahnya Menghitung Nilai dari Label CheckBox yang Tercentang di PHPMaker
Begini Mudahnya Mengamankan Halaman Eksternal di Aplikasi Web dari PHPMaker
Mudahnya Membatasi Jumlah Record di Halaman Detail Preview dari PHPMaker

Mudahnya Menghitung Nilai dari Label CheckBox yang Tercentang di PHPMaker

Rab, 7 Desember 2016 oleh Masino Sinaga 6 Komentar

Sejak PHPMaker memutuskan untuk selalu menggunakan AJAX pada field yang mengambil nilai ke table lain (Lookup Table), maka hal ini juga berdampak langsung kepada kode HTML yang di-generate oleh PHPMaker untuk field tersebut.

Artinya, jika kita menggunakan control CheckBox atau ComboBox untuk menampilkan nilai dari Lookup Table tadi, maka kode HTML yang kita lihat dari View Page Source browser tidak sesuai dengan sintaks HTML umum untuk me-render control tersebut.

Tidak ada sintaks option value per satu record untuk mengisi nilai data ke dalam control ComboBox, atau tidak ada sintaks untuk menampilkan nilai label/text control CheckBox tadi.

Di satu sisi, tentu saja pasti ada keuntungan menggunakan teknik ini. Apa itu? Yang jelas, cara ini dapat menghemat pemakaian bandwidth karena mengurangi kode HTML yang harus ditampilkan di browser saat itu. Bayangkan jika jumlah record tadi mencapai ratusan atau ribuan, betapa hematnya browser untuk menampilkan kode HTML dari Lookup Table tadi.

Tapi, di sisi yang lain, Web Developer yang baru pertama kali mengenal teknik ini pasti kebingungan. Mengapa? Karena dia tidak tahu bagaimana cara mengambil nilai setiap record dari Lookup Table tadi, untuk selanjutnya diolah berdasarkan business-logic tertentu, misalnya.

Katakanlah kita ingin ketika Pengguna Akhir Aplikasi Web yang dibangun dengan PHPMaker memberi centang pada satu atau beberapa pilihan melalui control CheckBox pada form Add dan Edit, maka sistem akan otomatis menghitung nilai tertentu yang ditampilkan pada bagian label control CheckBox tersebut.

Lalu bagaimana dong solusinya? Hehehe… tenang, tenang… jangan buru-buru panik. Beruntunglah Anda jika selama ini sudah menggunakan PHPMaker, khususnya versi terakhir yaitu 2017 saat saya menulis artikel ini. Mengapa? Karena PHPMaker sudah menyediakan sebuah fungsi Javascript yang bernama ew_GetOptTexts.

Fungsi ini bisa kita gunakan untuk mengetahui data label dari control CheckBox yang sedang terpilih atau yang ada tanda centangnya. Berdasarkan fungsi itulah kita bisa memparsing data atau nilai tertentu yang terdapat di dalamnya. Paham maksudnya, kan? 😉

Supaya semakin jelas dan terang-benderang, langsung saja ikuti langkah-langkah berikut dengan teliti.

  1. Pertama sekali, pastikan Anda sudah membuat sebuah Database MySQL baru, misalkan nama Databasenya adalah test_db,
  2. Selanjutnya eksekusi script SQL berikut untuk membuat dua table baru yang masing-masing bernama hardware dan customer_orders:
    -- ----------------------------
    -- Table structure for hardware
    -- ----------------------------
    DROP TABLE IF EXISTS `hardware`;
    CREATE TABLE `hardware` (
      `ID` int(11) NOT NULL AUTO_INCREMENT,
      `Description` varchar(100) NOT NULL,
      `Price` decimal(10,2) NOT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of hardware
    -- ----------------------------
    INSERT INTO `hardware` VALUES ('1', 'Laptop', '67.00');
    INSERT INTO `hardware` VALUES ('2', 'Desktop', '5.00');
    INSERT INTO `hardware` VALUES ('3', 'Monitor', '3.00');
    
    -- ----------------------------
    -- Table structure for customer_orders
    -- ----------------------------
    DROP TABLE IF EXISTS `customer_orders`;
    CREATE TABLE `customer_orders` (
      `ID` int(11) NOT NULL AUTO_INCREMENT,
      `Orders` varchar(100) NOT NULL,
      `Order_Date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
      `Sum_Order` decimal(10,2) DEFAULT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    

    Ini hanya contoh sederhana. Table customer_orders seharusnya memiliki field ID Customer, tapi untuk saat ini field ID Customer itu tidak kita perlukan, jadi abaikan saja terlebih dulu.

  3. Buat project baru PHPMaker dengan mengarahkan ke Database test_db tadi,
  4. Klik table customer_orders dari panel Database, dan dari bagian Fields setup, klik field Orders,
  5. Pilih control CheckBox, dan beri tanda centang pada pilihan Use lookup table dari panel Edit Tag,
  6. Panel Lookup Table akan muncul di sebelah kanannya, lalu:
    – Pilih table hardware dari property Table name,
    – Pilih field ID dari property Link field,
    – Pilih field Description dari property Display field #1,
    – Pilih field ID dari property Display field #2,
    – Pilih field Price dari property Display field #3.
  7. Tambahkan kode jQuery berikut ke dalam lokasi Client Scripts -> Table-Specific -> Add/Copy Page -> Startup Script:

    $('input:checkbox[name="x_Orders\[\]"]').change(function() {
    	ReCalculate();
    });
    
    function ReCalculate(){
    	var sum = 0;
    	var sdata = "";
    	sdata = ew_GetOptTexts("x_Orders[]", "fcustomer_ordersadd")+''; 
    	items = sdata.split(',');
    	for( var i = 0; i < items.length; i++ ) {
    		var myval = 0;
    		if (i == 2 || (i - 2) % 3 == 0) {
    			myval = parseFloat(items[i]);
    		}
    		sum += myval;
    	}
    	$("#x_Sum_Order").val((sum).toFixed(2)); 
    }
    
  8. Setelah itu, tambahkan juga kode jQuery berikut ke dalam lokasi Client Scripts -> Table-Specific -> Edit Page -> Startup Script:

    $('input:checkbox[name="x_Orders\[\]"]').change(function() {
    	ReCalculate();
    });
    
    function ReCalculate(){
    	var sum = 0;
    	var sdata = "";
    	sdata = ew_GetOptTexts("x_Orders[]", "fcustomer_ordersedit")+''; 
    	items = sdata.split(',');
    	for( var i = 0; i < items.length; i++ ) {
    		var myval = 0;
    		if (i == 2 || (i - 2) % 3 == 0) {
    			myval = parseFloat(items[i]);
    		}
    		sum += myval;
    	}
    	$("#x_Sum_Order").val((sum).toFixed(2)); 
    }
    
  9. Terakhir, generate semua file script menggunakan PHPMaker seperti biasa.

Sekarang, jalankan Aplikasi Web dari browser, klik menu customer orders, klik tombol Add (+), lalu pada form Add yang muncul selanjutnya, Anda akan melihat ada 3 pilihan yang ditampilkan melalui control CheckBox, dengan pilihan kira-kira seperti ini urutannya:

Laptop, 1, 67.00	Desktop, 2, 5.00	Monitor, 3, 3.00

Artinya, setiap pilihan CheckBox memiliki masing-masing 3 informasi dengan urutan: Deskripsi, Kode, dan Harga, yang masing-masing diambil dari field Description, ID, dan Price pada table hardware.

Sekarang, cobalah untuk memberi tanda centang pada CheckBox pertama, maka Anda akan melihat field Sum_Order akan terisi nilai 67.00. Setelah itu, beri tanda centang lagi pada CheckBox kedua, Anda akan melihat field Sum_Order berubah nilainya menjadi 72.00 (67.00 + 5.00). Terakhir, beri tanda centang lagi pada CheckBox ketiga, maka sekarang Anda akan melihat nilai pada field Sum_Order berubah menjadi 75.00 (67.00 + 5.00 + 3.00).

Cobalah juga untuk menghapus satu atau beberapa tanda centang, maka perhatikan lagi nilai pada field Sum_Order. Sistem akan otomatis menyesuaikan setiap kali Pengguna Akhir Aplikasi Web mengklik CheckBox tadi. Artinya, nilai Price dari control CheckBox yang tercentang akan otomatis dijumlahkan, dan hasilnya ditampilkan ke dalam field Sum_Order.

Kesimpulannya, seperti yang sudah disebutkan di atas tadi, PHPMaker ternyata diam-diam sudah menyediakan sebuah Javascript function yang dapat menampilkan label/text yang terdapat pada control CheckBox yang nilainya berasal dari Lookup Table tertentu. Namanya adalah ew_GetOptTexts. Fungsi ini memiliki dua parameter. Parameter pertama adalah ID dari field-nya, dan parameter kedua adalah ID dari form-nya.

Sesuatu yang tadinya kita khawatirkan bagaimana cara mengambil nilai dari control CheckBox yang dihasilkan melalui fitur AJAX, ternyata sudah tersedia solusinya.

Hanya dengan menambahkan sedikit kode jQuery di atas dari bagian Client Scripts, dan mengeset beberapa item pengaturan pada Fields setup, kita sudah bisa menghasilkan Aplikasi Web yang akan otomatis menghitung nilai yang terdapat pada label control CheckBox yang terpilih tersebut.

Bagaimana, PHPMaker keren ‘kan? 😉

Cobalah sekarang bayangkan, jika Anda membangun Aplikasi Web dari titik nol, berapa lama waktu yang akan Anda habiskan untuk menghasilkan fitur yang sama seperti jika kita membangunnya menggunakan PHPMaker? Hohoho… 😀

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, checkbox, Client Scripts, PHPMaker Indonesia, Startup Script, 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.

Begini Mudahnya Mengamankan Halaman Eksternal di Aplikasi Web dari PHPMaker
Mudahnya Membatasi Jumlah Record di Halaman Detail Preview dari PHPMaker

Komentar

  1. Rijal mengatakan

    Rab, 8 Februari 2017 pada 4:49 pm

    Pak Masino saya buat Check Box yang Lookup ke Database .
    saya asumsikan tabel Hardware seperti contoh artikel ini, Ketika saya pilih (centang) Produk Hardware sebanyak 4 buah nanti yg muncul pada List Page hanya ada 3 buah barang saja yang tampil , begitu pula pada View maupun saat Edit Data (yang tercentang hanya 3 saja)
    akan tetapi pada PHPMyadmin benar ada 4 buah.

    kira2 apa ada Setting yang saya Lewatkan ya… ?
    saya sudah coba otak-atik kok masih tetap, dan kalo dipilih lebih dari 5 buah ‘centang’ yang tampil pada List Page tetap hanya 4 buah.

    Balas
    • Masino Sinaga mengatakan

      Rab, 8 Februari 2017 pada 5:34 pm

      Seperti apa nilai yang tersimpan di database untuk field tersebut?

      Balas
      • Rijal mengatakan

        Kam, 9 Februari 2017 pada 7:42 am

        yang tersimpan di Database adalah Text nya (Deskripsi) bukan Kode nya..
        apa Mungkin karena itu ya ?
        padahal Field nya sdh saya set ukurannya Varchar 250. (secara Logika cukup untuk menampung beberapa Deskripsi Item Prooduk/ bukan Kode nya)

        Balas
        • Masino Sinaga mengatakan

          Kam, 9 Februari 2017 pada 12:09 pm

          Harus data Kodenya yang disimpan, bukan Deskripsinya.

          Balas
  2. adji mengatakan

    Sel, 1 Agustus 2023 pada 5:26 pm

    pak masino , untuk versi 2023 apa script beda pak? saya coba script di atas ndk berhasil. minta bantuan nya pak script nya untuk 2023. terima kasih sebelumnya

    Balas
    • Masino Sinaga mengatakan

      Rab, 2 Agustus 2023 pada 9:30 am

      Betul. Ada sedikit perbedaan. Untuk versi 2023:

      Ganti kode ini:

      $('input:checkbox[name="x_Orders\[\]"]').change(function() {
      

      menjadi:

      $('[data-field="x_Orders"]').change(function() {
      

      Lalu ganti kode yang ini:

      ew_GetOptTexts
      

      menjadi:

      ew.getOptionTexts
      
      Balas

Tinggalkan Balasan ke adji 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 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
  • Alasan 16 Harus Pakai Masino Extensions: Confirm Before Save

Menu

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

Komentar Terbaru

  • Demo Masino Extensions for PHPMaker 2026 – Masino Sinaga pada Fitur-Fitur Masino Extensions untuk PHPMaker 2024
  • Masino Sinaga pada Kode Javascript yang Berubah di PHPMaker 2026 dari PHPMaker 2025
  • Angg* pada Kode Javascript yang Berubah di PHPMaker 2026 dari PHPMaker 2025
  • Masino Sinaga pada Cara Menampilkan Tombol Close di Footer Modal buat Custom File yang SkipHeaderFooter-nya Bernilai True
  • Masino Sinaga pada Cara Menampilkan Tombol Close di Footer Modal buat Custom File yang SkipHeaderFooter-nya Bernilai True

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 - 2026 | WordPress | Catat masuk | Kembali ke atas