Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Menyimpan Data ke Dua Table Sekaligus di Aplikasi Web dari PHPMaker
Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
Mudahnya Mengubah Icon di Tombol pada Aplikasi Web dari PHPMaker

Menyimpan Data ke Dua Table Sekaligus di Aplikasi Web dari PHPMaker

Rab, 17 Juni 2015 oleh Masino Sinaga 20 Komentar

Saya yakin bahwa sebagai Web Developer kita pasti pernah ingin mengimplementasikan sebuah business-logic yang mengharuskan menyimpan data yang mirip (serupa tapi tak sama) ke dalam dua buah Table sekaligus. Artinya, saat Pengguna mengklik tombol Simpan satu kali, maka sistem akan menyimpan data yang diinput tadi ke dalam dua Table di Database sekaligus.

Di atas tadi saya mengatakan serupa tapi tak sama. Maksudnya adalah, data yang diinput di sebuah form terdiri dari data yang memiliki struktur Table yang mirip, tapi tidak sama. Bingung maksudnya? Jangan bingung dulu, karena di bawah ini saya sertakan contoh yang sederhana agar mudah dipahami.

Katakanlah kita memiliki dua buah table yang masing-masing bernama table1 dan table2. Kedua table tersebut juga masing-masing memiliki dua buah Field; tapi nama Field di kedua Table tadi berbeda (meskipun mirip), seperti yang ditunjukkan pada script SQL di bawah ini.

