Tampilkan postingan dengan label reporting. Tampilkan semua postingan
Tampilkan postingan dengan label reporting. Tampilkan semua postingan

Senin, 09 April 2012

[Contoh] Input Database MySQL dari File Berformat Excel dengan Excel Reader (no-pear)

http://bimosaurus.com/2012/04/10/contoh-input-database-mysql-dari-file-berformat-excel-dengan-excel-reader-no-pear/


Jika pada tiga posting yang lalu ( ini dan ini ) telah dipost tentang tutorial penggunaan PHP untuk keperluan export data ke file berformat Excel, maka kini sebaliknya. Kita akan coba lakukan import data dari Excel ke dalam tabel MySQL. Cara lama yang biasa digunakan untuk melakukan import data dari excel ke dalam MySQL adalah dengan menyimpan file excel tersebut sebagai file berformat CSV ( Comma Separated Value ). Namun diyakini bahwa format CSV ini tidak akan valid karena batas antar sel dan batas antar baris masih menggunakan karakter huruf alfabet. Semisal, ditentukan sebuah cara bahwa batas sel adalah dengan tanda koma, maka jika dalam konten sel terdapat koma, maka akan terjadi kesalahan dalam pembacaan jumlah sel.

Cara paling baik yaitu membiarkan saja dalam bentuk XLS file yang dibuka encoding datanya, dan kemudian direstore dalam bentuk text yang bisa dibaca dengan normal oleh PHP. Untuk membuka encoding data ini telah disediakan sebuah tools yang terkenal yang dinamakan Excel Reader. Biasanya filenya bernama excel_reader2.php. Disini dapat di download di : http://bimosaurus.com/demo/excel_reader2.php. Silakan di download dan letakkan dalam direktori libs anda. Di dalam excel reader ini telah terdapat class dan fungsi-fungsi untuk melakukan pembacaan file excel. Kita selaku developer tinggal menggunakan. Bagaimana contoh penggunaan dan penjelasannya?

Langkah pertama adalah biasanya kita perlu bantuan sebuah form yang berfungsi sebagai upload data. Misal kita buat sebuah file bernama : import.php, kira-kira berisi :

 

 
<?php
if( mysql_connect("localhost","user","password") ){
mysql_select_db( "kepegawaian" );
}else{
echo "database gagal";
}
?>
<table border="1">
<tr><th>Nip</th><th>Nama</th><th>Honor</th><th>Status Ambil</th></tr>
 
<?php
$sql = "SELECT * FROM `pegawai`";
$query = mysql_query( $sql );
while( $res=mysql_fetch_array( $query ) ){
?>
<tr><td><?php echo $res['nip'];?></td><td><?php echo $res['nama'];?></td><td><?php echo $res['honor'];?></td><td><?php echo $res['status_ambil'];?></td></tr>
<?php
}
?>
 
</table><br />
<form action="import-do.php" method="post" enctype="multipart/form-data">
<input type="file" name="upfile"><br />
<input type="submit" value="IMPOR" name="submit_import">
</form><br />
<a href="http://bimosaurus.com/demo/master_excel.xls">MasterFile Disini</a>

Selanjutnya,dibuat juga file tujuan uploadnya yang pada form di atas diarahkan ke file : import-do.php. File tersebut akan berisi : menangkap file,dan memparsing data yang ada di dalamnya dengan tools excel_reader2.php, dan melakukan restore data dalam database MySQL.

Saya masih menggunakan tabel yang telah digunakan dalam posting sebelumnya yaitu tabel pegawai :

nip nama honor status_ambil
10001 Susanto Rp. 1000000 Belum
10002 Susanti Rp. 1000000 Sudah
10003 Marwoto Rp. 2000000 Sudah
10004 Gunadi Rp. 1500000 Belum
10005 Nur Eko Rp. 1000000 Belum

Selanjutnya saya mempersiapkan sebuah master file excel seperti berikut ini : http://bimosaurus.com/demo/master_excel.xls. Master file ini berfungsi untuk panduan user penginput data dalam melakukan inputing data. Sedangkan file import-do.php berisi demikian :

<?php
 
include "libs/excel_reader2.php";
if( mysql_connect("localhost","user","password") ){
mysql_select_db( "kepegawaian" );
}else{
echo "database gagal";
}
if( isset( $_POST['submit_import'] ) ){
 
$cell = new Spreadsheet_Excel_Reader($_FILES['upfile']['tmp_name']);
$jumlah = $cell->rowcount($sheet_index=0);
 
$i = 2; // dimulai dari ke dua karena baris pertama berisi title
while( $i<=$jumlah ){
 
//$cell->val( baris,kolom )
 
$nip = $cell->val( $i,1 );
$nama = $cell->val( $i,2 );
$honor= $cell->val( $i,3 );
$status_ambil = $cell->val( $i,4 );
 
$sql ="INSERT INTO `pegawai` (`nip`,`nama`,`honor`,`status_ambil`) VALUES ('$nip','$nama','$honor','$status_ambil')";
mysql_query( $sql );
$i++;
}
 
}
header("Location:http://bimosaurus.com/demo/import.php");
?>

Penjelasannya adalah sebagai berikut, file yang diupload hanya akan diletakkan dalam direktori temporary, dan mulai dibaca. Sheet_index merupakan nomer worksheet yang dibaca. 0 adalah worksheet pertama. Selanjutnya pembacaan baris dimulai dari nomer 2 (dua) karena baris pertama berisi header kolom. Pembacaan akan dimulai dengan proses looping yang dimulai dengan angka dua dan berakhir pada jumlah baris excel yang terbaca oleh php. Urutannya adalah $cell->val( baris,kolom ); Data diinisiasi dalam variabel masing-masing, dan dimasukkan dalam query, dan dieksekusi.

Nah file ini dapat dilihat di http://bimosaurus.com/demo/import.php. Kemudian perhatikan juga dalam posting sebelumnya, tentunya dalam demo terjadi perubahan, karena saya dalam hal ini menggunakan tabel yang sama. Dua script ini bisa saja disatukan jadi satu, dengan catatan bahwa form html diletakkan di bagian bawah dari aksi uploading, dan tentunya pengubahan arah form action. Permasalahan yang sering terjadi dalam proses uploading adalam masalah format cell, yang biasanya dapat bervariasi sekitar Text, Numeric, dan lain sebagainya. Oleh karena itu user perlu diarahkan untuk menggunakan format cell dengan benar.

Sebenarnya masih terdapat satu hal terkait excel ini, yaitu penggunaan PEAR. Dimana dalam PEAR telah lengkap untu segala library. Namun tutorial ini berguna untuk semua server tanpa PEAR ataupun ada PEAR. Karena tidak selalu server berinstalkan PEAR.

Selamat Mencoba, semoga berguna

[Contoh 2 & 3] Membuat Laporan Export Data Dari MySQL ke Excel terencoding dengan PHP (no-pear)

[Contoh 2] Membuat Laporan Export Data dari MySQL ke Excel terencoding dengan PHP (no-pear)

http://bimosaurus.com/2012/04/09/contoh-2-membuat-laporan-export-data-dari-mysql-ke-excel-terencoding-dengan-php-no-pear/


Jika dalam posting lalu http://bimosaurus.com/2012/04/09/contoh-1-membuat-laporan-export-data-dari-mysql-ke-excel-dengan-php-no-pear/ kita sudah belajar menggunakan php untuk melakukan export ke dalam file excel yang datanya diambil dari database, namun ternyata proses yang kita pelajari tersebut masih terdapat kekurangan. Kekurangannya yaitu bahwa data excel yang dihasilkan tidak terencoding dengan baik sebagaimana layaknya file excel. Excel yang dihasilkan hanyalah file text dalam bentuk table, yang disimpan sebagai xls atau excel spreadsheet. Untuk membuat exporting data dalam bentu excel yang sebenarnya maka perlu tools yang berfungsi mengolah encoding data cell dan column ke dalam excel encoding. Dalam PHP-PEAR, fasilitas ini jelas telah ada. Tutorial penggunaan PEAR menyusul. Kali ini kita akan belajar menggunakan fasilitas : php_writeexcel-0.3.0.tar.gz yang telah saya siapkan di http://bimosaurus.com/files/php_writeexcel-0.3.0.tar.gz.

