Categories
mysql PHP

Membuat laporan PDF PHP berdasarkan kondisi Menggunakan FPDF

membuat laporan pdf php berdasarkan kondisi

Pada artikel sebelumnya yang telah kami publish kami telah membahas artikel seperti ini, tetapi pada artikel sebelumnya kami menggunakan Generator TCPDF. Nah pada kesempatan kali ini kami akan mencoba membahas bagaimana membuat laporan PDF PHP berdasarkan kondisi menggunakan FPDF.

Kenapa kami mengatakan berdasarkan kondisi? karena kadang pengguna system hanya ingin membuat laporan berdasarkan data tertentu dan tanggal tertentu sesuai dengan yang mereka kehendaki. Artikel dibawah telah kami publish pada website kami yang pertama.

Apa itu FPDF?

Menurut situs resmi FPDF “FPDF adalah kelas PHP yang memungkinkan untuk menghasilkan file PDF dengan PHP murni, artinya tanpa menggunakan perpustakaan PDFlib. F dari FPDF adalah singkatan dari Free” dan itu berrati Anda dapat menggunakannya untuk segala jenis penggunaan dan memodifikasi sesuai dengan kebutuhan Anda.

Berikut adalah daftar fitur utama dari generator FPDF:

  • Pilihan satuan ukuran, format halaman dan margin
  • Manajemen header dan footer
  • Istirahat halaman otomatis
  • Perpisahan garis otomatis dan pembenaran teks
  • Dukungan gambar (JPEG, PNG dan GIF)
  • Warna
  • Tautan
  • Dukungan TrueType, Type1 dan encoding
  • Kompresi halaman

Sebelum kita masuk ke pembahasan inti Anda terlebih dahulu di haruskan untuk mendownload generator FPDF. Langsung saja mari kita masuk kedalam pembahasan inti.

1. Buat database dengan nama cms kemudian masukkan struktur database dibawah ini.

