Membuat Laporan dari Database dengan mPDF PHP

Bisa dikatakan adanya sebuah laporan pada aplikasi berbasis database adalah sebuah keharusan. Baik pada aplikasi desktop, website atau client server. Fasilitas Laporan pada aplikasi merupakan sebuah utilitas yang digunakan sebagai bentuk penyampaian informasi yang ada pada database ataupun aplikasi. Ambil contoh pada aplikasi penjualan yang tentu saja memiliki data barang, data transaksi penjualan dan sebagainya. Dengan menambahkan fasilitasi laporan seorang pengguna aplikasi tentu saja dapat melihat informasi data barang atau data transaksi penjualan berdasarkan tanggal tertentu yang tentu saja dapat dicetak jika diperlukan.

Membuat Laporan dari Database dengan mPDF PHP

Setiap bahasa pemrograman memiliki tool tersendiri dalam membuat report atau laporan. Tool yang untuk membuat laporan di bahasa pemrograman A tentu saja tidak akan dapat digunakan pada bahasa pemrograman B kecuali menggunakan tool pihak ketiga. Dalam PHP sendiri, tersedia banyak class dan library untuk membuat laporan kedalam bentuk PDF salah satunya adalah class mPDF. Class ini disediakan gratis dan open source. anda dapat mendownloadnya disini.

Seperti penjelasan di situs resminya, penggunaan mPDF sangatlah mudah, extrack dan copy ke htdocs/www jika anda menggunakan localhost. Bahkan untuk penggunaanyapun terdapat beberapa contoh yang sudah ada didalam folder example. dari contoh-contoh tersebut terlihat bahwa cara kerja mpdf ini adalah dengan mendefinisikan tag html pada variabel php kemudian menyisipkan string tersebut kedalam file pdf. Pada contoh disini saya akan membuat sebuah laporan dari tabel database menggunakan mPDF. Terlihat data pada tabel database saya seperti berikut ini :

Membuat Laporan dari Database dengan mPDF PHP

Data pada tabel siswa tersebut tersimpan didatabase saya dan akan saya tampilkan kedalam laporan data siswa yang dibuat menggunakan mPDF. Source code yang saya gunakan adalah sebagaimana dibawah ini. Hasilnya kurang lebih seperti gambar pertama diatas.

<?php

require_once("koneksi.php");

$html = '
<h2 style="text-align:center; ">Membuat Laporan Dari Database Menggunakan mPDF</h2>
<h4 style="margin-top: 10pt; text-align:center; margin-collapse:collapse;">Laporan Data Siswa</h4>

<table style="width:100%" class="bpmTopicC">
 <!-- Ini Header Tabelnya -->
 <thead>
 <tr style="text-align:left" class="headerrow">
 <th>NIS Lokal</th>
 <th>NISN</th>
 <td>Nama Siswa</td>
 <td>Tempat Lahir</td>
 <td>Tgl Lahir</td>
 <td>Kelamin</td>
 <td>No KK</td>
 </tr>
 </thead>
 <!-- Ini Body Tabelnya -->
 <tbody>';
 // Tampilkan Data Dari Tabel Siswa
 $no=1;
 $sql = mysql_query("select * from siswa");
 while ($data = mysql_fetch_array($sql)){  
  $html .= '<tr class="'; if (($no % 2) == 0){ $html.="evenrow"; } else { $html.="oddrow"; } $html.='">';
  $html .= '<th>'.$data['nis_lokal'].'</th>';
  $html .= '<th>'.$data['nisn'].'</th>';
  $html .= '<th>'.$data['nama_siswa'].'</th>';
  $html .= '<th>'.$data['tempat_lahir'].'</th>';
  $html .= '<th>'.$data['tanggal_lahir'].'</th>';
  $html .= '<th>'.$data['jenis_kelamin'].'</th>';
  $html .= '<th>'.$data['no_kk'].'</th>';
  $html .= '</tr>';
 $no++;
 }
$html .= '</tbody></table>';

include("mpdf/mpdf.php");
$mpdf = new mPDF('c','A4','','',32,25,27,25,16,13); 
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; 
$stylesheet = file_get_contents('mpdf/mpdfstyletables.css');
$mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($html,2);
$mpdf->Output('laporan-dengan-mpdf.pdf','I');
exit;

?>

Membuat Laporan dari Database dengan FPDF di PHP

Membuat Report atau laporan merupakan hal yang bisa dikatakan primer jika kita membangun aplikasi berbasis database semisal aplikasi pengolahan data penjualan, aplikasi pemimjaman buku perpustakaan dan semacamnya. Dengan hanya melihat laporan kita akan tahu kondisi data yang ada di tabel database.

Aplikasi yang bagus adalah aplikasi yang user friendly dan serba bisa. artinya bisa memahami apa keinginan user. Saya kira memang seperti itulah tujuan dibangunnya sebuah aplikasi yaitu untuk memudahkan pekerjaan yang susah.

Membuat Laporan dari Database dengan FPDF di PHP

Dengan menggunakan PHP, kita dapat membuat laporang dengan Class FPDF yang tersedia secara bebas. anda dapat mendowloadnya di situs resminya disini. Tersedia juga dalam bahasa Indonesia yang diterjemah oleh Kang Oedin. Pada saat postingan ini ditulis fpdf versi terakhir yang dirilis adalah v1.7.

Langkah Membuat Laporan Database dengan Class FPDF

1. Pastikan anda sudah memiliki sebuah database dan minimal sebuah tabel didalamnya. Berikut adalah tampilan contoh data yang saya miliki.

Membuat Laporan dari Database dengan FPDF di PHP

2. Sisipkan File fpdf dan folder font kedalam folder projek anda lalu buat sebuah file koneksi ke database

3. Berikut adalah contoh script cetak laporan dengan fpdf yang saya gunakan
<?php
 // Sisipkan Class FPDF dan File Koneksi
 require('fpdf.php');
 include "koneksi.php";
 
 class PDF extends FPDF{
 // Load data = Pecah Array 
 function LoadData($gue){
  $data = array();
  if (is_array($gue)) {
  foreach($gue as $coba)
   $data[] = explode('|',$coba);
  }
  return $data;
 }

 // Fungsi Membuat Tabel
 function FancyTable($header, $data){
  // Colors, line width and bold font
  $this->SetFillColor(255,0,0);
  $this->SetTextColor(255);
  $this->SetDrawColor(128,0,0);
  $this->SetLineWidth(.3);
  $this->SetFont('','B');
  // Lebar Header Sesuaikan Jumlahnya dengan Jumlah Field Tabel Database
  $w = array(10, 60, 50);
  for($i=0;$i<count($header);$i++)
   $this->Cell($w[$i],7,$header[$i],1,0,'C',true);
  $this->Ln();
  // Color and font restoration
  $this->SetFillColor(224,235,255);
  $this->SetTextColor(0);
  $this->SetFont('');
  // Data
  $fill = false;
  foreach($data as $row){
   // Field Dari Database Yang Ingin ditampilkan
   // $this->Cell($w[Ubah Ini],6,$row[Ubah Ini],'LR',0,'L',$fill);
   $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,$row[2],'LR',0,'L',$fill);
   $this->Ln();
   $fill = !$fill;
  }
  // Closing line
  $this->Cell(array_sum($w),0,'','T');
 }
 }

 $pdf = new PDF();
 // Pendefinisian Header Tabel 
 $header = array('ID', 'Nama', 'Alamat');

 // Load Data dari Database
 $dataku = mysql_query("SELECT * FROM dataku");
 while ($tampil=mysql_fetch_array($dataku)){
 // Simpan Kedalam Array dengan Batasan |
 @$gue[] .= $tampil['id']."|".$tampil['nama']."|".$tampil['alamat'];
 }
 // Cetak Laporan
 $data = $pdf->LoadData($gue);
 $pdf->SetFont('Arial','',14);
 $pdf->AddPage();
 $pdf->FancyTable($header,$data);
 $pdf->Output();
?>

Simpan Script tersebut dengan nama laporan.php. Untuk membuat laporan anda hanya perlu menjalankan file laporan.php tersebut atau bisa juga dengan menggunakan link untuk memanggilnya. Selamat Mencoba. :)

Membuat Laporan Pertanggal dengan Class FPDF PHP

Ini adalah lanjutan dari postingan sebelumnya tentang bagaimana membuat laporan atau report dengan menggunakan class FPDF PHP jika anda belum membacanya silahkan lihat disini. Pada postingan tersebut saya sudah membahas bagaimana membuat sebuah laporan dari semua data yang diambil dari tabel database dan rasanya kurang lengkap jika saya belum membahas bagaimana membuat laporan pertanggal dengan class FPDF ini. stay tune ok. :)

sebelum membuat laporan pertanggal berdasarkan data yang ada di tabel database pastikan dalam field tabel tersebut ada sebuah field dengan type Date/Tanggal suatu misal tanggal register atau tanggal transaksi seperti contoh tabel saya berikut ini.

Membuat Laporan Pertanggal dengan Class FPDF PHP

Selanjutnya sebelum mengeksekusi tombol cetak akan ada penyeleksian data yang dicetak dari tanggal berapa sampai tanggal berapa. Untuk lebih memudahkan sebaiknya memanfaatkan Penggunaan Date time Picker seperti postingan saya disini. Sehingga tampilannya akan menjadi seperti berikut

Membuat Laporan Pertanggal dengan Class FPDF PHP

Membuat Laporan Pertanggal dengan Class FPDF PHP
Kemudian anda tinggal menambahkan aksi formnya menuju file Cetak Laporan anda. Berikut adalah contoh script cetak laporan pertanggal yang saya gunakan. 
<?php 
 include "fpdf.php";
 include "koneksi.php";
 
 class PDF extends FPDF{
 
 // Load data = Pecah Array 
 function LoadData($gue){
  $data = array();
  if (is_array($gue)) {
  foreach($gue as $coba)
   $data[] = explode('|',$coba);
  }
  return $data;
 }

 // Fungsi Membuat Tabel
 function FancyTable($header, $data){
  // Colors, line width and bold font
  $this->SetFillColor(255,0,0);
  $this->SetTextColor(255);
  $this->SetDrawColor(128,0,0);
  $this->SetLineWidth(.3);
  $this->SetFont('','B');
  // Lebar Header Sesuaikan Jumlahnya dengan Jumlah Field Tabel Database
  $w = array(10, 30, 35, 40, 25, 40);
  for($i=0;$i<count($header);$i++)
   $this->Cell($w[$i],7,$header[$i],1,0,'C',true);
  $this->Ln();
  // Color and font restoration
  $this->SetFillColor(224,235,255);
  $this->SetTextColor(0);
  $this->SetFont('');
  // Data
  $fill = false;
  foreach($data as $row){
   // Field Dari Database Yang Ingin ditampilkan
   // $this->Cell($w[Ubah Ini],6,$row[Ubah Ini],'LR',0,'L',$fill);
   $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,$row[2],'LR',0,'L',$fill);
   $this->Cell($w[3],6,$row[3],'LR',0,'L',$fill);
   $this->Cell($w[4],6,$row[4],'LR',0,'L',$fill);
   $this->Cell($w[5],6,$row[5],'LR',0,'L',$fill);
   $this->Ln();
   $fill = !$fill;
  }
  // Closing line
  $this->Cell(array_sum($w),0,'','T');
 }
 }

 $pdf = new PDF();
 // Pendefinisian Header Tabel 
 $header = array('ID','Tanggal','Nama','Jenis Kelamin','Agama','Alamat');
 // Load Data dari Database Memilih Data Berdasarkan Tanggal yang diinput
 $dataku = mysql_query("SELECT * FROM data WHERE (((tanggal) BETWEEN '".$_POST['dari']."' AND '".$_POST['sampai']."'))");
 while ($tampil=mysql_fetch_array($dataku)){
 // Simpan Kedalam Array dengan Batasan |
 @$gue[] .= $tampil['id']."|".$tampil['tanggal']."|".$tampil['nama']."|".$tampil['jenis_kelamin']."|".$tampil['agama']."|".$tampil['alamat'];
 }

 // Cetak Laporan
 $data = $pdf->LoadData($gue);
 $pdf->SetFont('Arial','',14);
 $pdf->AddPage();
 $pdf->FancyTable($header,$data);
 $pdf->Output();
?>