Membuat Laporan PDF dengan PHP dan MySQL

Ditulis Oleh:

Membuat Laporan PDF dengan PHP dan MySQL – Kembali lagi Sahabat Programmer saya kali ini akan membahas mengenai bagaimana cara kita membuat laporan yang dapat di download berupa file pdf melalui aplikasi php dan database mysql.

Laporan merupakan fitur penting dan wajib ada pada sebuah aplikasi web (apalagi yang berhubungan dengan data). Fitur ini biasanya terdapat dua format utama yaitu excel dan pdf, namun ada juga yang menggunakan format csv.

Pada postingan lai ini saya akan membahas secara khusus bagaimana cara membuat laporan pdf dengan php dan mysql. untuk format excel dan atau csv akan saya bahas pada artikel yang lain.

Jadi untuk membuat laporan pdf tersebut kita akan menggunakan plugin fpdf. Plugin tersebut sangat populer dikalangan programer web. Karena alasan penggunaan yang mudah (disisi programming) dan terdapat dokumentasi yang lengkap yang disedikan di situs resminya.

Dengan menggunakan plugin fpdf kita dapat mengatur posisi, ukuran kertas dan cell, jenis font serta ukurannya sesuai dengan yang ingin kita gunakan. Langsung saja ikuti langkah-langkah berikut ini:

Download Plugin FPDF

Tahap pertama kita download dulu plugin fpdf nya pada website resminya: Download fpdf

Hingga artikel ini diterbitkan versi terbaru yang tersedia dan dapat didownload pada situs fpdf.org adalah versi v1.81 yang di rilis pada 20 desember 2015. Silahkan kalian klik link ‘ZIP‘ untuk mendownloadnya.

Selanjutnya buat sebuah folder project baru (optional) didalam folder htdocs, disini saya namakan foldernya dengan nama laporan-pdf. Kalian tidak harus membuat folder ini jika kalian sudah punya folder projek didalam htdocs.

Baca juga : Pencarian Data di database dengan PHP

Setelah membuat foder didalam htdocs, selanjutnya extract hasil download file yang telah kita download kedalam folder projek kita. Saya membuat folder baru dengan nama plugin kemudian saya buat kembali folder fpdf didalam folder tersebut. Untuk lebih jelasnya lihat gambar berikut

Konfigurasi Database

Buat sebuah database dengan nama ‘akademik

create database akademik;

Buat Tabel dengan nama mahasiswa

create table mahasiswa (
    nik char(10) not null primary key,
    nama varchar(50) not null,
    jk char(1),
    tanggal_lhr date,
    jurusan char(2),
    umur int
    );

Selanjutnya kita masukan beberapa contoh data ke tabel mahasiswa.

INSERT INTO mahasiswa
VALUES ('135410156','Ahmad Riko','1','1995-02-23','TI',22),
('135610157','Dahlan Iskan','1','1998-03-26','SI',20),
('135410189','Wawan Setiawan','1','1993-02-13','TI',23),
('135310156','Safitri Ayu','2','1995-09-01','TK',22),
('135310150','Rian Hidayat','1','1997-08-05','TK',20),
('135510920','Dani Hermawan','1','1996-05-05','SI',23),
('135518322','Nita Daniyatun','2','1994-09-05','TI',23),
('135518900','Mili Wilian','2','1995-10-08','SI',22),
('135510190','Marshel Saraun','1','1993-10-23','MI',23),
('135510191','Nacha Saraun','2','1995-01-13','MI',20),
('135558944','Bayu Mandalika','1','1997-01-15','SI',19),
('158984545','Juan Burnama','1','1993-01-20','SI',24),
('158549583','Candra Sidauruk','1','1994-10-22','TK',23),
('136349343','Kory Ubi','2','1992-10-29','MI',25),
('147343998','Chika Lestari','2','1996-11-12','MI',21);

Baca juga : Membuat database mysql dengan phpmyadmin

Membuat Laporan PDF Sederhana

Pada tahap ini kita membuat file PHP disini saya menggunakan nama index.php kalian bisa menggunakan nama sesuai projek kalian.

<?php