-- ----------------------------
-- Table structure for table1
-- ----------------------------
DROP TABLE IF EXISTS `table1`;
CREATE TABLE `table1` (
  `Kode1` char(3) NOT NULL,
  `Deskripsi1` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`Kode1`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- ----------------------------
-- Table structure for table2
-- ----------------------------
DROP TABLE IF EXISTS `table2`;
CREATE TABLE `table2` (
  `Kode2` char(3) NOT NULL,
  `Deskripsi2` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`Kode2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Perhatikanlah bahwa untuk Table table1, maka nama Field-nya adalah Kode1 dan Deskripsi1. Sedangkan untuk Table table2, maka nama Field-nya adalah Kode2 dan Deskripsi2. See? Sudah mulai jelas apa yang saya maksudkan dengan istilah serupa tapi tak sama?

Untuk memudahkan pengimplementasiannya, maka berikut ini saya sertakan contoh data untuk kedua Table di atas tadi, seperti yang ditunjukkan pada SQL berikut:

-- ----------------------------
-- Records of table1
-- ----------------------------
INSERT INTO `table1` VALUES ('001', 'Satu');
INSERT INTO `table1` VALUES ('002', 'Dua');
INSERT INTO `table1` VALUES ('003', 'Tiga');
INSERT INTO `table1` VALUES ('004', 'Empat');

-- ----------------------------
-- Records of table2
-- ----------------------------
INSERT INTO `table2` VALUES ('001', 'One');
INSERT INTO `table2` VALUES ('002', 'Two');
INSERT INTO `table2` VALUES ('003', 'Three');
INSERT INTO `table2` VALUES ('004', 'Four');

Dari masing-masing 4 Record di kedua Table barusan, saya berharap sekarang Anda sudah semakin paham lagi dengan istilah serupa tapi tak sama yang saya maksudkan di atas tadi. Ya, dalam hal ini kedua Table memiliki relasi pada field Kode1 dan Kode2.

Dari kedua Table tersebut, selanjutnya kita harus membuat sebuah object baru di dalam Database berupa View (Database View). Katakanlah nama View tersebut adalah table1_join_table2. View ini nantinya digunakan sebagai dasar untuk membuat User Interface (Antar Muka Pengguna), yang digunakan untuk menginput data yang bertalian.

Seperti namanya, View tersebut akan men-join-kan kedua Table di atas tadi. Field yang digunakan sebagai relasi antara keduanya adalah Kode1 dan Kode2, seperti yang ditunjukkan pada SQL berikut:

-- ----------------------------
-- View structure for table1_join_table2
-- ----------------------------
DROP VIEW IF EXISTS `table1_join_table2`;
CREATE VIEW `table1_join_table2` AS SELECT
table1.Kode1,
table1.Deskripsi1,
table2.Deskripsi2
FROM
table1
INNER JOIN table2 ON table1.Kode1 = table2.Kode2 ;

Perhatikan bahwa hanya ada 3 Field yang ditampilkan, yaitu Kode1, Deskripsi1, dan Deskripsi2.

Nah, berdasarkan View ini, maka kita dapat membangkitkan halaman Add yang dihasilkan oleh PHPMaker. Tapi, supaya sistem dapat memasukkan ke dalam 2 Table tadi sekaligus, maka kita hanya perlu memasukkan kode berikut ke dalam server event Row_Inserting milik object View table1_join_table2 tersebut.

Kode selengkapnya di server event Row_Inserting tadi adalah seperti ini:

// Row Inserting event
function Row_Inserting($rsold, &$rsnew) {
	// Enter your code here
	// To cancel, set return value to FALSE

	ew_Execute("INSERT INTO table2 VALUES ('".$rsnew["Kode1"]."', '".$rsnew["Deskripsi2"]."')");

	$this->UpdateTable = "table1";
	unset($rsnew["Deskripsi2"]);

	return TRUE;
}

Perhatikanlah bahwa dalam hal ini kita harus mengeksekusi terlebih dulu perintah INSERT INTO ke dalam table2 dengan menggunakan global function ew_Execute(). Mengapa? Karena jika perintah ini berada di urutan terakhir, maka data pada field Deskripsi2 akan hilang karena harus di-unset saat memasukkan data ke table1.

Untuk memasukkan data ke Table table1, maka kita hanya perlu mengeset property UpdateTable milik object Table/Page dengan nilai table1. Pastikan juga kita harus mengeluarkan nilai pada field Deskripsi2, karena field ini tidak terdapat di dalam table1. Caranya cukup dengan meng-unset field Deskripsi2.

Setelah semua file script di-generate ulang dari PHPMaker, maka untuk membuktikannya, cobalah untuk menambahkan Record yang kelima. Nilai di ketiga Field tersebut masing-masing adalah 005, Lima, dan Five. Setelah proses penambahan Record selesai, periksalah data di kedua Table tadi, seharusnya sudah terisi dengan data sebagaimana yang diharapkan.

Sebagai informasi tambahan, teknik di artikel ini sebenarnya mirip dengan artikel yang dulu sudah pernah saya tulis berjudul Mudahnya Mengelola Data yang Melibatkan Lebih Satu Table Melalui PHPMaker. Silahkan Anda bandingkan sendiri perbedaan di antara keduanya.

Betapa mudah, cepat, dan menyenangkan sekali, bukan? 😀

Ditempatkan di bawah: PHPMaker Ditag dengan:Belajar PHPMaker, PHPMaker Indonesia, Row_Inserting, Server Events, Tutorial PHPMaker, UpdateTable

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.

Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
Mudahnya Mengubah Icon di Tombol pada Aplikasi Web dari PHPMaker

Komentar

  1. ihsan mengatakan

    Kam, 18 Juni 2015 pada 7:27 pm

    Bagus pak artikelnya, kebetulan sy blm menggunakan phpmaker krn saat ini msh menggunakan aplikasi sejenis yg lain kalau blh bertanya apakah ‘event’ di phpmaker dpt memproses query array yg cukup banyak misalkan mengambil data 1 set data master/detail invoice sekaligus dan menginsert/mengupdate sebagiannya ke tabel stok ( perintah di trigger dr master invoice). Terima kasih atas pencerahannya

    Balas
    • Masino Sinaga mengatakan

      Kam, 18 Juni 2015 pada 7:37 pm

      Bisa. Silahkan baca dan pelajari topik Server Events and Client Scripts dari menu Help PHPMaker. Kalau sudah dipelajari, seharusnya Anda akan menemukan yang cocok dengan kebutuhan, khususnya Row_Inserting dan Row_Updating.

      Tergantung pengertian sebagian yang Anda maksud itu data yang mana? Intinya, Anda bisa mengoptimalkan server event di table master atau table detail yang terkait. Selamat mencoba.

      Balas
      • ihsan mengatakan

        Kam, 18 Juni 2015 pada 8:27 pm

        Terima kasih, saya akan baca di help phpmaker sesuai arahan, kebetulan memang saya banyak dapat referensi berguna dari forum pengguna phpmaker walaupun saya belum menggunakannya dengan alasan tampilan akhir yang perlu waktu untuk touch up sebelum deploy (tidak bisa langsung pakai seperti maestro sql). terima kasih atas responnya

        Balas
        • Masino Sinaga mengatakan

          Jum, 19 Juni 2015 pada 8:21 am

          Sama-sama.

          Balas
  2. Agil Pradisha Rosandanu mengatakan

    Sel, 12 April 2016 pada 11:50 am

    bagaimana jika menyimpan dalam 2 tabel yang berbeda dengan fields yang berbeda pula?

    apakah bisa diaplikasikan dengan kondisi itu?

    termia kasih

    Balas
    • Masino Sinaga mengatakan

      Sel, 12 April 2016 pada 1:05 pm

      Gunakan server event Row_Inserted untuk mengeksekusi SQL INSERT INTO ke table lain.

      Balas
  3. sidik mengatakan

    Sel, 7 Juni 2016 pada 9:39 am

    Pak Masino saya sudah menjalankan bebera contoh yg diatas hanya bagian terakhir saya belum mengerti

    Untuk memasukkan data ke Table table1, maka kita hanya perlu mengeset property UpdateTable milik object Table/Page dengan nilai table1. Pastikan juga kita harus mengeluarkan nilai pada field Deskripsi2, karena field ini tidak terdapat di dalam table1. Caranya cukup dengan meng-unset field Deskripsi2.

    Balas
    • Masino Sinaga mengatakan

      Rab, 8 Juni 2016 pada 8:07 am

      Belum mengerti? Kan sudah ada contoh kode-nya di server event Row_Inserting itu? Ya itu penjelasan dari kode tersebut.

      Balas
      • devi mengatakan

        Rab, 22 Juni 2016 pada 10:55 am

        maaf, mungkin maksud pak sidik adalah bagaimana langkah2 melakukan perintah yang ada pada contoh diatas karena beliau masih belum/tidak tahu cara penggunaan software phpmaker ini, mari kita lebih bijaksana membantu sesama.

        Balas
        • Masino Sinaga mengatakan

          Rab, 22 Juni 2016 pada 11:03 am

          Langkah-langkahnya? Silahkan baca ulang lagi artikel di atas dengan teliti. Tidak ada yang sulit di artikel ini jika Anda membacanya dengan teliti karena struktur table pun sudah disertakan.

          Balas
  4. arahman mengatakan

    Sel, 27 Desember 2016 pada 11:43 am

    pak saya mau tanya, bagaimana mencegah agar tidak benturan dengan klien lain saat di input, mengingat insert ini menggunakan ceklis box, dimana setiap 1 ceck box mempunyai id kunci, jika kita cek 100 maka otomatis terinsert data dengan id 100 dan jika hanya 2 maka idnya 2, nah bagaimana jika klien lain juga menginsert sehingga id 1-100 tidak benturan dengan idkunci dari proses insert klien lain, apakah yang kita pakai dalam fungsi inser tersebut, jika klien mencoba insert dari lokasi lain secara bersamaan, sehingga klien yang satu mendapat id 1-100 dan yang satu lagi 101.

    Balas
    • Masino Sinaga mengatakan

      Sel, 27 Desember 2016 pada 12:18 pm

      Jika Anda menggunakan ID yang AutoIncrement seperti di MySQL, maka tidak perlu ditangani dari sisi Aplikasi. Sistem Database yang akan otomatis menanganinya, sehingga tidak akan mungkin bentrok dengan user lain.

      Balas
  5. Ajeng mengatakan

    Kam, 29 Desember 2016 pada 3:05 pm

    Pak kalo mau inputin data nah salah satu fieldnya itu ngambil dari primary key table lain, terus dalam inputannya itu udah ada pilihan primary key yang ada di table lain nah ketika kita milih pknya terus diinputin, data berdasarkan pk yang kita pilih tuh berkurang ters masuk ke tabel inputan tadi, caranya gimana ya pak?

    Balas
    • Masino Sinaga mengatakan

      Kam, 29 Desember 2016 pada 6:44 pm

      Caranya? Tinggal tulis saja kode untuk memeriksa/mengambil/mengolah nilai tadi pada server event Row_Inserted.

      Baca topik Server Events and Client Scripts dari menu Help PHPMaker untuk info lebih lanjut.

      Balas
  6. pujiarahman mengatakan

    Sel, 7 Maret 2017 pada 9:19 am

    Pak Marsino,

    Saya buat 2 table.

    tb_kode
    id, kode, nama, tanggal, pic

    tb_kodes
    id, kode, nama, tanggal, pic

    di tb_kode saya masukan perintah
    di common – Row_Inserterd
    ew_Execute(“INSERT INTO tb_kodes(kode, nama, tanggal, pic) values (‘” . $rsnew[“kode”] . “‘, ‘” . $rsnew[“nama”] . “‘, ‘” . $rsnew[“tanggal”] . “‘, ‘” . $rsnew[“pic”] . “‘)”);
    }

    jika tanpa gambar sukses apa yang saya masukan di tb_kode akan
    ada di tb_kodes hanya jika menggunakan gambar eror..

    Failed to execute SQL. Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–’ at line 1

    pencerahannya lagi pak hehe

    Balas
    • Masino Sinaga mengatakan

      Sel, 7 Maret 2017 pada 4:49 pm

      Image-nya jangan diupload ke Database. Gunakan Upload to Folder.

      Balas
  7. sela mengatakan

    Kam, 6 April 2017 pada 2:27 pm

    mas saya punya case,
    saya punya table master yaitu master barang yang isi field nya code,name,satuan dan jumlah
    dan tablen untuk menambahkan jumlah stok di transaksi saya yang isi fieldnya stok_barang code,total

    pada saat saya mau memasukan stok dan bisa langsung update jumlah di table stok_barang itu gmana caranya yah untuk bikin function save?

    saya menggunakan php ci, saya masih baru menggunakan ini.

    yang saya input berdasarkan code

    function add($save)
    {
    $this->db->insert(‘stok_barang’,$save);

    //pada saat save gimana caranya bisa langsung ke update jumlahnya ke table barang

    }

    Balas
    • Masino Sinaga mengatakan

      Kam, 6 April 2017 pada 7:34 pm

      Maaf, belum bisa bantu, karena tidak terkait dengan PHPMaker.

      Balas
  8. lara mengatakan

    Rab, 15 November 2017 pada 11:44 am

    pak bagaimana caranya mengkoneksikan form login ke database yang saya buat

    Balas
    • Masino Sinaga mengatakan

      Jum, 17 November 2017 pada 3:17 pm

      Baca topik Quick Start dari menu Help PHPMaker.

      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

  • Begini Mudahnya Mengubah Lebar Modal Dialog di PHPMaker 2022
  • Item Menu Tetap Aktif Meskipun Sedang Menampilkan Halaman Tambah, Ubah, Tampilkan, Cari di PHPMaker 2022
  • 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

Menu

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

Komentar Terbaru

  • Masino Sinaga pada Project Stock Inventory untuk PHPMaker 2022 Sekarang Sudah Bisa Didownload
  • Stanislaus Ariyanto pada Project Stock Inventory untuk PHPMaker 2022 Sekarang Sudah Bisa Didownload
  • Masino Sinaga pada Mudahnya Mendapatkan Info Pengguna Setelah Login di Aplikasi Web dari PHPMaker
  • irwan pada Mudahnya Mendapatkan Info Pengguna Setelah Login di Aplikasi Web dari PHPMaker
  • Masino Sinaga pada Ini Dia Fitur-Fitur yang Terdapat di Masino Extensions untuk PHPMaker 2022

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