Export / Mencetak Laporan ke Excel dari Query Like pada MySQL

Libre Office
Berikut ini adalah latihan lanjutan dari artikel Mencetak Laporan ke MS Excel dari PHP, yang mana kesempatan kali ini saya beri judul Export / Mencetak Laporan ke Excel dari Query Like pada MySQL, dan untuk memenuhi permintaan teman saya, karena beliau membutuhkan bagaimana caranya jika export laporan dari query mysql ke dalam excel tetapi data yang ditampikan adalah dari fungsi pencarian atau dalam mysql disebut "LIKE" (gitu aja nyebutnya biar gak ribet hehe).

Oke, tidak perlu panjang lebar pembukaanya. Kita simak latihan berikut ini
Langkah 1: 
Kita masih menggunakan database yang sama pada artikel sebelumnya di Mencetak Laporan ke MS Excel dari PHP. Bisa dilihat di artikel tersebut, atau untuk lebih mudahnya silahkan copy dan paste script SQL ini ke dalam SQL Editor favorit Anda.
-- --------------------------------------------------------
-- --------------------------------------------------------
-- Host:                         127.0.0.1
-- Server version:               5.5.27 - MySQL Community Server (GPL)
-- Server OS:                    Win32
-- HeidiSQL Version:             8.1.0.4545
-- --------------------------------------------------------

-- Dumping database structure for raport
CREATE DATABASE IF NOT EXISTS `db_raport` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `db_raport`;


-- Dumping structure for table raport.tb_login
CREATE TABLE IF NOT EXISTS `tb_login` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(100) NOT NULL,
  `akses` varchar(15) NOT NULL,
  `password` varchar(12) NOT NULL,
  PRIMARY KEY (`no`)
) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=latin1;

-- Dumping data for table db_raport.tb_login: 25 rows
/*!40000 ALTER TABLE `tb_login` DISABLE KEYS */;
INSERT INTO `tb_login` (`no`, `user`, `akses`, `password`) VALUES
 (1, 'admin', 'admin', 'admin'),
 (2, 'DWI KURNIANTO', 'GURU', 'GURU'),
 (3, 'DWI KURNIANTO', 'KURIKULUM', 'kurikulum'),
 (4, 'DWI KURNIANTO', 'WALI KELAS', 'wali'),
 (5, 'ENDANG KUSMIYATI', 'WALI KELAS', 'VIIA'),
 (6, 'MENIK ROHAYATI', 'GURU', 'GURU'),
 (7, 'M.SOLEH', 'GURU', 'GURU'),
 (8, 'SUPRAPTONO', 'GURU', 'GURU'),
 (9, 'ENDANG KUSMIYATI', 'GURU', 'GURU'),
 (10, 'TATIK WURIYANTI', 'GURU', 'GURU'),
 (11, 'SRIWARNI', 'GURU', 'GURU'),
 (12, 'SURAMI', 'GURU', 'GURU'),
 (13, 'KUSUMA BASUKI', 'GURU', 'GURU'),
 (14, 'SUPARDI', 'GURU', 'GURU'),
 (15, 'SUMARTI', 'GURU', 'GURU'),
 (16, 'SR BEJO', 'GURU', 'GURU'),
 (17, 'NGESTUTUI RAHAYU', 'GURU', 'GURU'),
 (18, 'SUDIYARMI', 'GURU', 'GURU'),
 (19, 'KRIS HARJITO', 'GURU', 'GURU'),
 (20, 'ENDANG PURWASIH', 'GURU', 'GURU'),
 (21, 'MULYANI', 'GURU', 'GURU'),
 (22, 'UYUNG WIDHI', 'GURU', 'GURU'),
 (23, 'EMILIANA', 'GURU', 'GURU'),
 (24, 'WINDRAT', 'GURU', 'GURU'),
 (25, 'SRI HARTONO', 'GURU', 'GURU');

Langkah 2: 
Buka PHP Editor kesukaan Anda. Disini saya menggunakan gEdit karena saya menggunakan Linux Ubuntu, yang free / opensource Insya Allah lebih berkah. :D. Buat file dengan nama laporan.php, untuk lebih mempersingkat waktu, silahkan tulis kode berikut ini.

Nama File = laporan.php

 <?php
/* 
-- --------------------------------------------------------
-- --------------------------------------------------------
-- Nama File : laporan.php  
-- Author    : Fitri Ariyanto 
-- Email     : seorang.fitri@gmail.com
-- Website   : http://usersonly.wordpress.com/ || http://phpbejo.blogspot.com 
-- Copyright [c] 2017 Fitri Ariyanto 
-- --------------------------------------------------------
 */
 
 mysql_connect("localhost","root","") or die("Gagal melakukan Koneksi!");
 mysql_select_db("db_raport") or die("Gagal memilih Database!");
 
 @$keyword = $_POST['katakunci'];
 if (!empty($keyword)) {

  $query = mysql_query("SELECT * FROM tbl_users WHERE user LIKE '%$keyword%' OR akses LIKE '%$keyword%' OR password LIKE '%$keyword%'");

 } else {

  $query = mysql_query("SELECT * FROM tbl_users");

 }

 echo '<center><a href="cetak-laporan.php?katakunci='.$keyword.'">Cetak Laporan</a></center>';
 echo '<table border="1" align="center">
 <tr>
  <td style="background:#EEE;font-weight:bold;" colspan="5">
  <form name="form_cari" method="post" action="'.$_SERVER['PHP_SELF'].'">
   <label>Cari </label>
   <input type="text" name="katakunci">
   <input type="submit" name="cari" value="Ok">
  </form>
  </td>
 </tr>';
 echo ' 
 <tr>
  <td style="background:#EEE;font-weight:bold;">No.</td>
  <td style="background:#EEE;font-weight:bold;">User</td>
  <td style="background:#EEE;font-weight:bold;">Hak Akses</td>
  <td style="background:#EEE;font-weight:bold;">Password</td>
 </tr>';

 $no = 1;
 while($data=mysql_fetch_array($query)){
  echo '<tr>
    <td>' . $no++ . '.</td>
    <td>' . $data['user'] . '</td>
    <td>' . $data['akses'] . '</td>
    <td>' . $data['password'] . '</td>
   </tr>';
 }
 echo '</table>';
 
 ?>
