Trik Maskulin Untuk Reporting dengan PHP dan Class FPDF


Kali ini Blizze dengan tulus akan membeberkan rahasia sederhana tentang bagaimana caranya mengekstrak data yang ada di database MySQL ke dalam suatu format dokumen yang sudah tidak asing lagi bagi kita yaitu PDF. Saya anggap semuanya sudah paham dengan ekstensi dokumen yang satu ini sehingga rasanya saya tidak perlu lagi untuk menjelaskannya.

php-pdf

Singkatnya, silahkan perhatikan untaian proses-proses berikut ini:

1. Membuat database dan tabel. Simple saja dan sembarang saja.

CREATE TABLE IF NOT EXISTS `tbl_users` (
  `user_id` int(11) NOT NULL auto_increment,
  `first_name` varchar(50) NOT NULL,
  `last_name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  PRIMARY KEY  (`user_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Dumping data for table `tbl_users`
--

INSERT INTO `tbl_users` (`user_id`, `first_name`, `last_name`, `email`) VALUES
(1, 'Andrew', 'Hutauruk', 'andrew.hutauruk@gmail.com'),
(2, 'Semut', 'Elit', 'semut.elite@gmail.com'),
(3, 'Ucok', 'Balbal', 'ucok@yahoo.com'),
(4, 'Segar', 'Bugar', 'segar@gmail.com'),
(5, 'Programmer', 'Kipas Angin', 'programmer.ka@hotmail.com'),
(6, 'Cantik', 'Dalam', 'cantik@cantikamail.com');

2. Download class FPDF. Ketik aja di Google pasti ketemu lalu include-kan di file PHP latihanmu.
3. Ketik script PHP sederhana berikut ini yang dimulai dengan membuat class simple seperti berikut:

<?php
class database{
	private $host = "localhost";
	private $user = "root";
	private $pass = "vertrigo";
	private $base = "blizzetuts";
	private $con;

	public function __construct() {
		$this->con = new mysqli( $this->host, $this->user, $this->pass, $this->base );
	}

	public function sql( $string ) { return mysqli_query( $this->con, $string ); }
	public function num( $string ) { return mysqli_num_rows( $string ); }
	public function ext( $string ) { return mysqli_fetch_array( $string ); }

	public function fetch( $string ) {		
		$sql = self::sql( $string );
		$data = array();
		if( $sql ) {
			while( $row = self::ext( $sql ) ) {
				$data[] = $row;
			}
		} else {
			$data[] = NULL;
		}
		return $data;
	}
}

Class sederhana di atas menggunakan ekstensi MySQLi sebagai engine databasenya mengingat oleh para profesional developer PHP lebih menyarankan untuk mulai bermigrasi menggunakan class MySQLi yang mana versi di bawahnya yaitu MySQL tidak akan didukung lagi oleh server Apache versi terbaru alias deprecated.

Lalu buat file index.php dimana kita akan mencoba membuat perintah untuk mengambil data dari database dengan memamfaatkan class yang telah kita buat sebelumnya, yaitu sebagai berikut:

<?php
require_once "db.php";
require_once "fpdf.php";
$db = new database;
/** get all data from table **/
$data = $db->fetch( "SELECT * FROM tbl_users" );

if( count( $data ) ) {
	/** object for FPDF class **/
	$pdf = new FPDF();
	$pdf->AddPage();
	$pdf->setAutoPageBreak( false );
	$pdf->setFont( 'Arial', 'B', 13 );
	$pdf->text( 60, 10, 'Laporan Data Statistik Kunjungan User' );
	$pdf->SetFont( 'Arial', '', '10' );
	$pdf->text( 85, 15, 'http://www.situsku.com' );
	$pdf->setFont( 'Arial', 'B', 9 );
	$pdf->setFillColor( 245, 245, 245);
	$pdf->setXY( 10, 20 );
	$pdf->Cell( 9, 6, 'NO', 1, 0, 'C', 1 );
	$pdf->Cell( 45, 6, 'Nama Depan', 1, 0, 'C', 1 );
	$pdf->Cell( 45, 6, 'Nama Belakang', 1, 0, 'C', 1);
	$pdf->Cell( 90, 6, 'Email',  1,0, 'C', 1);	
	$no = 1;
	foreach($data as $row) {
		$pdf->SetFont('Arial','',9);	
		$pdf->setFillColor( 255, 255, 255);
		$pdf->Ln();
		$pdf->cell( 9, 6, $no, 1, 0, 'C', 1 );
		$pdf->cell( 45, 6, $row['first_name'], 1, 0, 'C', 1 );
		$pdf->cell( 45, 6, $row['last_name'], 1, 0, 'C', 1 );
		$pdf->cell( 90, 6, $row['email'], 1, 0, 'C', 1 );
		$no++;
	}
	$pdf->text( 10, 105, 'Jumlah Data: '.count($data).' data kunjungan' );
	$pdf->text( 185, 105, 'Webmaster' );
	$pdf->Output();
}

Untuk latihan ini kita tidak perlu menggunakan jQuery maupun CSS cukup script PHP saja. Sekian kiranya tutorial singkat tentang pelaporan data dari PHP+MySQL ke PDF dengan menggunakan library class FPDF. Semoga bermamfaat bagi mereka yang sedang membutuhkan resources yang kebetulan sama dengan topik pembahasan di tutorial ini.

Salam Semut Nusantara,
Semut Elit

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s