Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Mudahnya Menerapkan Master/Detail di Aplikasi Web yang Dibangkitkan oleh PHPMaker
Custom View Tags: Cara Mudah Mengkostumais Nilai Field dari PHPMaker
Menerapkan Regional Setting di Aplikasi Web yang Dibangkitkan oleh PHPMaker

Mudahnya Menerapkan Master/Detail di Aplikasi Web yang Dibangkitkan oleh PHPMaker

Jum, 18 April 2014 oleh Masino Sinaga 25 Komentar

Ketika Anda membuat relasi Master/Detail, Anda menghubungkan dua buah Tables sehingga semua record dari salah satu tabel (tabel Detail) selalu terkait dengan satu record di tabel lainnya (tabel Master). Setiap Table dapat memiliki beberapa table Master dan juga beberapa table Detail.

PHPMaker sebagai tools PHP Code Generator sudah menyediakan fitur Master/Detail yang memungkinkan Web Developer dapat membuat halaman yang terdiri dari beberapa tabel yang memiliki relasi Master/Detail dengan mudah, cepat, dan menyenangkan. Fitur Master/Detail berada di bawah menu tab Table. Supaya Anda dapat menampilkan menu tab Table, maka pastikan Anda sudah memilih (klik) salah satu object Table dari panel Database.

Anda dapat membuat relasi Master/Detail (One-To-Many) di antara dua buah tabel dengan cara sebagai berikut:

  1. Pilih sebuah Table di grid table,
  2. Di panel [Master/Detail] pada bagian paling bawah sebelah kanan, klik [Modify…] untuk menampilkan editor visual relasi Master/Detail.
  3. Klik [Add table] untuk menambahkan table Master dan Detail ke dalam diagram.
  4. Buat relasi di antara mereka dengan cara menyeret (drag) field di table Master (field kunci di table Master) ke field Detail (field foreign key di table Detail). Jika ada lebih dari satu field yang ingin direlasikan, ulangi langkah tadi sampai semua relasi berhasil dibentuk.

Jika Anda ingin menghapus relasi suatu Master/Detail, pilih link pada diagram, lalu klik [Delete]. Setelah itu, klik tombol [OK] untuk mengkonfirmasikan.

Sejak versi 10, PHPMaker menambahkan tiga buah fitur baru di Master/Detail yang memungkinkan Web Developer menentukan apakah dalam relasi Master/Detail tersebut diterapkan beberapa aturan untuk menjaga integritas data antara table Master dan Detail. Kalau dulu Anda pernah mencoba Referential Integrity, Cascade Delete, dan Cascade Update di database Microsoft Access, maka seperti itu jugalah fitur yang akan kita bahas berikut.

Referential Integrity

Fitur ini memaksa Pengguna tidak dapat menambah/mengubah sebuah record di table Detail, kecuali data di field yang bertindak sebagai foreign key, mengacu ke sebuah record yang valid di table Master. Pengguna aplikasi web Anda akan melihat pesan bahwa foreign key dari record yang akan ditambah/diubah tidak mengacu ke record yang valid di table Master. Dengan kata lain, data di table Detail hanya bisa diubah jika data foreign key di table Master sudah terdapat di sana.

Cascade Delete

Fitur ini mengatur jika sebuah record di table Master dihapus, maka semua record yang terkait di table Detail akan dihapus juga. Sebelum fitur ini ditambahkan di PHPMaker, maka Anda harus menangani kemungkinan tersebut dengan menggunakan Server Events di PHPMaker. Perlu diingat bahwa jika Anda sudah menggunakan ON DELETE CASCADE pada Table di database, maka Anda tidak perlu mengaktifkan fitur ini. Hanya gunakan fitur ini jika database Anda tidak mendukung ON DELETE CASCADE.

Cascade Update

Fitur ini akan mengatur jika kunci utama primary key untuk sebuah record yang berada di table Master diubah/diperbarui, maka semua record yang terkait di table Detail akan diperbarui. Sebelum fitur ini ditambahkan di PHPMaker, maka Anda harus menangani kemungkinan tersebut dengan menggunakan Server Events di PHPMaker. Perlu diingat bahwa jika Anda sudah menggunakan ON UPDATE CASCADE pada Table di database, tidak perlu mengaktifkan pengaturan ini. Hanya gunakan fitur ini jika database yang Anda gunakan tidak mendukung ON UPDATE CASCADE.

Tidak berhenti di situ saja. Sejak PHPMaker versi 10, Anda sebagai Web Developer dapat mengoptimalkan fitur Master/Detail Add untuk membuat form untuk menginput data yang melibatkan satu table Master dengan beberapa table Detail. Hal yang sama juga dengan fitur Master/Detail Edit untuk mengubah data yang melibatkan satu table Master dengan beberapa table Detail, dan Master/Detail View untuk menampilkan data yang melibatkan satu table Master dengan beberapa table Detail.

Bahkan, PHPMaker juga memungkinkan Pengguna aplikasi web Anda nantinya menambahkan, mengubah, dan menghapus beberapa record di bagian Detail dalam format grid table (Grid-Add dan Grid-Edit), sebelum akhirnya menyimpan semua perubahan tadi ke database cukup dengan sekali klik saja.

Ditempatkan di bawah: PHPMaker Ditag dengan:Cascade Delete, Cascade Update, Master/Detail, ON DELETE CASCADE, ON UPDATE CASCADE, PHPMaker Indonesia, Referential Integrity

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.

Custom View Tags: Cara Mudah Mengkostumais Nilai Field dari PHPMaker
Menerapkan Regional Setting di Aplikasi Web yang Dibangkitkan oleh PHPMaker

Komentar

  1. jen mengatakan

    Kam, 24 April 2014 pada 9:21 am

    Bang Masino..
    Mohon pencerahannya.. Gimana caranya supaya bisa menapilkan beberapa tabel sekaligus di master/detail? kalau saya aktifkan “multiple detail tables” tidak terjadi apa-apa setelah klik tombol master/detail. kalau tidak diaktifkan, harus pilih detailnya satu-satu.. cukup merepotkan.. 🙂

    thanks in advance..

    Balas
    • Masino Sinaga mengatakan

      Kam, 24 April 2014 pada 10:15 am

      Mengaktifkan “Multiple detail tabels” itu baru hanya untuk tabel master-nya. Sedangkan untuk tabel-tabel detail-nya, pastikan juga Anda sudah mengaktifkan setting “Master/Detail Add (as Detail)”, “Master/Detail Edit (as Detail)”, dan “”Master/Detail View (as Detail)”.

      Balas
      • jen mengatakan

        Kam, 24 April 2014 pada 6:59 pm

        thank you so much Master.. it perfectly works..

        Balas
  2. firman mengatakan

    Kam, 7 Agustus 2014 pada 3:47 pm

    mas saya mau tanya ,
    ini saya buat relasi tabel a dan tabel b hasilnya kalau di klik ada pilihan add tapi kenapa kalau saya buat relasi tabel A tabel B tabel C tidak mau keluar tanda add nya dan nama nya berubah menjadi master detail ? bagaimana solisinya???

    Balas
    • Masino Sinaga mengatakan

      Kam, 7 Agustus 2014 pada 5:39 pm

      Maksudnya Tabel C adalah detail dari Tabel B, dan Tabel B adalah detail dari Tabel A, gitu? Atau bagaimana?

      Balas
      • firman mengatakan

        Sel, 19 Agustus 2014 pada 10:56 am

        kemarin udah bisa mas ternyata … masalahnya master detailnya kecentang …. btw emang kalau master detailnya kecentang itu ga bisa kita add item ya …

        oh iya mau tanya lagi mas gimana cara nya supaya text field itu bisa lebih dari satu tapi di simpannya dalam 1 field kayak kalau kita buat check box kan bisa milih banyak item tapi ini bedanya di ketikan soal nya item ya kan banyak mungkin contoh nya seperti http://jsfiddle.net/gtWu3/ , kalau kasus nya seperti ini umpamanya sudah ada data base penyakit nah kemudian saya tinggal ketikan umpama panas dan batuk nanti kesimpan dalam 1 field yang sama ..

        thx 😀

        Balas
  3. veronice mengatakan

    Sel, 16 September 2014 pada 2:22 am

    mas, kalo mau nampilin relasi one-to-many di access gmn ya?
    punyaku yg muncul cuma garis relasinya, g ada tulisan 0 .. 1 gitu.
    mhn bantuanya,

    Balas
    • Masino Sinaga mengatakan

      Sel, 16 September 2014 pada 9:00 am

      Di Access atau di PHPMaker? Ini kan membahas tentang PHPMaker, kok jadi lari ke Access? 🙂

      Balas
  4. irsyad mengatakan

    Sel, 3 Februari 2015 pada 3:57 pm

    Mas saya mau tanya untuk One-To-One buat Master/Detail.
    Saya pengen bikin Master/Detail untuk One-To-One.
    Kalau bawaan PHP maker One-To-Many, Many-To-One.

    Balas
    • Masino Sinaga mengatakan

      Sel, 3 Februari 2015 pada 4:10 pm

      Pada dasarnya, relasi tabel Master/Detail adalah One-To-Many. Jika ingin membuat One-To-One, tinggal buat validasi saja saat menambahkan data di tabel Detail, hitung jumlah Record berdasarkan key di tabel Master. Jika sudah ada satu, maka proses penambahan Record berikutnya langsung dibatalkan.

      Gunakan server event Row_Inserting. Baca topik Server Events and Client Scripts dari menu Help PHPMaker untuk informasi dan contoh lebih lanjut.

      Balas
      • irsyad mengatakan

        Sel, 3 Februari 2015 pada 4:54 pm

        tapi kalau kayak gitu jadi semua tabel detail validasi penambahan tidak berlaku?
        dari beberapa tabel detail saya itu ada yang memang di perlukan one to many.
        tapi ada beberapa tabel saya perlu tabel tersebut one to one

        Balas
        • Masino Sinaga mengatakan

          Sel, 3 Februari 2015 pada 5:02 pm

          Anda bisa meng-clone tabel Detail yang sudah ada menjadi tabel Detail yang lain, lalu gunakan untuk relasi yang Anda inginkan, apakah One-To-One, atau One-To-Many.

          Balas
          • irsyad mengatakan

            Sel, 3 Februari 2015 pada 6:01 pm

            wah mas, saya bingung.
            hasilnya saya mau ubah default format grid add nya detail ajah deh mas, gmn yah?
            supaya pas add master detail. tabel yg saya mau row nya tidak berisi 5 baris

            Balas
            • Masino Sinaga mengatakan

              Rab, 4 Februari 2015 pada 8:34 am

              Kalau bingung, ya belajar lagi dong yang sungguh-sungguh, hehehe… 🙂

              Jika mau mengganti default jumlah row di tabel detail saat tambah data, cukup masukkan kode ini ke dalam server event Page_Load dari halaman List milik table detail, lalu generate ulang file script dengan PHPMaker:

              
              $this->GridAddRowCount = 3; // <-- misalkan ganti menjadi 3 baris
              
              
              Balas
  5. ame isfine mengatakan

    Rab, 6 Juni 2018 pada 11:15 am

    Pagi pak Masino, saya punya Master Table dan Detail Table, hanya saja kondisinya foreign key nya ada beberapa field (di Detail Table) yang berisi data tidak sama, karena dia dihasilkan dari Multiple Select. Jika berisi satu data maka relationshipnya normal terjadi, sementara yg multidata jadi tidak terbaca.

    bagaimana supaya bisa membaca field yang berisi multidata hasil dari multiple select tersebut (datanya dipisah koma)? adakah cara untuk bisa menghasilkan relationship dg Master? Atas help n tipsnya makasih.

    Balas
    • Masino Sinaga mengatakan

      Jum, 8 Juni 2018 pada 11:21 pm

      Kalau tujuannya untuk membuat relationship Master/Detail, maka Anda harus memproses nilai multiple select tadi menjadi beberapa record sesuai banyaknya nilai data yang disimpan tadi. Untuk ini, maka sebaiknya Anda harus membuat tabel baru yang menyimpan setiap nilai tersebut dalam masing-masing record.

      Balas
      • ame isfine mengatakan

        Sen, 11 Juni 2018 pada 3:04 pm

        Yang menyulitkan saya adalah karena jumlah data (dari multiple select ) ini bervariasi tidak tetap jumlahnya sehingga sy tidak bisa membuat tablenya. Lalu saya coba membuat view dengan tujuan datanya ter-ekstract dan diberi unique-ID.

        Code view saya :

        SELECT SubString_Index(SubString_Index(t.ref_num, ‘,’, n.n), ‘,’, -1) AS Refnum,
        t.Purchase_Number,
        t.Supplier_ID
        FROM a_purchases t
        CROSS JOIN (SELECT a.N + b.N * 10 + 1 n
        FROM (SELECT 0 AS N
        UNION ALL
        SELECT 1
        UNION ALL
        SELECT 2
        UNION ALL
        SELECT 3
        UNION ALL
        SELECT 4
        UNION ALL
        SELECT 5
        UNION ALL
        SELECT 6
        UNION ALL
        SELECT 7
        UNION ALL
        SELECT 8
        UNION ALL
        SELECT 9) a,
        (SELECT 0 AS N
        UNION ALL
        SELECT 1
        UNION ALL
        SELECT 2
        UNION ALL
        SELECT 3
        UNION ALL
        SELECT 4
        UNION ALL
        SELECT 5
        UNION ALL
        SELECT 6
        UNION ALL
        SELECT 7
        UNION ALL
        SELECT 8
        UNION ALL
        SELECT 9) b
        ORDER BY n) n
        WHERE n.n <= 1 + (Length(t.ref_num) – Length(Replace(t.ref_num, ',', '')))
        ORDER BY Refnum

        Hasilnya :
        1. Jika saya Execute (F9) hasilnya keluar dengan benar (datanya ter-extract)
        2. Tapi tidak bisa create view, muncul error #HY000View's SELECT contains a subquery in the FROM clause

        saya sudah googling ini error karena versi mysql yg tidak support padahal mysql sy sudah updated. Mohon pencerahannya mungkin ada tips untuk berubah syntax atau apanya Pak. Thank in advance

        Balas
        • Masino Sinaga mengatakan

          Sen, 11 Juni 2018 pada 3:18 pm

          Justru karena jumlah recordnya bervariasi itulah, makanya Anda harus membuat tabel baru, di mana untuk setiap nilai yang Anda extract dari multiple values tadi, dikonversikan ke satu record.

          Jadi, misalnya multiple values-nya adalah 7,8,9,10,11 maka di tabel baru tersebut akan terbentuk 5 record hasil pemecahan dari multiple values tadi. Jadi, tidak membuat View yang justru menimbulkan error tersebut. Ngerti maksudnya kan?

          Balas
          • ame isfine mengatakan

            Sel, 12 Juni 2018 pada 10:05 am

            Masih coba sy cerna Pak. Logikanya udah nangkep tapi blum nemu sysntaxnya. Makasih banyak pak

            Balas
            • Masino Sinaga mengatakan

              Sel, 12 Juni 2018 pada 11:59 am

              Sama-sama. Saya kasih clue-nya ya untuk mengambil setiap nilai dari multiple values tadi.

              Anda bisa menggunakan fungsi PHP yang bernama explode(). Google aja, banyak contoh2 penggunaannya.

              Balas
            • ame isfine mengatakan

              Rab, 13 Juni 2018 pada 3:22 pm

              Saya sudah bisa pake explode di Row_Inserted

              $ponumber = $rsnew[“Purchase_Number”];
              $ar = explode(‘,’, $rsnew[“ref_num”]);
              foreach ($ar as $value) {
              ew_Execute(“INSERT INTO a_refnumpo (PO_Number, Ref_Num) VALUES (‘$ponumber’, ‘$value’)”);
              }
              }

              sekarang sy bingung untuk event Row_Updated nya…
              gimana ya mendeteksi perubahan / pengurangan value ..??

              Sebelumnya makasih

              Balas
              • Masino Sinaga mengatakan

                Kam, 14 Juni 2018 pada 11:35 am

                Ya tinggal dibandingkan aja nilai field pada $rsnew dan $rsold.

                Balas
  6. Bayu mengatakan

    Rab, 10 Juni 2020 pada 2:10 pm

    Bang.
    Membuka page yang ada master detail. Saya add detail 15. Save. Lancar.
    Tetapi setelah detail ke 16, maka kalau add sekaligus 2 atau 3, kemudian Save, malah blank.
    Kayak lemot banget.
    Kenapa ya Bang?

    Terima kasih.

    Balas
  7. Eka Dalas Pangestu mengatakan

    Sel, 15 Februari 2022 pada 3:31 pm

    Hallo pak masino
    apakah bisa tampilannya selain grid add pak ? saat ini menambahkan data
    Terima Kasih

    Balas

Trackbacks

  1. Mudahnya Menyembunyikan Tombol Add di Halaman Detail dari PHPMaker – Masino Sinaga berkata:
    Kam, 20 November 2014 pukul 11:19 am

    […] Beruntung sekalilah Anda jika menggunakan PHPMaker, karena Anda dapat mengimplementasikannya dengan sangat mudah dan cepat. PHPMaker memberikan banyak sekali kemudahan kepada Web Developer untuk membuat fungsi-fungsi yang te…. […]

    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

  • 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
  • Charly pada PHPMaker: PHP Code Generator + PHP Framework
  • Charly 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