Melanjutkan artikel sebelumnya, jika dalam tulisan sebelumnya kita telah membahas cara membuat print preview dengan PHP, sekarang kita akan membuat laporan dengan format PDF menggunakan libray FPDF. Laporan akhirnya tampil seperti gambar dibawah ini

contoh laporan PDf menggunakan FPDF

Database

Untuk database yang akan kita pakai masih sama dengan artikel sebelumnya. Tabel yang akan kita buat adalah tabel umr2013 dengan strucktur tabel sebagai berikut :

CREATE TABLE IF NOT EXISTS `umr2013` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `propinsi` varchar(50) NOT NULL,
  `upah` double NOT NULL,
  PRIMARY KEY (`no`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

Code untuk membuat laporan

Untuk membuat laporan PDF, kita akan membuat kelas turunan dari FPDF dan membuat dua fungsi. Fungsi pertama adalah loadDataFromSQL($sql). Fungsi ini digunakan untuk melakukan query ambil data ke database. Fungsi yang kedua adalah FancyTable($header, $data) untuk memformat tampilan agar laporan PDF terlihat cantik dan rapih.

Lihat code lengkapnya dibawah ini.

<?php
require('../plugins/fpdf17/fpdf.php');
require('../inc/config.php');
class PDF extends FPDF
{
function LoadDataFromSQL($sql)
{
	$hasil=mysql_query($sql) or die(mysql_error());

	$data = array();
	while($rows=mysql_fetch_array($hasil)){
		$data[] = $rows;
}
	return $data;
}
// Colored table
function FancyTable($header, $data)
{
	// Colors, line width and bold font
	$this->SetFillColor(255,165,74);
	$this->SetTextColor(255);
	$this->SetDrawColor(128,0,0);
	$this->SetLineWidth(.3);
	$this->SetFont('','B');
	 /*  $w adalah variabel lebar dari kolom data
            dalam kasus ini, kolom no lebarnya 20, propinsi 100
         dan upah 60 */ 
	$w = array( 20, 100, 60);
	for($i=0;$i<count($header);$i++)
		$this->Cell($w[$i],7,$header[$i],1,0,'C',true);
	$this->Ln();
	// tentukan warna background and fontnya  
	$this->SetFillColor(224,235,255);
	$this->SetTextColor(0);
	$this->SetFont('');
	// Data
	$fill = false;
	foreach($data as $row)
	{
	
		$this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
		$this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
		$this->Cell($w[2],6,
		format_rupiah($row[2]),'LR',0,'R',$fill);
		$this->Ln();
		$fill = !$fill;
	
	}
	// Closing line
	$this->Cell(array_sum($w),0,'','T');
 }
}

$pdf = new PDF();
// header tabel 
$header = array('No', 'propinsi', 'upah');
// buat query SQLmu disini 
$query="select * from umr2013";
$data = $pdf->LoadDataFromSQL($query);
//tentukan ukuran dan jenis form 
$pdf->SetFont('Arial','',11);
$pdf->AddPage();
$pdf->FancyTable($header,$data);
$pdf->Output();
?>

Download source code lengkap

Bagi yang ingin mencoba langsung, silahkan download source code lengkapnya disni

Categories: PHP

Candra Adi Putra

Candra Adi Putra S.Kom adalah Alumni STMIK AKAKOM Yogyakarta. hubungi saya di candraadiputra (at) gmail (dot) com

17 Comments

lani · 23 July , 2017 at 7:04 am

Klo buat laporan pdf nya online ada ga….

desi · 9 November , 2015 at 8:50 am

kalo tampilkan data nya bukan table seperti itu, contoh :
nama : jjklll
alamat : dsjfns

tapi menggunakan function, mohon bantuan nya mas?

adam muslim · 24 March , 2015 at 4:20 pm

gan kalo buat nambahin colom gimana, itukan cuman ada ‘No’, ‘propinsi’, ‘upah’ , kalo mau ditambahin total gimana, muncl error terus.

Anonymous · 2 October , 2014 at 8:26 am

SYUKROON …

JEFRY · 15 August , 2014 at 2:18 pm

tutorialnya, bermanfaat sekali. tapi mau tanya Bos, kalau hasil PDF nya itu langsung kita download ke folder di PC kita gimana? jadi tidak perlu priview di webnya, tapi hasil PDF nya langsung download dan kita simpan di Folder PC kita gitu.
thanks atas pencerahannya.

neprianto2014 · 14 August , 2014 at 2:42 pm

ijin download ya pak

Guntur Gunawan · 7 June , 2014 at 12:32 pm

Mas, udah 2 hari ni begadang mikirin output dalam bentuk pdf yang lebih satu halaman, udah dicoba mas dengan menghilangkan fungsi “$pdf->setAutoPageBreak(false);” tapi munculnya setiap halaman pdf cuma 1 record aja mas? gmana mas ? mohon petunjuk mas? Makasih banyak mass?

Alfa Utomo · 8 May , 2014 at 2:40 pm

di tempat saya kok ada bacaan ini ya?

Parse error: syntax error, unexpected end of file in C:\xampp\htdocs\candralab-laporan\umr2013\umr2013_view.php on line 36

shadowkai · 8 February , 2014 at 5:52 pm

Mas agan aye punya field isinya panjang2 klo aye taruk di ceil itu tembus biar g tembus itu caranya gimana yah???

ky0 · 23 December , 2013 at 10:26 am

mas mo nanya donk
untuk styling laporan pdf nya gmn yah??
apa yang musti saya tambahkan
TQ

satbud · 25 November , 2013 at 4:47 pm

mas, kalau membuat laporan 2 query dalam 1 laporan gimana ya
misalnya ada 2 kolom, kolom pertama dari query 1 dan kolom 2 dari query 2

    Candra Adi Putra · 27 November , 2013 at 11:15 am

    belajar sql lagi…. itu bukan php

    Anonymous · 10 November , 2015 at 1:12 pm

    join tabel ajal

baraQ · 4 October , 2013 at 8:59 am

bermanfaat sekali tutorialnya..
dan kalau boleh request tolong donk laporannya perbulan menggunakan fpdf
terima kasih

Anonymous · 21 February , 2013 at 5:30 pm

makasih bro … tutorialnya bermanfaat baget

Comments are closed.