Extractlah file tersebut ke dalam direktori yang anda suka. Kalau saya lebih suka memasukkan segala fasilitas ini ke dalam direktori libs. Sehingga akan terbentuk libs/php_writeexcel-0.3.0 . Untuk contoh scripting menggunaan php_writeexcel ini dasarnya adalah sebagai berikut :

 

 

 
require_once "libs/php_writeexcel-0.3.0/class.writeexcel_workbook.inc.php";
require_once "libs/php_writeexcel-0.3.0/class.writeexcel_worksheet.inc.php";
 
$fname = tempnam("/tmp", "namafile.xls"); //membuka sebuah file baru diletakkan dalam /tmp
$workbook = &new writeexcel_workbook($fname); //workbook diberinama
$worksheet = &$workbook->addworksheet(); //nambah worksheet
 
//tulis
 
$worksheet->write(0, 0, "JUDUL diletakkan di kolom 1");
$worksheet->write(2, 0, "title baris 3 kolom 1");
$worksheet->write(2, 1, "title baris 3 kolom 2");
$i = 3;
while($i <= 10){
$kol = $i+1; // karena nomer kolom pertama adalah 0, maka $kol adalah 0+1
$worksheet->write($i,0,"Ini Baris $kol Kolom ke 1");
$worksheet->write($i,1,"Ini Baris $kol Kolom ke 2");
$i++;
}
 
 
$workbook->close();
 
header("Content-Type: application/x-msexcel; name=\"namafile.xls\"");
header("Content-Disposition: inline; filename=\"namafile.xls\"");
$fh=fopen($fname, "rb"); //membuka file namafile.xls , membacanya dan siap untuk mengolah dalam bentuk biner
fpassthru($fh); //menuangkan data yang ada di buffer
unlink($fname); //setelah terdownload, hapus file

Contoh data ini dapat dilihat di http://bimosaurus.com/demo/export1.php. Untuk posting selanjutnya akan dicoba menuangkan data MySQL ke bentuk XLS MS Excel.

Semoga Berguna





[Contoh 3] Membuat Laporan Export Data dari MySQL ke Excel terencoding dengan PHP (no-pear)

http://bimosaurus.com/2012/04/09/contoh-3-membuat-laporan-export-data-dari-mysql-ke-excel-terencoding-dengan-php-no-pear/


Posting lalu, http://bimosaurus.com/2012/04/09/contoh-1-membuat-laporan-export-data-dari-mysql-ke-excel-dengan-php-no-pear/ telah ditunjukkan bagaimana caranya membuat sebuah laporan Excel dengan menggunakan php_writeexcel. Kali ini akan dilanjutkan dengan bagaimana menuangkan data dari MySQL database ke dalam file berformat XLS atau spreadsheet. Berikut sebuah contoh, misal kita memiliki sebuah tabel sebagai berikut, bernama tabel pegawai dalam sebuah database.

nip nama honor status_ambil
10001 Susanto Rp. 1000000 Belum
10002 Susanti Rp. 1000000 Sudah
10003 Marwoto Rp. 2000000 Sudah
10004 Gunadi Rp. 1500000 Belum
10005 Nur Eko Rp. 1000000 Belum

Tabel dalam database MySQL tersebut akan kita tuangkan dalam sebuah file Excel dengan nama : laporan-tanggal-dd-mm-yy.xls.
Maka kita akan membuat sebuah script seperti berikut:

