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

4 komentar:

  1. seru yaa ^_^
    tapi dong, aku tetep milih report masih dalam bentuk tabel. gampang di-copy alesannya :(
    kalo pdf, susah-susah blekenyut.. apalagi yang versi-versi lawas itu gak menyediakan fasilitas copyas..

    boleh dong, kalo mau nanya :p

    Itu si Header() tanpa dipanggil bisa muncul gitu ya? ato memang diurutin aja nanti keluar sendiri di bagian output?
    Di dalam pikiranku, function Header() {blabla} itu baru menjelaskan isi fungsinya. Ntar kalo mau output, ya harus dipanggil dulu di bawah, mau pake fungsi yang itu berapa kali gitu. (euhh, pie dong njelasinnya ya)


    Pertanyaan berikutnya, what the meaning of this :
    $pdf->AliasNbPages();



    Pertanyaan katiluk. Kok bisa gini?
    $x=$pdf->GetY();
    Abisnya aku pernah bikin 3 gandengan gitu gak pernah berfungsi, kok itu bisa jadi truk gandeng 3 biji gitu? Artinya apa dong? (sekalian dijelasi GetY dan SetY yaa)

    BalasHapus