Langkah 3: 
Buat lagi file baru dengan nama cetak-laporan.php dan simpan di lokasi yang sama dengan file sebelumnya laporan.php. Selanjutnya ketik kode berikut ini:

Nama File = cetak-laporan.php

 <?php
/* 
-- --------------------------------------------------------
-- --------------------------------------------------------
-- Nama File : cetak-laporan.php  
-- Author    : Fitri Ariyanto 
-- Email     : seorang.fitri@gmail.com
-- Website   : http://usersonly.wordpress.com/ || http://phpbejo.blogspot.com 
-- Copyright [c] 2017 Fitri Ariyanto 
-- --------------------------------------------------------
*/
 
 header("Content-Type: application/force-download");
 header("Cache-Control: no-cache, must-revalidate");
 header("Expires: Sat, 26 Jul 2010 05:00:00 GMT"); 
 header("content-disposition: attachment;filename=laporan_pengguna_login".date('dmY').".xls");

 mysql_connect("localhost","root","") or die("Gagal melakukan Koneksi!");
 mysql_select_db("db_raport") or die("Gagal memilih Database!");
 
 @$keyword = $_GET['katakunci'];
 if (!empty($keyword)) {

  $query = mysql_query("SELECT * FROM tbl_users WHERE user LIKE '%$keyword%' OR akses LIKE '%$keyword%' OR password LIKE '%$keyword%'");

 } else {

  $query = mysql_query("SELECT * FROM tbl_users");

 }

 echo '<table border="1" align="center">
 <tr>
  <td style="background:#EEE;font-weight:bold;">No.</td>
  <td style="background:#EEE;font-weight:bold;">User</td>
  <td style="background:#EEE;font-weight:bold;">Hak Akses</td>
  <td style="background:#EEE;font-weight:bold;">Password</td>
 </tr>';

 $no = 1;
 while($data=mysql_fetch_array($query)){
  echo '
   <tr>
    <td>' . $no++ . '.</td>
    <td>' . $data['user'] . '</td>
    <td>' . $data['akses'] . '</td>
    <td>' . $data['password'] . '</td>
   </tr>';
 }
 echo '</table>';
 
 ?>
Kita juga bisa mengganti filename/ Nama Berkas Excel sesuai kebutuhan kita. Dalam contoh diatas saya menggunakan nama

laporan_pengguna_login_(tanggalxxx).xls

Jika ingin mengganti nama filenya, silahkan ganti pada baris berikut:


header("content-disposition: attachment;filename=nama_filenya_sob.xls");

Berikut ini screenshoot hasil dari latihan kali ini
Nama File: laporan.php
Tampilan Laporan Export PHP MySQL ke Excel
Tampilan Laporan Export PHP MySQL ke Excel

Nama File: cetak-laporan.php
Hasil Pencarian Data dan Export PHP MySQL ke Excel
Hasil Pencarian Data dan Export PHP MySQL ke Excel
Klik cetak laporan kemudian akan muncul dialog download. Pilih OK / simpan, kemudian buka folder lokasi file yang terdownload, dan eksekusi / open

Hasil export data ke Excel seperti gambar berikut ini.
Hasil Export PHP MySQL ke Excel
Hasil Export PHP MySQL ke Excel

PENTING:
JANGAN sampai lupa untuk menambahkan tipe file/ ekstensi ( .XLS ) pada akhir kode, apa bila tidak ada, maka file/ berkas tidak dapat dibuka dengan cara seperti biasa (double click). Sekian tulisan dari saya, ada kurang dan lebihnya mohon maaf, jika ada kritik saran atau pertanyaan silahkan kontak email/ isi komentar.

Untuk download kode diatas, teman-teman bisa download di link berikut


URL: https://phpbejo.blogspot.com/2017/04/export-atau-mencetak-laporan-ke-ms-excel-dari-query-like-pada-mysql-dengan-php.html
PHPBEJO: Tutorial Dasar Pemrograman PHP

Share this

Related Posts

Latest Post

3 komentar

komentar
10 April 2017 pukul 09.07 delete

maaf kalau masih banyak kurang, semoga bisa bermanfaat.

Reply
avatar
28 Mei 2020 pukul 02.07 delete

kok saya coba tidak bisa ya

Reply
avatar