Cara Mudah Membuat Laporan PDF dengan PHP dan MySQL
Setelah sebelumnya saya sudah membuat catatan mengenai Cara Membuat Laporan PDF dengan Codeigniter dan HTML2Pdf, kali ini saya ingin berbagi cara membuat laporan pdf hanya dengan PHP dan MySQL (tanpa menggunakan framework Codeigniter). Silahkan ikuti langkah-langkahnya berikut ini :
STEP 1 – PERSIAPAN
Kita akan mempersiapkan terlebih dahulu hal-hal yang diperlukan.
- Download Plugin HTML2PDF nya, klik link berikut ini : Download.
- Buat sebuah folder baru dengan nama latihan_pdf, lalu simpan di xampp/htdocs/
- Ekstrak dan Copy plugin HTML2PDF yang sudah didownload ke dalam folder xampp/htdocs/latihan_pdf/
STEP 2 – DATABASE
Buat sebuah database dengan nama mynotescode, lalu buat tabel siswa dengan struktur tabel seperti gambar berikut ini :
CREATE TABLE IF NOT EXISTS `siswa` ( `nis` varchar(11) NOT NULL, `nama` varchar(50) NOT NULL, `jenis_kelamin` varchar(10) NOT NULL, `telp` varchar(15) NOT NULL, `alamat` text NOT NULL, PRIMARY KEY (`nis`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
STEP 3 – KONEKSI DATABASE
Pada tahap ini, kita akan membuat sebuah file php yang berfungsi untuk koneksi ke database MySQL. Buat sebuah file dengan nama koneksi.php lalu simpan di folder xampp/htdocs/latihan_pdf/. Berikut ini isi dari file tersebut :
<?php $host = "localhost"; // Nama hostnya $user = "root"; // Username $pass = ""; // Password (Isi jika menggunakan password) $connect = mysqli_connect($host, $user, $pass, "mynotescode"); // Koneksi ke MySQL ?>
STEP 4 – TAMPILAN AWAL
Selanjutnya kita akan membuat halaman / tampilan awal website kita. Buat sebuah file php dengan nama index.php dan simpan di folder xampp/htdocs/latihan_pdf. Berikut ini kodenya :
<html> <head> <title>Data Siswa</title> </head> <body> <h1>Data Siswa</h1><hr> <a href="print.php">Cetak Data</a><br><br> <table border="1" cellpadding="8"> <tr> <th>NIS</th> <th>Nama</th> <th>Jenis Kelamin</th> <th>Telepon</th> <th>Alamat</th> </tr> <?php // Load file koneksi.php include "koneksi.php"; $query = "SELECT * FROM siswa"; // Tampilkan semua data gambar $sql = mysqli_query($connect, $query); // Eksekusi/Jalankan query dari variabel $query $row = mysqli_num_rows($sql); // Ambil jumlah data dari hasil eksekusi $sql if($row > 0){ // Jika jumlah data lebih dari 0 (Berarti jika data ada) while($data = mysqli_fetch_array($sql)){ // Ambil semua data dari hasil eksekusi $sql echo "<tr>"; echo "<td>".$data['nis']."</td>"; echo "<td>".$data['nama']."</td>"; echo "<td>".$data['jenis_kelamin']."</td>"; echo "<td>".$data['telp']."</td>"; echo "<td>".$data['alamat']."</td>"; echo "</tr>"; } }else{ // Jika data tidak ada echo "<tr><td colspan='4'>Data tidak ada</td></tr>"; } ?> </table> </body> </html>
Berikut ini adalah sedikit penjelasan dari kode diatas :
$sql = mysqli_query($connect, $query);
Untuk mengeksekusi / menjalankan query sql. struktur dasar penulisannya adalah sebagai berikut :
mysqli_query($connect, $query); /* Keterangan : - $connect : diisi dengan koneksi ke mysql. hasil dari mysqli_connect - $query : diisi dengan Query SQL yang diinginkan */
mysqli_num_rows($sql);
Untuk mengambil jumlah data dari hasil eksekusi suatu query sql. Struktur dasar penulisannya adalah sebagai berikut :
mysqli_num_rows($sql); /* Keterangan : - $sql : diisi dengan hasil eksekusi query sql(mysql_query()) */
mysqli_fetch_array($sql);
Untuk mengambil data dari hasil eksekusi suatu query sql. Struktur dasar penulisannya adalah sebagai berikut :
mysqli_fetch_array($sql); /* Keterangan : - $sql : diisi dengan hasil eksekusi query sql(mysql_query()) */
Kode diatas saya simpan didalam looping while berfungsi untuk melakukan proses perulangan sampai data terkahir dengan tujuan agar kita bisa menampilkan datanya satu per satu.
echo "<tr>"; echo "<td>".$data['nis']."</td>"; echo "<td>".$data['nama']."</td>"; echo "<td>".$data['jenis_kelamin']."</td>"; echo "<td>".$data['telp']."</td>"; echo "<td>".$data['alamat']."</td>"; echo "</tr>";
Pada kode diatas terdapat variabel $data digunakan untuk mengambil isi dari field-field yang ada pada tabel siswa di database latihan. Pada kode diatas juga ada kode yang berada di dalam tanda [‘…..’], kode tersebut harus sama dengan nama field yang ada pada tabel siswa.
STEP 5 – PROSES CETAK (PRINT)
Sesuai judul dari step 5 ini, kita akan masuk ke inti dari catatan ini yakni membuat proses cetak ke file pdf. Pertama-tama buat dulu sebuah file baru dan beri nama print.php, lalu simpan file tersebut di folder xampp/htdocs/latihan_pdf/. Berikut ini isi / skrip dari file tersebut :
<?php ob_start(); ?> <html> <head> <title>Cetak PDF</title> <style> table {border-collapse:collapse; table-layout:fixed;width: 630px;} table td {word-wrap:break-word;width: 20%;} </style> </head> <body> <h1 style="text-align: center;">Data Siswa</h1> <table border="1" width="100%"> <tr> <th>NIS</th> <th>Nama</th> <th>Jenis Kelamin</th> <th>Telepon</th> <th>Alamat</th> </tr> <?php // Load file koneksi.php include "koneksi.php"; $query = "SELECT * FROM siswa"; // Tampilkan semua data gambar $sql = mysqli_query($connect, $query); // Eksekusi/Jalankan query dari variabel $query $row = mysqli_num_rows($sql); // Ambil jumlah data dari hasil eksekusi $sql if($row > 0){ // Jika jumlah data lebih dari 0 (Berarti jika data ada) while($data = mysqli_fetch_array($sql)){ // Ambil semua data dari hasil eksekusi $sql echo "<tr>"; echo "<td>".$data['nis']."</td>"; echo "<td>".$data['nama']."</td>"; echo "<td>".$data['jenis_kelamin']."</td>"; echo "<td>".$data['telp']."</td>"; echo "<td>".$data['alamat']."</td>"; echo "</tr>"; } }else{ // Jika data tidak ada echo "<tr><td colspan='4'>Data tidak ada</td></tr>"; } ?> </table> </body> </html> <?php $html = ob_get_contents(); ob_end_clean(); require 'html2pdf/autoload.php'; $pdf = new Spipu\Html2Pdf\Html2Pdf('P','A4','en'); $pdf->WriteHTML($html); $pdf->Output('Data Siswa.pdf', 'D'); ?>
Sebenarnya skrip diatas hampir sama dengan isi dari file index.php. Hanya saja pada skrip diatas terdapat skrip berikut ini :
<?php ob_start(); ?>
// …..
// skrip html
// …..
<?php
$html = ob_get_contents();
ob_end_clean();
Pada skrip print.php, Skrip yang berfungsi untuk menampilkan data siswa pada tabel diapit oleh skrip yang saya beri tanda merah. Skrip tersebut berfungsi untuk mengambil tampilan tabel data siswa dan memasukkannya ke dalam variabel $html. Variabel $html ini akan digunakan sebagai output yang kita inginkan pada file pdfnya. Lihat skrip berikut ini :
require ‘html2pdf/autoload.php’;
$pdf = new Spipu\Html2Pdf\Html2Pdf(‘P’,’A4′,’en’);
$pdf->WriteHTML($html);
$pdf->Output(‘Data Siswa.pdf’, ‘D’);
Skrip diatas digunakan untuk mengkonversi skrip html menjadi pdf. Dimulai dari skrip require ‘html2pdf/autoload.php’;, skrip ini berfungsi untuk memuat (meload) plugin html2pdfnya. Lalu skrip $pdf = new Spipu\Html2Pdf\Html2Pdf(‘P’,’A4′,’en’);, skrip ini berfungsi memanggil fungsi __construct pada plugin html2pdf. Berikut ini adalah fungsi __construct yang kita panggil pada plugin html2pdfnya :
/** * Constructeur * * @param string $sens - orientasinya : landscape atau portrait * @param string $format - format kertasnya : A4, A5, dan lain-lain * @param string $langue - Bahasanya : en, fr, dan lain-lain * @param boolean $unicode - TRUE means clustering the input text IS unicode (default = true) * @param String $encoding - charset encoding; Default is UTF-8 * @param array $marges - margins by default, in order (left, top, right, bottom) * @return null */ public function __construct($sens = 'P', $format = 'A4', $langue='en', $unicode=true, $encoding='UTF-8', $marges = array(5, 5, 5, 8))
Lalu skrip $pdf->WriteHTML($html);, skrip ini berfungsi untuk menentukan apa yang ingin ditampilkan pada pdfnya. Struktur dasar penulisannya yaitu $pdf->WriteHTML(‘kode_htmlnya’);. Pada kasus ini, kita memasukan kode htmlnya kedalam variabel $html. Yang terakhir skrip $pdf->Output(‘Data Siswa.pdf’, ‘D’);, kode tersebut berfungsi untuk menentukan nama file pdf yang kita buat. dan juga untuk menentukan mode apa yang ingin dilakukan ketika skrip tersebut dipanggil. Contohnya disitu ada skrip …,’D’);, Huruf D disitu berarti ketika skrip dipanggil, maka lakukan proses download pada file pdfnya. sebenarnya ada banyak mode yang bisa kita lakukan, seperti tampilkan pdfnya dibrowser ketika skrip itu dipanggil dan lain-lain (untuk lebih detailnya, klik disini).
Source Code
Untuk mengunduh source code nya, Klik link berikut ini : Download.
Sekian untuk catatan kali ini, semoga bisa bermanfaat dan membantu. Jika ada yang kurang dimengerti, jangan sungkan untuk bertanya pada form komentar dibawah ini.
Terimakasih.
Sumber & Referensi
http://wiki.spipu.net/doku.php?id=html2pdf:en:v4:Accueil
Tutorial membuat laporan pdf dengan php dan mysql, Tutorial membuat laporan pdf dengan php mysql dan html2pdf, Cara mudah membuat laporan pdf dengan php mysql dan html2pdf, Step by step membuat laporan pdf dengan php dan mysql, Step by step membuat laporan pdf dengan php mysql dan html2pdf
POST YOUR COMMENTS