require('plugin/fpdf/fpdf.php');
$pdf = new FPDF('P', 'mm','Letter');

$pdf->AddPage();

$pdf->SetFont('Times','B',16);
$pdf->Cell(0,7,'CONTOH DAFTAR MAHASISWA',0,1,'C');

$pdf->Cell(10,7,'',0,1);

$pdf->SetFont('Times','B',10);

$pdf->Cell(8,6,'No',1,0,'C');
$pdf->Cell(20,6,'NIK',1,0,'C');
$pdf->Cell(50,6,'Nama',1,0,'C');
$pdf->Cell(30,6,'Jenis Kelamin',1,0,'C');
$pdf->Cell(30,6,'Tanggal Lahir',1,0,'C');
$pdf->Cell(30,6,'Jurusan',1,0,'C');
$pdf->Cell(20,6,'Umur',1,1,'C');

$pdf->SetFont('Times','',10);

//Membuat Koneksi ke database akademik
$host="localhost";
$user="root";
$password="";
$db="akademik";

$kon = mysqli_connect($host,$user,$password,$db);

$no=1;
$jk='';
//Query untuk mengambil data mahasiswa pada tabel mahasiswa
$hasil = mysqli_query($kon, "select * from mahasiswa order by nik asc");
while ($data = mysqli_fetch_array($hasil)){
    if ($data['jk']==1){
        $jk='Lali-laki';
    }else{
        $jk='Perempuan';
    }
    $pdf->Cell(8,6,$no,1,0);
    $pdf->Cell(20,6,$data['nik'],1,0);
    $pdf->Cell(50,6,$data['nama'],1,0);
    $pdf->Cell(30,6,$jk,1,0);
    $pdf->Cell(30,6,$data['tanggal_lhr'],1,0);
    $pdf->Cell(30,6,$data['jurusan'],1,0);
    $pdf->Cell(20,6,$data['umur'],1,1);
    $no++;
}

$pdf->Output();
?>

Penjelasan:

Saya sedikit menjelaskan program diatas.

require('plugin/fpdf/fpdf.php');

Sintak diatas berfungsi untuk memanggil/menyertakan plugin fpdf.php yang terdapat didalam folder plugin/fpdf.

$pdf = new FPDF('P', 'mm','Letter');

Sintak diatas untuk insialisasi objek fpdf dengan paramer:

  • ‘P’ Merupakan pengaturan orientasi halaman yang artinya menggunakan halaman dengan posisi potrait (tegak), sementara bila ingin menggunakan posisi landspace maka perlu menggunakan nilai ‘L’ ingat disini besar kecilnya huruf berpengaruh (case sensitive) pastikan kalian menggunakan huruf besar semuanya.
  • selanjutnya ada nilai ‘mm’sebagai satuan yang dipakai untuk mengatur panjang halaman. ada beberapa satuan lain yang bisa digunakan misalnya ‘pt’ (point), ‘cm'(centimeter) dan ‘in’ untuk inci.
  • Terakhir ada nilai ‘Letter’ yang merupakan ukuran format halaman yang digunakan ada beberapa format ukuran lain yang bisa dipakai misalnya A3, A4, A5 dan Legal.
$pdf->AddPage();

Fungsi sintak diatas untuk menambahkan halaman baru kedalam dokumen.

$pdf->SetFont('Times','B',16);

Sintak diatas digunakan untuk pengaturan huruf yang digunakan. Pada contoh tersebut saya menggunakan jenis huruf Times new roman. ada beberapa huruf lainnya yang bisa digunakan misalnya ‘Arial’ dan ‘Courier’.

Pada nilai parameter kedua ‘B’ Menunjukan style huruf Bold kalian bisa gunakan ‘I’ untuk italic dan ‘U’ untuk underline.

Terakhir ’16’ Merupakan ukuran font yang digunakan ukuran yang dipakai adalah point.

$pdf->Cell(0,7,'CONTOH DAFTAR MAHASISWA',0,1,'C');