CREATE TABLE `tblcomplaints` (
  `complaintNumber` int(11) NOT NULL,
  `userId` int(11) NOT NULL,
  `category` int(11) NOT NULL,
  `subcategory` varchar(255) NOT NULL,
  `complaintType` varchar(255) NOT NULL,
  `state` varchar(255) NOT NULL,
  `noc` varchar(255) NOT NULL,
  `complaintDetails` mediumtext NOT NULL,
  `complaintFile` varchar(255) DEFAULT NULL,
  `regDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `status` varchar(50) DEFAULT NULL,
  `lastUpdationDate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


INSERT INTO `tblcomplaints` (`complaintNumber`, `userId`, `category`, `subcategory`, `complaintType`, `state`, `noc`, `complaintDetails`, `complaintFile`, `regDate`, `status`, `lastUpdationDate`) VALUES
(9, 13, 2, 'Computer Lab', 'General Query', '', 'Damage', 'Ngga nyala', '', '2018-02-19 19:33:26', 'closed', '2018-03-01 21:43:19'),
(10, 13, 3, '203', ' Complaint', '', 'Repairs', 'Roboh', '', '2018-02-19 19:34:06', NULL, '2018-03-01 20:14:27'),
(11, 13, 5, '403', ' Complaint', '', 'Repairs', 'Ac nyala tapi nda dingin pak', '', '2018-02-19 19:34:42', NULL, '2018-03-01 20:14:42'),
(12, 8, 4, '303', ' Complaint', '', 'Repairs', 'Panas Pak', '', '2018-02-20 19:44:11', NULL, '2018-03-01 20:15:01'),
(13, 8, 3, '204', ' Complaint', '', 'Damage', 'nda nyala', '', '2018-03-20 19:44:27', NULL, '2018-03-01 20:15:16'),
(14, 8, 3, 'Select Room Available', 'General Query', '', 'Repairs', 'Rusak Parah', '', '2018-02-23 19:44:44', NULL, '2018-03-01 20:16:05'),
(15, 9, 5, '401', ' Complaint', '', 'Damage', 'Rusak Parah pak', '', '2018-02-24 19:46:37', NULL, '2018-03-01 20:15:35'),
(16, 9, 3, '202', ' Complaint', '', 'Penting', 'Panas Atu', '', '2018-03-01 19:47:03', NULL, '2018-03-01 20:09:32'),
(17, 9, 4, '302', ' Complaint', '', 'Damage', 'Panas Oak', '', '2018-03-01 19:47:21', NULL, '2018-03-01 20:09:14'),
(18, 15, 3, '202', ' Complaint', '', 'Damage', 'Pans Banget Pak', '', '2018-03-01 19:51:19', NULL, '2018-03-01 20:08:38'),
(19, 15, 3, '203', ' Complaint', '', 'Repairs', 'Mantap Jiwa', '', '2018-03-01 20:02:08', NULL, '2018-03-01 20:08:26'),
(20, 15, 4, '303', ' Complaint', '', 'Repairs', 'Cepat ya pak', '', '2018-03-01 20:05:12', NULL, '0000-00-00 00:00:00');

2. Buat file dengan nama config.php file ini sebagai koneksi ke database.

<?php

define('DB_HOST', 'localhost');
define('DB_USER','root');
define('DB_PASS' ,'');
define('DB_NAME', 'cms');
$con = mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
// Check connection
if (mysqli_connect_errno())
{
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

?>

3. Buat file dengan nama index.php file ini sebagai form utama dalam system dan juga form pop up (Modal), Kami menggunakan kondisi start date dan end date untuk membuat laporan sesuai dengan tanggal yang di inginkan.

<?php
session_start();
error_reporting(0);
include('config.php');

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Print Report</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
    <script src="https://code.highcharts.com/highcharts.js"></script>
    <script src="https://code.highcharts.com/modules/exporting.js"></script>
    <script src="https://code.highcharts.com/modules/export-data.js"></script>
</head>
<body class="app sidebar-mini rtl">
  <header class="app-header"><a class="app-header__logo" href="#">PRINT</a>
  </header>
  <aside class="app-sidebar">
      <ul class="app-menu">
        <li><a class="treeview-item" data-toggle="modal" href="#exampleModal"><i class="icon fa fa-print"></i> PRINT FILTER</a></li>
    </ul>
</aside>


<!-- Modal -->
<form method="POST" action="report-filter.php" target="_blank" >
  <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="exampleModalLabel"><small>PRINT FILTER DATE</small></h5>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
    <div class="modal-body">
      <div class="form-group">
        <label class="control-label">Star Date</label>
        <input type="date" name="from" id="stayf" value="<?php echo date('Y-m-d'); ?>" class="form-control">
    </div>
    <div class="form-group">
        <label class="control-label">End Date</label>
        <input type="date" name="end" id="stayf" value="<?php echo date('Y-m-d'); ?>" class="form-control">
    </div>                
    <div class="form-group">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button class="btn btn-primary" type="submit" name="submit" value="proses" onclick="return valid();">Print</button>
    </div>
</div>
</div>  
</div>
</div>
</form>
<!--end modal-->

<main class="app-content">
</main>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/main.js"></script>
<script src="js/plugins/pace.min.js"></script>
</body>
</html>

4. Buat file dengan nama report-filter.php file ini mempunyai fungsi utama dalam system. Script pada file merupakan PHP murni yang telah terhubung dengan generator FPDF dan membuat laporan dalam bentuk PDF.

<?php
session_start();
error_reporting(0);
include('config.php');
require('fpdf/fpdf.php');

date_default_timezone_set('Asia/Jakarta');// change according timezone

$currentTime = date( 'd-m-Y h:i:s A', time () );


$pdf = new FPDF("L","cm","A4");

$pdf->SetMargins(0.5,1,1);
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','B',11);
$pdf->Image('images/php.png',1,1,2,2);
$pdf->SetX(4);            
$pdf->MultiCell(19.5,0.5,'TUTORIALSWB & TUTORPHPID',0,'L');
$pdf->SetX(4);
$pdf->MultiCell(19.5,0.5,'Telepon : +62 81524737292',0,'L');    
$pdf->SetFont('Arial','B',10);
$pdf->SetX(4);
$pdf->MultiCell(19.5,0.5,'Mamampang, Keluarahan Garassi, kecamatan Tinggimoncong, Kabupaten Gowa',0,'L');
$pdf->SetX(4);
$pdf->Line(1,3.1,28.5,3.1);
$pdf->SetLineWidth(0.1);      
$pdf->Line(1,3.2,28.5,3.2);   
$pdf->SetLineWidth(0);
$pdf->ln(1);
$pdf->SetFont('Arial','B',14);
$pdf->Cell(25.5,0.7,"Report Filter Complaint",0,10,'C');
$pdf->ln(1);
$pdf->SetFont('Arial','B',10);
$pdf->Cell(5,0.7,"Printed On : ".date("D-d/m/Y"),0,0,'C');
$pdf->ln(1);
$pdf->SetFont('Arial','B',9);
$pdf->Cell(1, 0.8, 'NO', 1, 0, 'C');
$pdf->Cell(7, 0.8, 'facility Name', 1, 0, 'C');
$pdf->Cell(9, 0.8, 'building Name', 1, 0, 'C');
$pdf->Cell(4.5, 0.8, 'Reg Date', 1, 0, 'C');
$pdf->Cell(4.5, 0.8, 'Update Date', 1, 0, 'C');
$pdf->Cell(2, 0.8, 'status', 1, 1, 'C');
$pdf->SetFont('Arial','',9);
$no=1;

$from=$_POST['from'];
$end=$_POST['end'];
$query=mysqli_query($con,"select * from tblcomplaints WHERE (regDate BETWEEN '$from' AND '$end')");
while($lihat=mysqli_fetch_array($query)){

	$pdf->Cell(1, 0.8, $no, 1, 0, 'C');
	$pdf->Cell(7, 0.8, $lihat['facilityName'], 1, 0,'C');
	$pdf->Cell(9, 0.8, $lihat['buildingName'], 1, 0,'C');
	$pdf->Cell(4.5, 0.8, $lihat['regDate'],1, 0, 'C');
	$pdf->Cell(4.5, 0.8, $lihat['lastUpdationDate'],1, 0, 'C');
	$pdf->Cell(2, 0.8, $lihat['status'], 1, 1,'C');

	$no++;
}
$pdf->ln(1);
$pdf->SetFont('Arial','B',11);
$pdf->Cell(40.5,0.7,"Approve",0,10,'C');

$pdf->ln(1);
$pdf->SetFont('Arial','B',9);
$pdf->Cell(40.5,0.7,"TUTORIALSWB & TUTORPHPID",0,10,'C');

$pdf->Output("laporan_buku.pdf","I");

?>

Sekian share singkat di atas kalian bisa mendownload filenya dan mempelajari secara detail bagaimana kami membuat laporan menggunakan FPDF.

Dalam membuat laporan PDF PHP berdasarkan kondisi kami sangat menyarankan Anda menggunakan Generator yang satu ini karena FPDF merupakan salah satu library PHP yang dapat digunakan untuk membuat laporan maupun dokumen PDF lainnya secara mudah, tanpa perlu menginstall atau mengaktifkan modul tertentu. Laporan PDF yang dihasilkan juga memiliki tampilan yang baik dan berkualitas.

Leave a Reply

Your email address will not be published. Required fields are marked *