Membuat Laporan PDF Dengan PHP dan MySQLi

Membuat laporan dalam bentuk PDF merupakan merupakah salah satu materi yang harus kita kuasai dalam proses pembuatan aplikasi. Kenapa demikian ? Hal ini karena hampir dari keseluruhan aplikasi membutuhkan print laporan pdf.
Untuk membuat laporan PDF dengan menggunakan php dan mysqli disini Kita akan menggunakan library FPDF yang sudah disediakan secara gratis. Dan juga sudah disediakan dekumentasi yang lengkap sehingga sangat memudahkan bagi Kita.
Membuat Laporan PDF Dengan PHP dan MySQLi
Menlengkapi pembahasan sebelumnya print data dari database menggunakan php yang menggunakan tidak menggunakan library, dengan hanya menggunakan script window.print();
Pada materi kali ini, Kita akan membuat print laporan pdf menggunakan FPDF. FPDF adalah salah satu library yang meungkinkan kita untuk mengenerate file PDF secara langsung dari php tanpa harus memanggil modul-modul tertentu.
Ada banyak library yang bisa digunakan untuk membuat laporan pdf di php. Library tersebut antara lain dompdf, tcpdf, mpdf dan lain masih banyak lainnya. Hanya saja menurut saya penggunaan fdf ini sangat simple dan sangat mudah.
Langsung saja kita ke materi bagaimana cara membuat laporan pdf pada php dan mysqli. Adapun yang perlu dipersialkan adalah library fpdf itu sendiri yang bisa Kamu download di link di bawah ini :
1 |
http://fpdf.org/en/download.php |
Untuk versinya sendiri disini saya download fpdf versi 1.84 (2021-08-28). Saran saya untuk disesuaikan untuk mencegah terjadi error nantinya.
Persiapan Membuat Laporan PDF pada PHP
Library yang kita butuhkan sudah di download. Hal lain yang perlu dipersiapkan yaitu database berserta tablenya. Disini saya menggunakan tabel karyawan, untuk struktur tabelnya bisa dilihat di gambar berikut:

Untuk database dengan tbl_karyawan bisa kamu lihat/ambil langsung di code berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
-- phpMyAdmin SQL Dump -- version 5.1.1 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Waktu pembuatan: 03 Sep 2022 pada 11.00 -- Versi server: 10.4.21-MariaDB -- Versi PHP: 7.3.31 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `tutorial_malasngoding` -- -- -------------------------------------------------------- -- -- Struktur dari tabel `tbl_karyawan` -- CREATE TABLE `tbl_karyawan` ( `karyawan_id` int(11) NOT NULL, `karyawan_nama` varchar(100) DEFAULT NULL, `karyawan_alamat` varchar(100) DEFAULT NULL, `karyawan_email` varchar(100) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Dumping data untuk tabel `tbl_karyawan` -- INSERT INTO `tbl_karyawan` (`karyawan_id`, `karyawan_nama`, `karyawan_alamat`, `karyawan_email`) VALUES (6, 'Desi Mursalina', 'Pakjo Palembang', 'desimursalina@admin.com'), (7, 'Lana Aldillah', 'Bukit ', 'lanaaldillah@admin.com'), (8, 'Ramadhona Utama', 'Komp. Sentaraland Jln. Palem Putri No. 7', 'ramadhona@admin.com'), (9, 'Ahmad Alqayyum SA', 'Jln. Komering Blok P No. 3 Palembang', 'aasablues@admin.com'), (10, 'Muhammad Ilham Ismail', 'Komp. Alam Raya Residence Blok E.', 'milhamismail1@admin.com'), (11, 'Zafran Arif Satriadi', 'Komp. Sangkuriang Indah SMP 53 Palembang', 'zafranarip09@admin.com'), (12, 'Muhammad Maturidi', '12 Ulu Palembang', 'maturidimuhammad@admin.com'); -- -- Indexes for dumped tables -- -- -- Indeks untuk tabel `tbl_karyawan` -- ALTER TABLE `tbl_karyawan` ADD PRIMARY KEY (`karyawan_id`); -- -- AUTO_INCREMENT untuk tabel yang dibuang -- -- -- AUTO_INCREMENT untuk tabel `tbl_karyawan` -- ALTER TABLE `tbl_karyawan` MODIFY `karyawan_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
Langkah selanjutnya kita akan buat file koneksi.php.
FIle ini digunakan untuk menghubungkan php dengan database yang digunakan. Disini saya tidak menjelaskan lebih rinci bagaimana proses pembuatan file konksi.php Anda bisa membacanya sendiri di materi sebelumnya disini.
1 2 3 4 |
<?php //$koneksi = mysqli_connect("hostname","username","password","nama_database"); $koneksi = mysqli_connect("localhost","root","","tutorial_malasngoding"); ?> |
Menampilkan data dengan PHP
Selanjutnya Kita akan menampilkan data terlebih dahulu. Untuk meteri menampilkan data dengan php dan mysqli juga sudah pernah di bahas sebelumnya dan silahkan Anda baca di link berikut :
1 |
<a href="https://www.malasngoding.com/membuat-crud-dengan-php-dan-mysqli-menampilkan-data/" target="_blank" rel="noreferrer noopener">https://www.malasngoding.com/membuat-crud-dengan-php-dan-mysqli-menampilkan-data/</a> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
<?php include 'koneksi.php' ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Membuat Laporan PDF Dengan PHP dan MySQLi</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> </head> <body> <div class="container"> <center><h2>Membuat Laporan PDF Dengan PHP dan MySQLi</h2></center> <br> <div class="float-right"> <a href="karyawan_pdf.php" target="_blank" class="btn btn-success"><i class="fa fa-file-pdf-o"></i>   PRINT</a> <br> <br> </div> <table class="table table-bordered"> <thead> <tr> <th style="text-align: center;">Nomor</th> <th style="text-align: center;">Nama</th> <th style="text-align: center;">Alamat</th> <th style="text-align: center;">Email</th> </tr> </thead> <tbody> <?php $no=1; $data = mysqli_query($koneksi,"SELECT * FROM tbl_karyawan"); while($d = mysqli_fetch_array($data)){ ?> <tr> <td><?php echo $no++; ?></td> <td><?php echo $d['karyawan_nama'] ?></td> <td><?php echo $d['karyawan_alamat'] ?></td> <td><?php echo $d['karyawan_email'] ?></td> </tr> <?php } ?> </tbody> </table> </div> </body> </html> |
Potongan kode diatas menghasilkan seperti gambar di bawah ini :

Print PDF dengan PHP
Yang terakhir yang menjadi induk permasalahan dalam materi tutorial ini yaitu membuat laporan file pdf menggunakan php. Perhatikan potongan kode berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php // memanggil library FPDF require('library/fpdf.php'); include 'koneksi.php'; // intance object dan memberikan pengaturan halaman PDF $pdf=new FPDF('P','mm','A4'); $pdf->AddPage(); $pdf->SetFont('Times','B',13); $pdf->Cell(200,10,'DATA KARYAWAN',0,0,'C'); $pdf->Cell(10,15,'',0,1); $pdf->SetFont('Times','B',9); $pdf->Cell(10,7,'NO',1,0,'C'); $pdf->Cell(50,7,'NAMA' ,1,0,'C'); $pdf->Cell(75,7,'ALAMAT',1,0,'C'); $pdf->Cell(55,7,'EMAIL',1,0,'C'); $pdf->Cell(10,7,'',0,1); $pdf->SetFont('Times','',10); $no=1; $data = mysqli_query($koneksi,"SELECT * FROM tbl_karyawan"); while($d = mysqli_fetch_array($data)){ $pdf->Cell(10,6, $no++,1,0,'C'); $pdf->Cell(50,6, $d['karyawan_nama'],1,0); $pdf->Cell(75,6, $d['karyawan_alamat'],1,0); $pdf->Cell(55,6, $d['karyawan_email'],1,1); } $pdf->Output(); ?> |
Baik, Saya akan menjelaskan detail dari potingan kode mencetak file pdf.
1 2 3 4 |
// memanggil library FPDF require('library/fpdf.php'); include 'koneksi.php'; |
kode ini memanggil library dari fpdf.php
yang berfungsi sebagai library yang Saya gunakan untuk menggenerate file pdf. Sedangkan file koneksi.php
berfungsi sebagai penghubung antara php dan database mysqli.
1 2 3 |
// intance object dan memberikan pengaturan halaman PDF $pdf=new FPDF('P','mm','A4'); $pdf->AddPage(); |
Kedua baris kode ini berfungsi sebagai pengaturan halaman file PDF. String dengan nama pdf menyimpan objek FPDF dengan pengaturan P
sebagai jenis layout (potrait). mm
adalah ukuran dengan A4
adalah ukuran kertas yang digunakan.
1 2 |
$pdf->SetFont('Times','B',13); |
Potongan kode selanjutnya yaitu Kita set jenis dan ukuran font yang digunakan SetFont('Times','B',13)
. Disini saya menggunakan font Time New Roman ‘Times’, jenis font bold ‘B’ dan ukuran font 13.
1 2 3 4 5 6 |
$pdf->Cell(200,10,'DATA KARYAWAN',0,0,'C'); $pdf->Cell(10,7,'NO',1,0,'C'); $pdf->Cell(50,7,'NAMA' ,1,0,'C'); $pdf->Cell(75,7,'ALAMAT',1,0,'C'); $pdf->Cell(55,7,'EMAIL',1,0,'C'); |
Baris pertama dari potongan kode ini kita akan membuat judul file PDF nantinya. Baris kedua digunakan untuk membuat judul dari kolum (nomor, nama, alamat dan email.
1 2 3 4 5 6 7 8 |
$data = mysqli_query($koneksi,"SELECT * FROM tbl_karyawan"); while($d = mysqli_fetch_array($data)){ $pdf->Cell(10,6, $no++,1,0,'C'); $pdf->Cell(50,6, $d['karyawan_nama'],1,0); $pdf->Cell(75,6, $d['karyawan_alamat'],1,0); $pdf->Cell(55,6, $d['karyawan_email'],1,1); } |
Ini adalah potongan kode yang digunakan untuk memanggil dan menampilkan data dalam database. Baris pertama panggil semua data yang ada dalam tbl_karyawan. Selanjutnya buat perulangan sebanyak jumlah data yang ada dan tampilkan kedalam tabel.
Hasil dari laporan pdf yang dihasilkan dari kode diatas adalah :

Baik sekian dulu materi menampilkan file pdf dengan php dan mysqli. Dimateri yang terkait dengan materi ini kita akan mencoba set margin dan marge cell dimana ketika misalnya alamat terlalu panjang maka dia akan otomatis menampilkan ke bawah.
Tutorial Menarik Lainnya

Membuat Form Login Dengan PHP Tanpa Database


Menghitung Selisih Waktu Dengan PHP


Membuat CRUD menggunakan Ajax PHP – Hapus Data