Sintak diatas berfungsi untuk membuat cell (are berbentuk kotak) dengan penjelelasan berikut:

  • 0 adalah nilai dari lebar yang digunakan. dengan nilai 0 artinya bahwa kita tidak mengatur lebar cell tersebut.
  • 7 nilai tersebut menandakan tinggi cell.
  • ”CONTOH DAFTAR MAHASISWA’ merupakan kalimat yang akan dicetak didalam cell tersebut.
  • 0 Merupakan nilai untuk pembuatan border cell. dengan mengguakan 0 artinya bahwa border tidak digunakan. Sementara jika ingin menggunakan border masukan nilai 1.
  • 1 Menujukan kemana posisi akan berpindah setelah pembuatan cell selesai 1 menujukan perpindahan posisi pada awal baris berikutnya. Jika tidak ingin berpindah baris gunakan nilai 0.
  • ‘C’ Merupakan jenis untuk perataan teks didalam cell. ‘C’ digunakan untuk rata tengah. Sementara’ L’ digunakan untuk rata kiri dan ‘R’ untuk rata kanan.
$pdf->Cell(8,6,'No',1,0,'C');
$pdf->Cell(20,6,'NIK',1,0,'C');
$pdf->Cell(50,6,'Nama',1,0,'C');
$pdf->Cell(30,6,'Jenis Kelamin',1,0,'C');
$pdf->Cell(30,6,'Tanggal Lahir',1,0,'C');
$pdf->Cell(30,6,'Jurusan',1,0,'C');
$pdf->Cell(20,6,'Umur',1,1,'C');

Sintak diatas berfungsi untuk membuat kolom untuk header tabel mahasiswa. Semua kolom tingginya di set sama semuanya yaitu 6. Sementara untuk lebarnya berbeda-beda (karena panjang karakter dari setiap nilai kolom berbeda-beda). Angka 1 diatas menjukan saya menggunakan bordr sementara angka berikut nya yaitu 0 menujukan bahwa tidak dilakukan perpindahan posisi. Perpindahan posisi dilakukan di akhir cell lihat pada sintax ini $pdf->Cell(20,6,’Umur’,1,1,’C’); angka 1 sebelum nilai ‘C’ merupakan nilai untuk perpindahan posisi cell ke posisi awal baris berikutnya.

Harap diperhatikan untuk pengaturan CELL untuk nilai perpindahan posisi cell, karena kalau salah menentukan nilai akan membuat tampilan cell jadi tidak sesuai (berantakan).
  $pdf->Cell(8,6,$no,1,0);
    $pdf->Cell(20,6,$data['nik'],1,0);
    $pdf->Cell(50,6,$data['nama'],1,0);
    $pdf->Cell(30,6,$jk,1,0);
    $pdf->Cell(30,6,$data['tanggal_lhr'],1,0);
    $pdf->Cell(30,6,$data['jurusan'],1,0);
    $pdf->Cell(20,6,$data['umur'],1,1);

Sintak diatas berfungsi untuk mencetak nilai yang diambil dari database untuk setiap fieldnya. untuk lebar dan tinggi serta penggunaan border mengikuti cell yang kita buat sebelumnya untuk header tabel.

$pdf->Output();

Sintak diatas merupakan sintak yang berfungsi untuk menampilkan dokumen PDF yang kita buat dapat ditampilkan di browser.

Penjelasan-penjelasan pada syntak yang lain saya anggap sama dengan penjelasan diatas. Kalian bisa pelajari berdasarkan apa yang sudah saya jelaskan diatas.

Artikel Lain : Membuat Pagination di PHP

Saya sangat menyarankan kalian untuk membaca panduan penggunaan plugin fpdf ini lewat dokumentasi yang telah diterjemahkan kedalam bahasa indonesia. Kalian bisa langsung mendownloadnya langsung pada situs resminya fpdf.org

dokumentasi penggunaan fpdf

Jika kalian menjalankan program diatas dan sesuai dengan langkah-langkah yang sudah saya paparkan diatas maka hasilnya akan seperti pada gambar dibawah ini:

hasil laporan pdf dengan php

Demikian belajar PHP kita kali ini mengenai membuat laporan PDF dengan PHP dan MySQL menggunakan plugin FPDF. Semoga bermanfaat bagi kalian. Terimakasih.