Menampilkan Laporan di PHP berdasarkan tanggal yang dipilih menggunakan FPDF

//lh4.googleusercontent.com/-eAXyxy2JJKA/AAAAAAAAAAI/AAAAAAAAGS4/OHgzqHzCvtQ/s512-c/photo.jpg
March 03, 2018

Selamat malam sobat kali ini kami akan share bagaimana membuat Print Filter atau lebih jelasnya Menampilkan Laoran di PHP berdasarkan tanggal yang dipilih menggunakan FPDF. Saya telah membaca banyak artikeldi Internet tetapi di antara penjelasan yang ada belum ada yang membuat Postingan seperti dengan penjelasan yang detail.

Sebenarnya saya tidak berniat membahas postingan seperti ini tetapi karena banyaknya komentar yang saya lihat dari salah satu web.

Oleh karena itu kami ingin menjelaskan bagaimana Menampilkan Laoran di PHP berdasarkan tanggal yang dipilih menggunakan FPDF. Tapi sebelumnya kami ingin menjelaskan 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.

FPDF memiliki kelebihan lain: fungsi tingkat tinggi. Berikut adalah daftar fitur utamanya:

  • 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

FPDF tidak memerlukan ekstensi (kecuali Zlib untuk mengaktifkan kompresi dan GD untuk dukungan GIF).

Tapi yang pertma anda lakukan adalah download dan instalasi FPDF

Anda bisa download file FPDF dari situs resmi yang mereka miliki di http://www.fpdf.org/ Ekstrak file yang telah anda download tadi dan simpan di folder htdocs anda. Seperi penjelasan pada situs resmi mereka, FDPF sangat simple dalam penggunaannya yaitu anda tidak mesti instalasi anda hanya memanggilnya <include> dengan perintah require.

Tutorial ini saya ambil dari salah satu project web saya dan saya rasa membagikannya adalah hal yang snagat berguna. Berikut tahap-tahapnya.

Membuat Database Untuk namanya terserah anda, Nanti tinggal anda sesuaikan ketika memanggil databasenya nanti. Saya berikan saja contohnya sesuai dengan project saya. Untuk tabelnya disini saya memberi nama tblcomplaint.

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;


Tabel di atas terdapat banyak kueri tetapi itu terserah anda mau menggunakan semua atau cuma separuh tersehah kebutuhan saja, Namin tabel yang harus ada yaitu tabel "regDate" karena nnati kita memanggil atau filter dengan tanggal itu.

Kemudian anda memasukkan isi dari tebal di atas, berikut yang anda harus mesukkan.
 

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');



Karena kita telah membuat database di atas, yang mesti kita lakukan berikutnya adalah membuat form untuk memasukkan tanggal (star) mulai dan tanggal akhir (end). Untuk lebih jelasnya berikut gambar form yang saya maksud.

 

<form method="POST" action="report-filter.php" target="_blank" >      
 <div class="modal-sm">
   <div class="modal-content">
  <div class="modal-header">
    <h4 class="modal-title">Print Filter ?
    </h4>
  </div>
  <div class="modal-body">
    <div class="control-group">
   <label class="col-sm-2 control-label">Star Date</label>
   <div class="col-sm-6">
   <input type="date" name="from" id="stayf" value="<?php echo date('Y-m-d'); ?>" class="form-control" style="width:515px;height:25px">
   </div>
     </div>
     <div class="control-group">           
   <label class="col-sm-2 control-label">End Date</label>
   <div class="col-sm-8">
   <input type="date" name="end" id="stayf" value="<?php echo date('Y-m-d'); ?>" class="span5" style="width:515px;height:25px">
   </div>
     </div>
  </div>        
  
  <div class="modal-footer">
    <button data-dismiss="modal" class="btn btn-default" type="button">Cancel
    </button>
    <button class="btn btn-info" type="submit" name="submit" value="proses" onclick="return valid();">Search
    </button>
  </div>
   </div>
 </div>
</form>


Simpan file di atas dengan star_filter.php atau terserah anda. Pastikan untuk menggunakan method="POST" dan action="report_filter.php. Jika anda bertanya apa fungsi dari action="report_filter.php, Fungsi dari kode itu adalah ketika anda klik button search maka anda akan di alihkan ke file report_filter.

Berikutnya anda membuat file dengan nama report_filter.php dan masukkan kodingan dibawah ini.
 

<?php
define('DB_SERVER','localhost');
define('DB_USER','root');
define('DB_PASS' ,'');
define('DB_NAME', 'cms');
$con = mysqli_connect(DB_SERVER,DB_USER,DB_PASS,DB_NAME);
// Check connection
if (mysqli_connect_errno())
{
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Memanggil file fpdf yang anda tadi simpan di folder htdoc
require('../fpdf/fpdf.php');
{
date_default_timezone_set('Asia/Jakarta');// change according timezone
$currentTime = date( 'd-m-Y h:i:s A', time () );
}

// Ukuran kertas PDF
$pdf = new FPDF("L","cm","A4");

$pdf->SetMargins(2,1,1);
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','B',11);
$pdf->ln(1);
$pdf->SetFont('Arial','B',10);
//Format tanggal
$pdf->Cell(5,0.7,"Printed On : ".date("D-d/m/Y"),0,0,'C');
$pdf->ln(1);
// st font yang ingin anda gunakan
$pdf->SetFont('Arial','B',10);
// queri yang ingin di tampilkan di tabel sehingga ketika diubah tidak akan berpengaruh
// Kode 1, 0, 'C' dan banyak kode di bawah adalah ukuran lebar tabel ubah jika tidak sesuai keinginan anda.
$pdf->Cell(1, 0.8, 'NO', 1, 0, 'C');
$pdf->Cell(4.5, 0.8, 'Room', 1, 0, 'C');
$pdf->Cell(9, 0.8, 'Complaints Details', 1, 0, 'C');
$pdf->Cell(4.5, 0.8, 'Regist 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','',10);
$no=1;
// from dan edn ini adalah nama dari form star_filter.php yang berfungsi untuk memanggil tanggal yang di atur
$from=$_POST['from'];
$end=$_POST['end'];
// memanggil database
$query=mysqli_query($con,"select * from tblcomplaints WHERE (regDate BETWEEN '$from' AND '$end')");
while($lihat=mysqli_fetch_array($query)){

// Queri yang ingin ditampilkan yang berada di database
 $pdf->Cell(1, 0.8, $no, 1, 0, 'C');
 $pdf->Cell(4.5, 0.8, $lihat['subcategory'], 1, 0,'C');
 $pdf->Cell(9, 0.8, $lihat['complaintDetails'], 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,"Technician Name",0,10,'C');
// Nama file ketika di print
$pdf->Output("laporan_buku.pdf","I");

?>

Saya akan mencoba sendiri, disini saya ingin mengeprip dari tanggal 20-02-2018 sampai tanggal 25-02-2018. berikut gambarnya dibawah.

Sekarang anda bisa mencobanya sendiri, Saya tidak perlu menjelaskan secara rinci kodingan di atas, karena saya telah menyelipkan penjelasan di setiap kodingan yang menurut saya penting.

Jadi saya sangat merekomendasikan penggunaan FPDF ini untuk mencetal report yang di inginkan, Anda tinggal memasukkan tanggal dan klik search maka laporan yang anda cari muncul.

PHP memiliki kemampuan yang sangat baik dalam membuat file PDF on-the-fly. 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.

Mungkin sekian postingan di atas, Jika anda masih bingin dalam penggunaan di atas, atau anda menemui kodingan yang error silahkan tinggalkan comment dibawah saya akan senang hati membantu anda. Makasih


Artikel Menarik Lainnya


SUBSCRIBE TO OUR NEWSLETTER