require_once "libs/php_writeexcel-0.3.0/class.writeexcel_workbook.inc.php";
require_once "libs/php_writeexcel-0.3.0/class.writeexcel_worksheet.inc.php";
 
if(mysql_connect( "localhost","user","pass" )){
mysql_select_db( "kepegawaian" );
}
 
 
$date = date('Y-m-d');
$fname = tempnam("/tmp", "laporan-tanggal-$date.xls"); //membuka sebuah file baru diletakkan dalam /tmp
$workbook = &new writeexcel_workbook($fname); //workbook diberinama
$worksheet = &$workbook->addworksheet(); //nambah worksheet
 
//tulis blok titel tabel
 
$worksheet->write(0, 0, "Data Pegawai PT anu");
$worksheet->write(2, 0, "NIP");
$worksheet->write(2, 1, "Nama");
$worksheet->write(2, 2, "Honor");
$worksheet->write(2, 3, "Status Ambil");
//title selesai
 
//mari query
$sql = "SELECT * FROM `pegawai`";
$q = mysql_query( $sql );
$i = 3; //ingat bahwa kolom sebenarnya adalah nilai i ditambah 1, karena dimulai dengan nol
while( $r = mysql_fetch_array( $q ) ){
$worksheet->write($i,0,$r['nip']);
$worksheet->write($i,1,$r['nama']);
$worksheet->write($i,2,$r['honor']);
$worksheet->write($i,3,$r['status_ambil']);
$i++;
}
$workbook->close(); //selesai tulis
 
//tuang data
header("Content-Type: application/x-msexcel; name=\"laporan-tanggal-$date.xls\"");
header("Content-Disposition: inline; filename=\"laporan-tanggal-$date.xls\"");
$fh=fopen($fname, "rb"); //membuka file namafile.xls , membacanya dan siap untuk mengolah dalam bentuk biner
fpassthru($fh); //menuangkan data yang ada di buffer
unlink($fname); //setelah terdownload, hapus file

Hasilnya kira-kira dapat diambil disini : http://bimosaurus.com/demo/export2.php. Format ini adalah setara dengan MS-Excel 2000/XP.
Posting selanjutnya adalah bagaimana memasukkan data dari XLS/Excel ke dalam database MySQL.. Tunggu posting tersebut
Semoga berguna.


Minggu, 08 April 2012

[Contoh] Membuat Laporan PDF dengan PHP dan Database MySQL

http://bimosaurus.com/2012/04/09/contoh-membuat-laporan-pdf-dengan-php-dan-database-mysql/


Jika pada posting lalu (http://bimosaurus.com/2012/04/08/contoh-membuat-laporan-pdf-dengan-php/) telah terpaparkan tentang pembuatan laporan PDF dengan menggunakan PHP, kali ini akan dibahas bagaimana menyusun reporting dengan PHP dalam format PDF yang susunan datanya diambil dari database MySQL. Tentu saja hal ini akan sangat berguna bagi para developer sistem informasi, karena pada umumnya sistem informasi harus memiliki proses reporting data. Proses pembuatan reporting PDF dengan menggunakan PHP ini dapat dilakukan dengan menggunakan FPDF seperti posting sebelumnya. Hanya saja prosesnya akan ditambah dengan proses pengambilan data dari database server MySQL. Proses ini tidak sulit, karena hanya menggabungkan pengambilan data, dan selanjutnya menampilkannya dalam bentuk PDF. Itu saja. Berikut contoh pengambilan data.
Katakan, kita memiliki tabel data pegawai dengan format seperti berikut:

nip nama honor status_ambil
10001 Susanto Rp. 1000000 Belum
10002 Susanti Rp. 1000000 Sudah
10003 Marwoto Rp. 2000000 Sudah
10004 Gunadi Rp. 1500000 Belum
10005 Nur Eko Rp. 1000000 Belum

Dengan format data demikian, maka pengambilan data dari dalam tabel dapat dilakukan dengan sintaks MySQL demikian :

SELECT * FROM `pegawai`

Begitu pula, sintaks ini akan dijadikan Query yang akan dieksekusi oleh PHP. Perkiraan Commandnya adalah sebagai berikut:

$sql      = “SELECT * FROM `pegawai`”;
$query  = mysql_query( $sql );
$while( $result=mysql_fetch_array( $query ) ){

//tampilkan

}

 

Dengan melakukan kombinasi perintah dengan pembuatan reporting PDF, maka dapat dibuat script seperti berikut:

 
ob_start();
define('FPDF_FONTPATH','libs/fpdf/font/');
require('libs/fpdf/fpdf.php');
 
if( mysql_connect( "localhost","reporting","reporting" ) ){
mysql_select_db( "kepegawaian" );
}else{
echo "maaf, data gagal";
}
 
class PDF extends FPDF {
 
function Header() {
$this->Image('logo_print.jpg',2,1,2);
 
$this->SetFont('Arial','B',11);
 
$this->Cell(0,0.75,' TUKANG HRD ',0,0,'C');
 
$this->Ln();
 
$this->SetFont('Arial','B',14);
 
$this->Cell(0,0.75,'TOKO X',0,0,'C');
 
$this->Ln();
 
$this->SetFont('Arial','',9);
 
$this->Cell(0,0.5,'Jl. Soekarno Hatta KM 100 Antar Bermuntah Telp (01234)123456',0,0,'C');
 
$this->Ln();
 
$this->Ln();
$this->SetFont('Arial','',14);
$this->Line(1, 4, 21, 4);
 
$this->Ln();
$this->SetFont('Arial','B',11);
$this->Cell(0,0.75,'HRD',0,0,'C');
 
$this->Ln();
}
 
}
 
 
 
$pdf=new PDF('P','cm','Letter');
 
$pdf->Open();
 
$pdf->AliasNbPages();
 
$pdf->AddPage();
 
$pdf->SetMargins(1.5,1,1.5);
 
$pdf->SetFont('Arial','B',12);
 
 
//membuat kop tabel
$x=$pdf->GetY();
 
$pdf->SetY($x+1);
 
$pdf->SetFont('Courier','B',10);
 
$pdf->Cell(5,0.5,'NIP',1,0,'L');
$pdf->Cell(5,0.5,'Nama',1,0,'L');
$pdf->Cell(5,0.5,'Honor',1,0,'L');
$pdf->Cell(5,0.5,'Status Ambil',1,0,'L');
 
//query dan arraying
$sql ="SELECT * FROM `pegawai`";
 
$query = mysql_query( $sql );
 
 
 
while( $result= mysql_fetch_array( $query )){
 
$nip = $result['nip'];
$nama = $result['nama'];
$honor = $result['honor'];
$status_ambil = $result['status_ambil'];
 
$pdf->SetFont('Courier','B',10);
 
$pdf->Cell(5,0.5,'$nip',1,0,'L');
$pdf->Cell(5,0.5,'$nama',1,0,'L');
$pdf->Cell(5,0.5,'$honor',1,0,'L');
$pdf->Cell(5,0.5,'$status_ambil',1,0,'L');
}
 
 
$pdf->Output();

Berikut kira-kira hasilnya akan seperti demikian : http://bimosaurus.com/demo/reporting.php

Semoga berguna

Sabtu, 07 April 2012

[Contoh] Membuat Laporan PDF dengan PHP

http://bimosaurus.com/2012/04/08/contoh-membuat-laporan-pdf-dengan-php/


Salah satu bentuk output yang dibutuhkan oleh pengguna layanan web adalah sebuah laporan dalam bentuk PDF. PDF (portable document format) adalah bentuk dokumen siap print. Dokumen berformat PDF sendiri dapat dibentuk dari PDF. Seperti pada posting sebelum ini telah dikenalkan sedikit mengenai fungsi library FPDF, dimana dengan beberapa command PHP dapat membuat dokumen berformat PDF. Berikut di sini akan dipaparkan beberapa perintah penting dengan satu contoh pembuatan laporan PDF dengan PHP.

Langkah pertama adalah, kita pastikan dulu bahwa library fpdf telah diinclude dengan baik dengan perintah semacam ini:

 

ob_start();
define('FPDF_FONTPATH','libs/fpdf/font/');
require('libs/fpdf/fpdf.php');

Selanjutnya kita perlu melakukan pemanggilan constructor Class PHP bernama FPDF yang terdapat pada library.Command yang digunakan contohnya adalah :

$pdf = new FPDF($posisi_halaman,$satuan,$jenis_kertas);

dengan

$posisi_halaman berisi : P (Portrait/tegak) atau L (Landscape/mendatar). Jika tidak diisi akan berisi P
$satuan : pt (point), mm (milimeter), cm (centimeter), in (inchi). Jika tidak diisi akan berisi mm
$jenis_kertas : A3, 4, A5, Letter, Legal (Perbedaan kapital karakter akan berpengaruh)

 

Selanjutnya melakukan pemanggilan fungsi dasar Open(); dan dilanjutkan dengan pembukaan halaman.

$pdf->Open();
$pdf->AddPage();

 

Selanjutnya, kita dapat memasukkan materi / isi dari dokumen tersebut dengan memanfaatkan fungsi-fungsi berikut:



SetFont($jenis_font,$tebalmiring,$ukuran);

Contoh :

$pdf->SetFont('Arial','B','14');

tentunya dengan font yang telah ada dalam library fpdf kita masing-masing. Font ini dapat ditambah.




Image($lokasi_gambar,$jarak_cm_dari_kiri,$jarak_cm_dari_atas,$tinggi_gambar,$panjang_gambar);

Contoh :

$pdf->Image('images/koding1.jpeg',17,1,3,3);
$pdf->Image('images/koding2.jpeg',17,4,3,3);
$pdf->Image('images/koding3.jpeg',17,7,3,3);



Cell($panjang_sel,$tinggi_sel,$isi_sel,$keterangan_border,$berapa_spasi,$margin);

Contoh:

$pdf->Cell(9.5,2,'Percobaan pembuatan PDF',1,0,'L');

Spasi yang dibentuk oleh $berapa_spasi, akan sesuai dengan $berapa_spasix$tinggi_sel

Margin dapat berisi : L(Left) C(Center) dan R(Right)

Keterangan Border akan terdapat border jika berisi angka bukan 0.



Ln();

Perintah pindah baris

$pdf->Ln();

 



Output();

Adalah perintah tampilkan ke layar

$pdf->Output();

 

 

Berikut contoh lengkap satu script PHP dasar untuk membuat pencetakan berbentuk PDF:

ob_start();
 
define('FPDF_FONTPATH','libs/fpdf/font/');
 
require('libs/fpdf/fpdf.php');
 
$pdf=new FPDF('P','cm','Letter');
 
$pdf->Open();
 
$pdf->AddPage();
 
$pdf->SetFont('Arial','B',12);
 
$pdf->Image('images/koding1.jpeg',17,1,3,3);
$pdf->Image('images/koding2.jpeg',17,4,3,3);
$pdf->Image('images/koding3.jpeg',17,7,3,3);
 
$pdf->SetFont('Arial','B',20);
$pdf->Cell(9.5,2,'Latihan membuat PDF',1,0,'L');
$pdf->Ln();
$pdf->SetFont('Arial','B',14);
$pdf->Cell(9.5,2,'Oleh bimosaurus.com',0,0,'L');
$pdf->Ln();
 
$pdf->Output();

 

Hasilnya adalah sebagai berikut : http://bimosaurus.com/demo/pdf.php

FPDF dapat di download di situs aslinya fpdf.org atau di sini langsung KLIK