Jumat, 28 November 2014

Membuat laporan perperiode dengan 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. 
01<?php
02 include "fpdf.php";
03 include "koneksi.php";
04  
05 class PDF extends FPDF{
06  
07 // Load data = Pecah Array
08 function LoadData($gue){
09  $data = array();
10  if (is_array($gue)) {
11  foreach($gue as $coba)
12   $data[] = explode('|',$coba);
13  }
14  return $data;
15 }
16 
17 // Fungsi Membuat Tabel
18 function FancyTable($header, $data){
19  // Colors, line width and bold font
20  $this->SetFillColor(255,0,0);
21  $this->SetTextColor(255);
22  $this->SetDrawColor(128,0,0);
23  $this->SetLineWidth(.3);
24  $this->SetFont('','B');
25  // Lebar Header Sesuaikan Jumlahnya dengan Jumlah Field TabelDatabase
26  $w = array(10, 30, 35, 40, 25, 40);
27  for($i=0;$i<count($header);$i++)
28   $this->Cell($w[$i],7,$header[$i],1,0,'C',true);
29  $this->Ln();
30  // Color and font restoration
31  $this->SetFillColor(224,235,255);
32  $this->SetTextColor(0);
33  $this->SetFont('');
34  // Data
35  $fill = false;
36  foreach($data as $row){
37   // Field Dari Database Yang Ingin ditampilkan
38   // $this->Cell($w[Ubah Ini],6,$row[Ubah Ini],'LR',0,'L',$fill);
39   $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
40   $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
41   $this->Cell($w[2],6,$row[2],'LR',0,'L',$fill);
42   $this->Cell($w[3],6,$row[3],'LR',0,'L',$fill);
43   $this->Cell($w[4],6,$row[4],'LR',0,'L',$fill);
44   $this->Cell($w[5],6,$row[5],'LR',0,'L',$fill);
45   $this->Ln();
46   $fill = !$fill;
47  }
48  // Closing line
49  $this->Cell(array_sum($w),0,'','T');
50 }
51 }
52 
53 $pdf = new PDF();
54 // Pendefinisian Header Tabel
55 $header = array('ID','Tanggal','Nama','Jenis Kelamin','Agama','Alamat');
56 // Load Data dari Database Memilih Data Berdasarkan Tanggal yang diinput
57 $dataku = mysql_query("SELECT * FROM data WHERE (((tanggal) BETWEEN '".$_POST['dari']."' AND '".$_POST['sampai']."'))");
58 while ($tampil=mysql_fetch_array($dataku)){
59 // Simpan Kedalam Array dengan Batasan |
60 @$gue[] .= $tampil['id']."|".$tampil['tanggal']."|".$tampil['nama']."|".$tampil['jenis_kelamin']."|".$tampil['agama']."|".$tampil['alamat'];
61 }
62 
63 // Cetak Laporan
64 $data = $pdf->LoadData($gue);
65 $pdf->SetFont('Arial','',14);
66 $pdf->AddPage();
67 $pdf->FancyTable($header,$data);
68 $pdf->Output();
69?>

2 komentar: