Input Data Barang dengan JQuery, FlexiGrid, JQueryUI dan JSON
Pada tutorial kali ini saya akan membuat form barang yang dapat memproses input, edit dan hapus data, ato bahasa krennya CRUD (Create, Read, Update dan Delete). kita harus mengunduh file-file yang dibutuhkan seperti :
- JQuery
- JQueryUI
- FLexiGrid. mudah-mudahan ada perkembangan lagi.
- XAMPP, bagi yang belum memiliki webservernya.
tutorial kali ini ada dapat menggunakan database sebelumnya disini, akan tetapi jangan kawatir saya tetap akan membahasnya.
Langsung aja ke materi :
Tahap Pertama membuat database.
Struktur database dan contoh datanya
CREATE TABLE `tbbarang` ( `kodebarang` char(25) NOT NULL, `namabarang` varchar(100) DEFAULT NULL, `hargabeli` int(11) DEFAULT NULL, `hargajual` int(11) DEFAULT NULL, `stokawal` smallint(6) DEFAULT NULL, PRIMARY KEY (`kodebarang`) );
INSERT INTO `tbbarang` VALUES ('001', 'TOP Kopi', '950', '1000', '1000'); INSERT INTO `tbbarang` VALUES ('002', 'Pulpy Orange', '4500', '5000', '10');
Tahap Kedua membuat Folder
Buatlah folder databarang pada folder HTDOCS kalo Anda menggunakan XAMPP. setelah itu buatlah sub folder yang khusus menyimpan file-file yang dibutuhkan
- Folder css (untuk menyimpan file css)
- Folder images (untuk menyimpan file gambar)
- Folder js (untuk menimpan file javascrip/jquery)
Tahap Ketiga membuat file koneksi.php
isi file seperti berikut :
Tahap Keempat membuat file index.php ada di file unduh.
Tahap Kelima membuat file post-json.php
Tahap Keenam membuat file ajax.js
// JavaScript Document $(document).ready(function(){ $("#kode").keyup(function(e){ var isi = $(e.target).val(); $(e.target).val(isi.toUpperCase()); }); $("#hargabeli").keypress(function(data){ if (data.which!=8 && data.which!=0 && (data.which<48 data-blogger-escaped-data.which="data.which">57)) { return false; } }); $("#hargajual").keypress(function(data){ if (data.which!=8 && data.which!=0 && (data.which<48 data-blogger-escaped-data.which="data.which">57)) { return false; } }); $("#stok").keypress(function(data){ if (data.which!=8 && data.which!=0 && (data.which<48 data-blogger-escaped-data.which="data.which">57)) { return false; } }); //seting Flexi Grid $(".data").flexigrid({ url : 'post-json.php', dataType : 'json', colModel : [{display : 'No',name : 'no',width : 20,sortable : false,align : 'center'}, {display : 'Kode',name : 'kodebarang',width : 60,sortable : true,align : 'center'}, {display : 'Nama Barang',name : 'namabarang',width : 180,sortable : true,align : 'left'}, {display : 'Harga Beli',name : 'hargabeli',width : 70,sortable : true,align : 'right'}, {display : 'Harga Jual',name : 'hargajual',width : 70,sortable : true,align : 'right'}, {display : 'Stok Awal',name : 'stokawal',width : 50,sortable : true,align : 'right'} ], buttons : [{name : 'Add',bclass : 'add',onpress : test}, {name : 'Edit',bclass : 'edit',onpress : test}, {name : 'Delete',bclass : 'delete',onpress : test}, {separator : true} , {name : 'Refresh',bclass : 'refresh',onpress : test} ], searchitems : [ {display : 'Kode',name : 'kodebarang',isdefault : true}, {display : 'Nama Barang',name : 'namabarang' } ], sortname : "kodebarang", sortorder : "asc", singleSelect : true, usepager : true, title : 'Daftar Barang', useRp : true, rp : 10, showTableToggleBtn : false, height : 300, width : 700, pagetext: 'Hal ', outof: 's.d' }); function test(com, grid) { if (com == 'Delete') { //confirm('Delete ' + $('.trSelected', grid).length + ' items?') if ($('.trSelected',grid).length == 1) { $('.trSelected',grid).each(function() { var id = $(this).attr('id'); id = id.substring(id.lastIndexOf('row')+3); // ambil data kolom id var pilih = confirm('Data yang akan dihapus = '+id+ '?'); if (pilih==true) { HapusData(id); } }); } else { alert('Silahkan pilih salah satu baris yang ingin di Hapus'); return false; } } else if (com == 'Add') { //alert('Add New Item'); Tambah(); $('#form').dialog('open'); }else if (com == 'Edit') { //alert('Add New Item'); if ($('.trSelected',grid).length == 1) { $('.trSelected',grid).each(function() { var id = $(this).attr('id'); id = id.substring(id.lastIndexOf('row')+3); // ambil data kolom id EditData(id); }); } else { alert('Silahkan pilih salah satu baris yang ingin di edit'); return false; } }else if (com == 'Refresh') { window.location.replace('index.php'); } } $('#form').dialog({ autoOpen: false, width: 600, buttons: { "Simpan": function() { simpan(); }, "Tambah": function() { Tambah(); }, "Kembali": function() { $(this).dialog("close"); $('.data').flexReload(); } } }); function Tambah(){ $(".input").val(''); $("#kode").attr("disabled",false); $("#kode").val(''); $("#kode").focus(); } function EditData(e){ var id = e; $.ajax({ type : "POST", url : "cari.php", data : "id="+id, dataType : "json", //konsep json success : function(data){ $("#kode").val(id); $("#namabarang").val(data.namabarang); $("#hargajual").val(data.hargajual); $("#hargabeli").val(data.hargabeli); $("#stok").val(data.stok); $("#kode").attr("disabled",true); $('#form').dialog('open'); } }); } function HapusData(e){ var id = e; $.ajax({ type : "POST", url : "hapus.php", data : "id="+id, success : function(data){ alert(data); $('.data').flexReload(); } }); } function simpan(){ var kode = $("#kode").val(); var nama = $("#namabarang").val(); var hargabeli = $("#hargabeli").val(); var hargajual = $("#hargajual").val(); var stok = $("#stok").val(); if(kode.length==0){ alert('Maaf, Kode Barang tidak boleh kosong'); $("#kode").focus(); return false(); } if(nama.length==0){ alert('Maaf, Nama Barang tidak boleh kosong'); $("#namabarang").focus(); return false(); } if(hargabeli.length==0){ alert('Maaf, Anda belum mengisi Harga Beli'); $("#hargabeli").focus(); return false(); } if(hargajual.length==0){ alert('Maaf, Anda belum mengisi Harga Jual'); $("#hargajual").focus(); return false(); } if(stok.length==0){ alert('Maaf, Anda belum mengisi Stok atau berikan angka 0'); $("#stok").focus(); return false(); } $.ajax({ type : "POST", url : "simpan.php", data : "kode="+kode+"&nama="+nama+"&hargabeli="+hargabeli+"&hargajual="+hargajual+"&stok="+stok, success : function(data){ alert(data); $('.data').flexReload(); } }); } });Tahap Keetujuh membuat file cari.php
<?php include "koneksi.php"; $table = 'tbbarang'; $id = $_POST['id']; $where = "WHERE kodebarang='$id'"; $text = "SELECT * FROM $table $where"; $sql = mysql_query($text); $row = mysql_num_rows($sql); if ($row>0){ while ($r=mysql_fetch_array($sql)){ $data['namabarang'] = $r[namabarang]; $data['hargabeli'] = $r[hargabeli]; $data['hargajual'] = $r[hargajual]; $data['stok'] = $r[stokawal]; echo json_encode($data); // konsep JSON } }else{ $data['namabarang'] = ''; $data['hargabeli'] = ''; $data['hargajual'] = ''; $data['stok'] = ''; echo json_encode($data); } ?>Tahap Kedelapan membuat file hapus.php
Tahap Kesembilan membuat file simpan.php
untuk mendapatkan file diatas silahkan unduh disini.
sangat membantu ...! http://bo-fsakti.blogspot.com, http://hdt.16mb.com/home
BalasHapuskalo primary key nya id gmna buatnya????.....mohon pencerahannya
BalasHapusbagus banget artikelnya, cuma gmana ya pak kalau misalnya ditambahkan 1 field untuk image dan bagaimana untuk menampilkannya .... thx pak
BalasHapuswaduh...ini yang saya cari-cari Pak...terima kasih banyak Pak..Mantep,
BalasHapuspak, filenya gak bisa di download, linknya sudah gak ada
BalasHapusmasih ada kok...
Hapusbagus kalau ada kotak pencariannya juga... termasuk sort data.. bedasarkan nama atau kode...
Hapusmaaf pak, ko sy runing datanya tidak tampil y?
BalasHapusdi FlexiGrid reload trz...
solusinya bgaimana y?
thanks Gan..
coba cek lagi koneksi database nya...
Hapuspak deddy saya juga mengalami masalah yg sama data tidak tampil dan reload truz, koneksi sudah saya cek tdk ada masalah,,,dimana ya kira2 masalahnya pak? sy mengunakan versi xampp terbaru 1.8.1, pengaruh ngak pak?
HapusPak Deddy, saya juga mengalami masalah yang sama data tidak tampil dan reload terus. Koneksi saya check sudah OK.
Hapuskalau untk eksport ke pdf bisa tidak ya pak?atau print
BalasHapuskeren om deddy.... izin comot buat tugas @arief: coba hapus beberapa field di colom databasenya....
BalasHapusitu kok tombol add sama edit g jalan ya bang?
BalasHapuswah bagus sekali, bermanfaat. ..kalo nyimpne ama nampilin gambar gmn ya pak ?
BalasHapussaya mengalami masalah itu data tidak tampil dan reload terus. Koneksi saya check sudah OK. itu gimana pak? mohon pencerahannya
BalasHapuspak deddy saya juga mengalami masalah yg sama data tidak tampil dan reload truz, koneksi sudah saya cek tdk ada masalah,,,dimana ya kira2 masalahnya pak?
BalasHapusterima kasih atas berbagi ilmunya.. sangat berguna sekali untuk saya (entaraza@outlook.com)
BalasHapusterima kasih atas ilmu yang telah di tuliskan disini.. semoga Alloh melipat gandakan pahalanya...
BalasHapusilmu ini sangat berguna sekali bagi saya.. untuk pengembangan sistem saya sedang saya kerjakana...
bener-bener membantu pak... :D
BalasHapusmakasih...
bisa ane oprek kan programmnya pak... >.<
bagaimana untuk form edit, input datanya menggunakan pilihan untuk memasukkan nilai tabelnya?
BalasHapusPak Deddy, saya ada masalah pada saat saya running data yang ada di database tidak tampil. tolong bantuannya.
BalasHapusAlhamdulillah.. semoga ilmu pak dedi berkah.. izin pake pak..
BalasHapusMas, klo ketika click tombol Edit. saya mau echo variable id di from edit. tp ga tampil mas. knp tu?
BalasHapusArtikel yang sangat menarik, ini yang saya cari-cari. Ada gak bang contoh untuk membuat total perhitungan pada kolom tertentu, misal kita punya kolom Debet dan Kredit, kita ingin menampilkan jumlah total Debet atau Kredit di bagian paling bawah (footer atau apa lah namae)
BalasHapusPak Deddy, gimana ya caranya menampilkan data pada grid sesuai dengan pilihan pada Option Select??/
BalasHapusThx
Pak Deddy, gimana ya cara memasukan data ke Grid sesuai dengan option select
BalasHapusini yang didownload namanya apa ya pak?
BalasHapusPenting banget neh buat ane yang lagi migrasi ke open source... Terlebih pembahasan nya sama dengan blog ane yaitu tentang aplikasi barang dan penjualan...
BalasHapusTq pak atas share... izin ctrl-d
Pak deddy saya mau nambahin kolom itu yang ditambah apanya ya ? saya sudah tambah di ajax.js tapi masih belum bisa. mohon dibantu ya pak
BalasHapuspak ada sampel yg menggunakan combo box atau chek.... mksh...
BalasHapusLink untuk download nya udah g ada itu pak
BalasHapusiya pak tdk bisa di download
BalasHapushttp://prntscr.com/8hgbcd
BalasHapusData nya tidakmau tampil pak Kalo mengunakan Xampp 3.2.1
Mohon pencetrahanya
di flexi gridnya bisa ditambah cari data nggak berdasarkan kode barang dan nama barang
BalasHapuslink downloadnya sudah gak bisa pak dedy
BalasHapus