Tulisan ini mengawali tutorial di awal tahun 2012.. sebelumnya penulis ingin mengucapkan "Selamat Tahun Baru 2012" kepada pembaca dan pengunjung setia web ini..
Tema yang akan penulis tulis kali ini adalah mengenai Upload File (Import) data Excel ke dalam Database.. namun dengan sentuhan / catatan:
1. Jika terdapat duplikasi data dalam file excel (NIM), maka akan difilter, dan akan dimasukkan dalam tabel gagal dengan keterangan "Duplikasi NIM"
2. Jika terdapat NIM yang kosong, maka akan difilter juga dan dimasukkan ke dalam tabel gagal dengan keterangan "NIM Kosong"
3. Jika ke-2 syarat diatas lolos, maka akan disimpan ke dalam tabel sukses (mahasiswa)..
jadi intinya, memudahkan si pengguna untuk mengetahui "Mana data yang berhasil diupload dan Mana data yang gagal diupload", karena ke-2 hal tersebut telah dipisahkan
secara otomatis..
simpel kan.. namun cukup membuat pusing khususnya untuk para pemula..
kita langsung saja...
Siapkan database dan 2 tabel dengan spesifikasi seperti berikut:
nim | varchar(10)
nama | varchar(100)
alamat | varchar(100)
jurusan | varchar(50)
hp | varchar(20)
nim | varchar(10)
nama | varchar(100)
keterangan | varchar(100)
copy mode atau download file excel Reader terlebih dahulu disini. file tersebut digunakan untuk mampu membaca data file excel
Buat file php dengan nama:
form_import.php
<h1>mport Data Excel</h1>
<form action="proses_import.php" enctype="multipart/form-data" method=“POST”>
Pilih File Excel: <input name="userfile" type="file" />
<input name="upload" type="submit" value="Import" /></form>
dan
proses_import.php
<?php
// menggunakan class phpExcelReader
include "excel_reader2.php";
// koneksi ke MySQL
mysql_connect("localhost","root","");
mysql_select_db("dbagussaputra");
// membaca file excel yang diupload
$data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);
// membaca jumlah baris dari data excel
$baris = $data->rowcount($sheet_index=0);
// import data excel mulai baris ke-2
// (karena baris pertama adalah nama kolom)
for ($i=2; $i <= $baris; $i++){
$nim = $data->val($i, 1);
$nama = $data->val($i, 2);
$alamat = $data->val($i, 3);
$jurusan = $data->val($i, 4);
$hp = $data->val($i, 5);
$cari = mysql_num_rows(mysql_query("SELECT nim FROM tmahasiswa WHERE nim = '$nim'"));
if (empty($nim)){
$hasil = mysql_query("INSERT INTO tgagal(nim,nama,keterangan) VALUES('$nim','$nama','NIM Kosong')");
}
elseif ($cari > 0){
$hasil = mysql_query("INSERT INTO tgagal(nim,nama,keterangan) VALUES('$nim','$nama','Duplikasi NIM')");
}
else{
// setelah data dibaca, sisipkan ke dalam tabel tsukses
$hasil = mysql_query("INSERT INTO tmahasiswa(nim,nama,alamat,jurusan,hp) VALUES('$nim','$nama','$alamat','$jurusan','$hp')");
}
}
echo "Berhasil";
?>
langsung saja bisa Anda jalankan melalui http://localhost/namaFolder/form_import.php
Skrip yang dibuat diatas ditulis dengan menggunakan database MySQL, namun jika Anda menginginkan menggunakan database SQL Server, cukup ubah saja mysql nya menjadi mssql .. semoga tutorial kali ini dapat memberikan manfaat kepada Anda
Jefri
wow.. mantabs.. pertamax.. baru saja sy mau tanya soal filtering excel ini, malah uda diposting duluan, barusan lagi.. ga jadi nanya dah.. tq master agus :D
Agus Saputra
Jefri @ mantab dah kalo gitu.. =D
enasri
goods job tetap berkarya ....mas kalau dari ms.accses 2003 ke my sql codingnya gimana .... kirim ke email: [email protected]
mantab
mantab Mas, tapi mau tanya nih..
itu kan scra Default file excel yg diimport Sheet1 (sheet pertama) kalo misal yg akan saya import "sheets 2" bagaimana mas?
thanks.. perlu bgt nih.
Agus Saputra
mantab @ untuk lebih jelas, bisa klik di http://code.google.com/p/php-excel-reader/wiki/Docu mentation ...
radhitya
mas kalo import dengan excel yang telah didesign halamanya gmna cara ngambil datanya??
Agus Saputra
radhitya @ mudah kok.. bisa Anda tuliskan seperti skrip dibawah:
<?php
$namaFile = "namafile.xls";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Co ntent-Type:application/octet-stream");
header("Cont ent-Type:application/download");
header("Content- Disposition: attachment; filename=$namaFile");
header("Content-Tr ansfer-Encoding: binary ");
// skrip selanjutnya (sama seperti menampilkan data pada konten web), desain bisa menggunakan kode html..
misalnya:
echo "<table>
<tr bgcolor=#ccc>
....
nanti pada buku selanjutnya ada pembahasan mengenai case tersebut..
yan
alhamdulillah sukses make programnya mas
makasi banyak
tinggal gmn cara sbaliknya
download ke excell
Agus Saputra
yan @ sippp.. :) nanti saya akan share mengenai download ke excel.. :)
ss joker
matur nuwun...pak,mas,om,pakdhe...
rohman
tanya mas...
untuk file yang di upload dengan script spt;
$data = new spreadsheet_excel_reader($_FILES['userfile 9;]['tmp_name']);
nah yang au mau tanyakan :
['usrfile'] itu di isi apa yaa/ ttep di biarkan gtu aja
dan juga ['tmp_name']... mohon bantuanya mas.... tolong balas di email aq. [email protected]
rohman
aku boleh minta alamat emailnya mas gak... atau no hp... bwt temen sharing aja
rohman
boleh minta no hp nya gk mas... atau emailnya... bwt sharing aja...
Agus Saputra
rohman @ email saya di:
[email protected]
$_FILES['userfi le']['tmp_name']
userfile itu sumbernya dari file formnya..
<input type=file
sedangkan tmp_name itu bawaan kode php, temporary name..
ardi
blognya bagus sekali mas agus, tetap dikembangkan dengan ilmu2x baru yah mas!
lia
mas agus . mau nanya dong, kalo pengen update data di excel kita upload lagi d database ikut ke update tpi ga boleh ng update nim pie mas?
Agus Saputra
lia @ ya nim nya jangan ditulis diskrip donk.. UPDATE nya jangan masukkan nim.. coba lihat skripnya..
lia
kak agus makasi update nya uda bsa deng. n mau nanya lagi nih, kalo aku punya 2 table:
1. table vendor : id_vendor, nama
2. table barang : id_barang, id_vendor, nama barang, qty
di excel nya datanya sbb:
id_barang , nama vendor, nama barang, qty
A001 , PT Cantika, Sunsilk, 1 doz
nah saat upload excel di table barang itu ke uploadnya
A001, 1, Sunsilk, 1 doz
pie yaa ?
iponk
maaf mas nanya, kalo integrasi database caranya gmana ya?
kan ada 2 Database di server yang beda, ketika database A berubah maka database B ikut berubah..
ivan
Notice: Undefined offset: 0 in C:\xampp\htdocs\xxx\excel_reader2.php on line 390
aditya sandy
mas agus, saya aditya. .
kemarin saya abis download coding+file dari blognya mas agus tentang "Import Excel to Database Menggunakan PHP dengan Filtering Data Besyarat."
waktu saya coba, data di file excel-nya berhasil masuk ke database.
tpi di browser saya kok ada message seperti ini :
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\import\excel_reader2.php on line 916
Berhasil
itu maksudnya apa mas agus ? ? mhon bantuannya ? ?
azis
klo di dump bisa keluam Gan, tp klo di query ga masuk ke DB apa ada yang salah
Agus Saputra
azis @ maksudnya apakah kasusnya sama dengan sdr aditya sandy diatas? mengenai depreciated?.. itu ada skrip php pada excel_reader yang ternyata sudah tidak digunakan di PHP terbaru..
Coba ganti function split() dengan explode() pada baris ke 844 dan 79. Sedangkan untuk baris 916 silakan ganti operator “=&” dengan “=”.
iwan setiawan
terimakasih atas informasinya. sangat bermanfaat
Agus Saputra
iwan setiawan @ sama2 mas..
victor
mas agus, request fungsi barcode reader pada buku selanjutnya.. jadi ndak hanya fungsi CRUD saja...thanks
Agus Saputra
victor @ sebenarnya untuk barcode reader, tidak ada skrip khusus mas, untuk membaca barcode.. cukup laser, dan otomatis kode akan terscan dan otomatis enter.. Pembahasan ini mudah2an akan terbit dalam 3-4 bulan dengan aplikasi bertajuk Point of Sales Web Base bernilai puluhan juta rupiah dan sudah teruji di beberapa perusahaan.. :)
jevry
mas, bisa gak program pencarian php ke database exel.
faizal
mas mau tanya, kenapa kok punya saya gagal import ya? padahal udah berhasil kebaca trus kalo querynya di tampilin udah kebuat query nya
tapi setelah cek database belum ada recordnya
Agus Saputra
faizal @ mungkin ada kode di excelnya depreciated mas.. mungkin mas menggunakan server terbaru? ini postingan tahun 2012.. :) saya akan update untuk yang terbarunya .. mungkin bisa menggunakan PHPExcel untuk class excelnya
yura
thx mas.. sangat membantu.
nasib
mas gimana caranya impor database yang ada di localhost ke rtf berdasarkan database yang dipilih,jadi saya cetak berdasarkan database yang dipilih.gmn solusi codenya y mas
AGUS SAPUTRA
nasib @ Mas, jika menggunakan mysqli (improved), bisa menggunakan koneksi:
$hostName = "localhost";
$username = "root";
$password = "";
$dbName = "dbname1";
$dbName2 = "dbname2";
$connect1 = mysqli_connect($hostName,$username,$password,$dbName);
$connect2 = mysqli_connect($hostName,$username,$password,$dbName2);
// jika ingin menggunakan database 1
$query = mysqli_query($connect1, "kueri sql");
// jika ingin menggunakan database 2
$query = mysqli_query($connect2, "kueri sql");
novan pradana
mas kok data yang saya upload tidak masuk ke data base ya?
didalam data base kosong.
AGUS SAPUTRA
Novan Pradana @ btw mas menggunakan server terbaru atau lama?.. jika server baru, kemungkinan mysql_query tidak berjalan, karena mysql_query sudah dianggap depreciated (tidak digunakan lagi) di server baru .. coba gunakan mysqli_query (improved), mysql_num_rows, gunakan mysqli_num_rows, mysql_connect/mysql_select_db, gunakan mysqli_connect ..
Gunawan
kenapa eror disini ya mas?
Notice: Undefined index: userfile in C:\xampp\htdocs\bpkb\proses_import.php on line 10
Notice: Undefined offset: 0 in C:\xampp\htdocs\bpkb\excel_reader2.php on line 390
Berhasil
hanes
Mas kok error iya?
Notice: Undefined index: userfile in C:\xampp\htdocs\phpdasar1\pertemuan5\proses_import.php on line 10
Notice: Undefined offset: 0 in C:\xampp\htdocs\phpdasar1\pertemuan5\excel_reader2.php on line 390
Berhasil
mohon bantuannya
Wida
Mas mau tanya,,saya kan import data dlm Exel itu 100 data/baris..
Tp kenapa yang masuk database nya cuma ada 28 data? Apa ada batas maksimal untuk import data d Excel nya?
Agan
Terimakasih, sangat bermanfaat mas, btw klo di Codeigniter kaya gmna ya?, klo bisa send ke email [email protected]
ya :)
Ahmad Syaripudin
Terima Kasih atas pertolongannya semoga ilmunya makin berkah manfaat,, Amiin
salam kenal saya dari bogor jawa barat
AGUS SAPUTRA
Ahmad Syaripudin @ salam kenal kembali