[Contoh 3] Membuat Laporan Export Data dari MySQL ke Excel terencoding dengan PHP (no-pear)

Posting lalu, https://blogit.bimosaurus.com/2012/04/09/contoh-1-membuat-laporan-export-data-dari-mysql-ke-excel-dengan-php-no-pear/ telah ditunjukkan bagaimana caranya membuat sebuah laporan download Excel dengan menggunakan php_writeexcel. Kali ini akan dilanjutkan dengan bagaimana menuangkan data dari MySQL database ke dalam file berformat XLS atau spreadsheet. Berikut sebuah contoh, misal kita memiliki sebuah tabel sebagai berikut, bernama tabel pegawai dalam sebuah database.

nip nama honor status_ambil
10001 Susanto Rp. 1000000 Belum
10002 Susanti Rp. 1000000 Sudah
10003 Marwoto Rp. 2000000 Sudah
10004 Gunadi Rp. 1500000 Belum
10005 Nur Eko Rp. 1000000 Belum

Tabel dalam database MySQL tersebut akan kita tuangkan dalam sebuah file Excel dengan nama : laporan-tanggal-dd-mm-yy.xls.
Maka kita akan membuat sebuah script seperti berikut:

require_once "libs/php_writeexcel-0.3.0/class.writeexcel_workbook.inc.php";
require_once "libs/php_writeexcel-0.3.0/class.writeexcel_worksheet.inc.php";

if(mysql_connect( "localhost","user","pass" )){
   mysql_select_db( "kepegawaian" );
}


$date = date('Y-m-d');
$fname = tempnam("/tmp", "laporan-tanggal-$date.xls"); //membuka sebuah file baru diletakkan dalam /tmp
$workbook = &new writeexcel_workbook($fname); //workbook diberinama
$worksheet = &$workbook->addworksheet(); //nambah worksheet

//tulis blok titel tabel

$worksheet->write(0, 0,  "Data Pegawai PT anu");
$worksheet->write(2, 0,  "NIP");
$worksheet->write(2, 1,  "Nama");
$worksheet->write(2, 2,  "Honor");
$worksheet->write(2, 3,  "Status Ambil");
//title selesai

//mari query
$sql = "SELECT * FROM `pegawai`";
$q = mysql_query( $sql );
$i = 3; //ingat bahwa kolom sebenarnya adalah nilai i ditambah 1, karena dimulai dengan nol
while( $r = mysql_fetch_array( $q ) ){
   $worksheet->write($i,0,$r['nip']);
   $worksheet->write($i,1,$r['nama']);
   $worksheet->write($i,2,$r['honor']);
   $worksheet->write($i,3,$r['status_ambil']);
   $i++;
}
$workbook->close(); //selesai tulis

//tuang data
header("Content-Type: application/x-msexcel; name=\"laporan-tanggal-$date.xls\"");
header("Content-Disposition: inline; filename=\"laporan-tanggal-$date.xls\"");
$fh=fopen($fname, "rb"); //membuka file namafile.xls , membacanya dan siap untuk mengolah dalam bentuk biner
fpassthru($fh); //menuangkan data yang ada di buffer
unlink($fname); //setelah terdownload, hapus file

Hasilnya kira-kira dapat diambil disini : https://blogit.bimosaurus.com/demo/export2.php. Format ini adalah setara dengan MS-Excel 2000/XP.
Posting selanjutnya adalah bagaimana memasukkan data dari XLS/Excel ke dalam database MySQL.. Tunggu posting tersebut
Semoga berguna.

[Contoh 2] Membuat Laporan Export Data dari MySQL ke Excel terencoding dengan PHP (no-pear)

Jika dalam posting lalu https://blogit.bimosaurus.com/2012/04/09/contoh-1-membuat-laporan-export-data-dari-mysql-ke-excel-dengan-php-no-pear/ kita sudah belajar menggunakan php untuk melakukan export ke dalam file excel yang datanya diambil dari database, namun ternyata proses yang kita pelajari tersebut masih terdapat kekurangan. Kekurangannya yaitu bahwa data excel yang dihasilkan tidak terencoding dengan baik sebagaimana layaknya file excel. Excel yang dihasilkan hanyalah file text dalam bentuk table, yang disimpan sebagai xls atau excel spreadsheet. Untuk membuat exporting data dalam bentuk excel yang sebenarnya maka perlu tools yang berfungsi mengolah encoding data cell dan column ke dalam excel encoding sehingga data akan dapat di download dalam format excel. Dalam PHP-PEAR, fasilitas upload download excel ini jelas telah ada. Tutorial penggunaan PEAR menyusul. Kali ini kita akan belajar menggunakan fasilitas : php_writeexcel-0.3.0.tar.gz yang telah saya siapkan di https://blogit.bimosaurus.com/files/php_writeexcel-0.3.0.tar.gz.

Extractlah file tersebut ke dalam direktori yang anda suka. Kalau saya lebih suka memasukkan segala fasilitas ini ke dalam direktori libs. Sehingga akan terbentuk libs/php_writeexcel-0.3.0 . Untuk contoh scripting menggunaan php_writeexcel ini dasarnya adalah sebagai berikut :

 

 


require_once "libs/php_writeexcel-0.3.0/class.writeexcel_workbook.inc.php";
require_once "libs/php_writeexcel-0.3.0/class.writeexcel_worksheet.inc.php";

$fname = tempnam("/tmp", "namafile.xls"); //membuka sebuah file baru diletakkan dalam /tmp
$workbook = &new writeexcel_workbook($fname); //workbook diberinama
$worksheet = &$workbook->addworksheet(); //nambah worksheet

//tulis

$worksheet->write(0, 0,  "JUDUL diletakkan di kolom 1");
$worksheet->write(2, 0,  "title baris 3 kolom 1");
$worksheet->write(2, 1,  "title baris 3 kolom 2");
$i = 3;
while($i <= 10){
$kol = $i+1; // karena nomer kolom pertama adalah 0, maka $kol adalah 0+1
   $worksheet->write($i,0,"Ini Baris $kol Kolom ke 1");
   $worksheet->write($i,1,"Ini Baris $kol Kolom ke 2");
$i++;
}


$workbook->close();

header("Content-Type: application/x-msexcel; name=\"namafile.xls\"");
header("Content-Disposition: inline; filename=\"namafile.xls\"");
$fh=fopen($fname, "rb"); //membuka file namafile.xls , membacanya dan siap untuk mengolah dalam bentuk biner
fpassthru($fh); //menuangkan data yang ada di buffer
unlink($fname); //setelah terdownload, hapus file


Contoh data ini dapat dilihat di https://blogit.bimosaurus.com/demo/export1.php. Untuk posting selanjutnya akan dicoba menuangkan data MySQL ke bentuk XLS MS Excel.

Semoga Berguna

[Contoh 1] Membuat Laporan Export Data dari MySQL ke Excel dengan PHP (no-pear)

Salah satu yang diperlukan dalam sistem informasi adalah pelaporan dan pengemasan data. Data yang berasal dari database, biasanya perlu dikonversi ke lain bentuk agar dapat diterima sebagai standard laporan pihak lain dalam bentuk standard dokumen. Salah satu bentuk standard dokumen adalah Excel. Sebelum ini juga pernah dipaparkan tentang pelaporan data dalam bentuk PDF (Portable Document Format). Excel atau worksheet dipercaya sebagai standard pelaporan, bahkan hampir semua program perkantoran (office) telah melakukan pembuatan dokumen yang standard dengan Workbook/Worksheet ini. Permasalahan para web developer salah satunya adalah melakukan exporting ke dalam format excel.

Dalam PHP, sebenarnya telah terdapat library khusus untuk melakukan proses data yang berkaitan dengan excel, yaitu dengan menggunakan fasilitas PEAR. Proses installasi PEAR sendiri kadang juga melalui masalah yang tidak kalah sulitnya dengan pembuatan script export SQL to XLS sendiri dimana data dapat di download dalam format excel. Oleh karena itu muncul beberapa cara untuk melakukan export data ke dalam bentuk excel.

Langkah paling mudah untuk menjadikan sebuah data ke dalam bentuk excel adalah dengan cara menyusun data sedemikian rupa hingga terdapat tabel dan baris, kemudian mengarahkan agar data tergenerate sebagai excel. Beberapa hal yang perlu diketahui adalah bahwa pindah baris dapat menggunakan perintah “\n”, dan tabel dapat langsung terbentuk ke dalam cell.

Contoh 1.

$title = "Contoh Excel Export";

$content = "

namabimosaurus
alamatwonosobo
nohp080808080
"; $content = $title . "\n" . $content; header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=excel.xls"); header("Pragma: no-cache"); header("Expires: 0"); print $content;

 

Contoh hasilnya bisa diambil di sini

 

Contoh 2.

Contoh ini melibatkan data MySQL. Misal tabel yang ada adalah seperti berikut :

nip nama honor status_ambil
10001 Susanto Rp. 1000000 Belum
10002 Susanti Rp. 1000000 Sudah
10003 Marwoto Rp. 2000000 Sudah
10004 Gunadi Rp. 1500000 Belum
10005 Nur Eko Rp. 1000000 Belum


if( mysql_connect("localhost","user","password") ){
mysql_select_db("kepegawaian");
}


$title = "Exporting Sederhana dari SQL ke XLS";
$content_header = "";
$content_footer = "
NIPNamaJumlah HonorStatus Terima
"; $content_dalam = ""; $sql = "SELECT * FROM `pegawai`"; $q = mysql_query( $sql ); while( $r=mysql_fetch_array( $q ) ){ $data = "".$r['nip']."".$r['nama']."".$r['honor']."".$r['status_ambil'].""; $content_dalam = $content_dalam ."\n". $data; } $content_sheet = $title . "\n" . $content_header . "\n" . $content_dalam . "\n" . $content_footer; header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=excel.xls"); header("Pragma: no-cache"); header("Expires: 0"); print $content_sheet;

 

Hasil dari contoh ini dapat diambil di sini

 

Nah, untuk sampai sini cukup mudah bukan? Hanya saja, format yang dihasilkan oleh model exporting ini tidak standard. Adakalanya ketika terdownload justru akan muncul script tabelnya. Untuk kondisi yang cukup standard, tunggu posting berikutnya..

 

Semoga berguna

Selanjutnya baca ini https://blogit.bimosaurus.com/2012/04/09/contoh-2-membuat-laporan-export-data-dari-mysql-ke-excel-terencoding-dengan-php-no-pear

[Contoh] Membuat Laporan PDF dengan PHP dan Database MySQL

Jika pada posting lalu (https://blogit.bimosaurus.com/2012/04/08/contoh-membuat-laporan-pdf-dengan-php/) telah terpaparkan tentang pembuatan laporan download PDF dengan menggunakan PHP, kali ini akan dibahas bagaimana menyusun reporting dengan PHP dalam format PDF yang susunan datanya diambil dari database MySQL. Tentu saja hal ini akan sangat berguna bagi para developer sistem informasi, karena pada umumnya sistem informasi harus memiliki proses reporting data. Proses pembuatan reporting PDF dengan menggunakan PHP ini dapat dilakukan dengan menggunakan FPDF seperti posting sebelumnya. Hanya saja prosesnya akan ditambah dengan proses pengambilan data dari database server MySQL. Proses ini tidak sulit, karena hanya menggabungkan pengambilan data, dan selanjutnya menampilkannya dalam bentuk PDF. Itu saja. Berikut contoh pengambilan data.
Katakan, kita memiliki tabel data pegawai dengan format seperti berikut:

nip nama honor status_ambil
10001 Susanto Rp. 1000000 Belum
10002 Susanti Rp. 1000000 Sudah
10003 Marwoto Rp. 2000000 Sudah
10004 Gunadi Rp. 1500000 Belum
10005 Nur Eko Rp. 1000000 Belum

Dengan format data demikian, maka pengambilan data dari dalam tabel dapat dilakukan dengan sintaks MySQL demikian :

SELECT * FROM `pegawai`

Begitu pula, sintaks ini akan dijadikan Query yang akan dieksekusi oleh PHP. Perkiraan Commandnya adalah sebagai berikut:

$sql      = "SELECT * FROM `pegawai`";
$query  = mysql_query( $sql );
while( $result=mysql_fetch_array( $query ) ){

//tampilkan

}
//telah diedit, hasil koreksi dari mas boyan_13@yahoo.co.id... tx

 

Dengan melakukan kombinasi perintah dengan pembuatan reporting PDF, maka dapat dibuat script seperti berikut:


ob_start();
define('FPDF_FONTPATH','libs/fpdf/font/');
require('libs/fpdf/fpdf.php');

if( mysql_connect( "localhost","reporting","reporting" ) ){
   mysql_select_db( "kepegawaian" );
}else{
   echo "maaf, data gagal";
}

class PDF extends FPDF {

function Header() {
$this->Image('logo_print.jpg',2,1,2);

	$this->SetFont('Arial','B',11);

	$this->Cell(0,0.75,' TUKANG HRD ',0,0,'C');

	$this->Ln();

	$this->SetFont('Arial','B',14);

	$this->Cell(0,0.75,'TOKO X',0,0,'C');

	$this->Ln();

	$this->SetFont('Arial','',9);

	$this->Cell(0,0.5,'Jl. Soekarno Hatta KM 100 Antar Bermuntah Telp (01234)123456',0,0,'C');

	$this->Ln();

	$this->Ln();
	$this->SetFont('Arial','',14);
	$this->Line(1, 4, 21, 4);

   $this->Ln();
	$this->SetFont('Arial','B',11);
   $this->Cell(0,0.75,'HRD',0,0,'C');

	$this->Ln();
}

}

	

$pdf=new PDF('P','cm','Letter');

$pdf->Open();

$pdf->AliasNbPages();

$pdf->AddPage();

$pdf->SetMargins(1.5,1,1.5);

$pdf->SetFont('Arial','B',12);


//membuat kop tabel
$x=$pdf->GetY();

$pdf->SetY($x+1);

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

$pdf->Cell(5,0.5,'NIP',1,0,'L');
$pdf->Cell(5,0.5,'Nama',1,0,'L');
$pdf->Cell(5,0.5,'Honor',1,0,'L');
$pdf->Cell(5,0.5,'Status Ambil',1,0,'L');

//query dan arraying
$sql   ="SELECT * FROM `pegawai`";

$query = mysql_query( $sql );



while( $result= mysql_fetch_array( $query )){

   $nip = $result['nip'];
   $nama = $result['nama'];
   $honor = $result['honor'];
   $status_ambil = $result['status_ambil'];

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

   $pdf->Cell(5,0.5,'$nip',1,0,'L');
   $pdf->Cell(5,0.5,'$nama',1,0,'L');
   $pdf->Cell(5,0.5,'$honor',1,0,'L');
   $pdf->Cell(5,0.5,'$status_ambil',1,0,'L');
}


$pdf->Output();

Berikut kira-kira hasilnya akan seperti demikian : https://blogit.bimosaurus.com/demo/reporting.php

Semoga berguna

[Contoh] Membuat Laporan PDF dengan PHP

Salah satu bentuk output yang dibutuhkan oleh pengguna layanan web adalah sebuah laporan download dalam bentuk PDF. PDF (portable document format) adalah bentuk dokumen siap print. Dokumen berformat PDF sendiri dapat dibentuk dari PDF. Seperti pada posting sebelum ini telah dikenalkan sedikit mengenai fungsi library FPDF, dimana dengan beberapa command PHP dapat membuat dokumen berformat PDF. Berikut di sini akan dipaparkan beberapa perintah penting dengan satu contoh pembuatan laporan PDF dengan PHP.

Langkah pertama adalah, kita pastikan dulu bahwa library fpdf telah diinclude dengan baik dengan perintah semacam ini:

 

ob_start();
define('FPDF_FONTPATH','libs/fpdf/font/');
require('libs/fpdf/fpdf.php');

Selanjutnya kita perlu melakukan pemanggilan constructor Class PHP bernama FPDF yang terdapat pada library.Command yang digunakan contohnya adalah :

$pdf = new FPDF($posisi_halaman,$satuan,$jenis_kertas);

dengan

$posisi_halaman berisi : P (Portrait/tegak) atau L (Landscape/mendatar). Jika tidak diisi akan berisi P
$satuan : pt (point), mm (milimeter), cm (centimeter), in (inchi). Jika tidak diisi akan berisi mm
$jenis_kertas : A3, 4, A5, Letter, Legal (Perbedaan kapital karakter akan berpengaruh)

 

Selanjutnya melakukan pemanggilan fungsi dasar Open(); dan dilanjutkan dengan pembukaan halaman.

$pdf->Open();
$pdf->AddPage();

 

Selanjutnya, kita dapat memasukkan materi / isi dari dokumen tersebut dengan memanfaatkan fungsi-fungsi berikut:
SetFont($jenis_font,$tebalmiring,$ukuran);

Contoh :

$pdf->SetFont('Arial','B','14');

 

tentunya dengan font yang telah ada dalam library fpdf kita masing-masing. Font ini dapat ditambah.

 

Image($lokasi_gambar,$jarak_cm_dari_kiri,$jarak_cm_dari_atas,$tinggi_gambar,$panjang_gambar);

Contoh :

$pdf->Image('images/koding1.jpeg',17,1,3,3);
$pdf->Image('images/koding2.jpeg',17,4,3,3);
$pdf->Image('images/koding3.jpeg',17,7,3,3);

Cell($panjang_sel,$tinggi_sel,$isi_sel,$keterangan_border,$berapa_spasi,$margin);

Contoh:

$pdf->Cell(9.5,2,'Percobaan pembuatan PDF',1,0,'L');

Spasi yang dibentuk oleh $berapa_spasi, akan sesuai dengan $berapa_spasix$tinggi_sel

Margin dapat berisi : L(Left) C(Center) dan R(Right)

Keterangan Border akan terdapat border jika berisi angka bukan 0.
Ln();

Perintah pindah baris

$pdf->Ln();

 

Output();

Adalah perintah tampilkan ke layar

$pdf->Output();

 

 

Berikut contoh lengkap satu script PHP dasar untuk membuat pencetakan berbentuk PDF:

ob_start();

define('FPDF_FONTPATH','libs/fpdf/font/');

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

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

   $pdf->Open();

   $pdf->AddPage();

   $pdf->SetFont('Arial','B',12);

   $pdf->Image('images/koding1.jpeg',17,1,3,3);
   $pdf->Image('images/koding2.jpeg',17,4,3,3);
   $pdf->Image('images/koding3.jpeg',17,7,3,3);

   $pdf->SetFont('Arial','B',20);
   $pdf->Cell(9.5,2,'Latihan membuat PDF',1,0,'L');
   $pdf->Ln();
   $pdf->SetFont('Arial','B',14);
   $pdf->Cell(9.5,2,'Oleh bimosaurus.com',0,0,'L');
   $pdf->Ln();

   $pdf->Output();

 

Hasilnya adalah sebagai berikut : https://blogit.bimosaurus.com/demo/pdf.php

FPDF dapat di download di situs aslinya fpdf.org atau di sini langsung KLIK

Untuk laporan lanjut dapat dilihat di sini https://blogit.bimosaurus.com/2012/04/09/contoh-membuat-laporan-pdf-dengan-php-dan-database-mysql

Simple Advanced Paging PHP

Membuat Fungsi Advanced Paging dengan berbasis Block pada PHP

Teknik Paging adalah teknik yang digunakan pada segala bahasa pemrograman dalam strategi penyajian data banyak. Jika dalam satu halaman tidak mampu menangani banyaknya data, maka akan dibuat halaman-halaman untuk mempermudah navigasi dan tidak memberatkan halaman pertama. Jika data hanya satu data atau dibawah 100 mungkin tidak masalah dengan penggunaan satu halaman. Namun diluar itu akan menjadi masalah besar. Sangat berat kemungkinan menyakinan puluhan ribu data dalam satu halaman depan. Tentu data tersebut akan dibagi dalam beberapa halaman.

Teknik Paging sederhana pun ternyata tidak cukup untuk memenuhi kebutuhan penyajian data. Misal, diketahui terdapat 10.000 data, dan satu halaman akan menampilkan 10 data. Dengan keadaan seperti itu maka pada navigasi halaman harus ditampilkan 100000/10 = 1000 nomer halaman. tentu hal ini juga tidak menguntungkan baik bagi tampilan maupun kinerja server. Berikut dibawah akan saya tampilkan lagi teknik paging yang sederhana namun dapat mengampu data banyak. Kira-kira hasilnya akan menjadi seperti ini:

Logika-logika dasar yang harus dipenuhi adalah:

  1. Server Web mendapatkan informasi tentang permintaan halaman oleh client adalah dari HTTP Request jenis GET
    Contoh : http://server.ini/index.php?page=1 => permintaan halaman satu, dengan GET[page]
  2. Jika tidak terdapat GET permintaan halaman, maka dianggap client meminta halaman 1
  3. Satu block halaman akan menangani 10 nomer halaman. Block pertama adalah 1-10. Informasi mengenai block didapat dari PENDEKATAN KE ATAS (ceil) dari nomer halaman yang sedang diakses, dibagi dengan jumlah halaman dalam satu block.
    Misal client melakukan akses halaman 11. Berarti client sedang memasuki block ke ? ceil(11/10)=2
    client melakukan akses halaman 9? berarti jelas block ke 1.
  4. LINK PREVIOUS/SEBELUMNYA didapat dengan cara membandingkan, apakah halaman aktif itu masih lebih besar daripada halaman terakhir block 1. Jika lebih besar, maka halaman PREVIOUS aktif. Jika tidak, tidak akan diaktifkan. Jika aktif, maka, halaman previous akan berisi link halaman terakhir dari block sebelumnya.
    Jika diakses halaman 44 maka block aktif adalah block 5, previous adalah 40
  5. LINK Next/Lanjut didapat dengan cara membandingkan, apakah halaman terakhir block aktif masih kurang dari jumlah halaman? Jika masih kurang, maka tombol next dimnculkan dengan link halaman pertama dari block setelahnya.
  6. Jumlah halaman ditentukan dengan menentukan pembulatan keatas dari pembagian jumlah data seluruhnya dibagi dengan jumlah data dalam satu halaman. Misal, terdapat jumlah data 44, dengan satu halaman adalah 5 data per halaman, maka akan didapat 9 jumlah halaman / ceil(44/5)

Berikut Source Code nya


 $jumhal ) {
      $page    = $jumhal;
      $block   = ceil($page/$page_per_block);
   }elseif($_GET[page] < 1){
      $page    = 1;
      $block   = 1;
   }
   /*end of prevention*/
   
   if ( $jumhal>1 )  {
      ?>
      Halaman : 
      = $jumblock  )
      {
         $prev = "yes";
         $next = "no";
      }
      else
      {
         $prev = "yes";
         $next = "yes";
      }


      if (  $prev == "yes"  )  {
         $prev_page  = ( ($block - 1) * $page_per_block );
         $prev_block = $block - 1;
         ?>
         ««First
         «Prev
         1) )  {
      ?>
         ««First
         «Prev
         
            
            
            
            
            Next»
            End » »
            
         Next»
         End»»
          End>>

*/
/*--------------------------------------------------------------------------------------------*/
?>

Cara menggunakan…

Simpanlah script paging diatas menjadi paging.php. Pastikan bahwa halaman yang akan anda paging meload Script seperti berikut:

$item_per_page = 10;
$page_per_block= 10;

$item_per_page adalah jumlah item tiap halaman, dan $page_per_block adalah jumlah halaman tiap Block. Selanjutnya, include kan paging php tersebut ke dalam halaman yang meload paging

include “paging.php”;

dan selanjutnya anda tinggal menmanggil fungsi dengan

paging ( $sql , $item_per_page , $page_per_block , $url , $page , $block )

Contoh:

paging('SELECT * FROM `table`',10,5,'?mod=namamodul&submod=namasubmodul',$page,$block);

Anda dapat mendownload script tersebut di sini

Lihat di halaman anda…

http://www.ziddu.com/download/16369565/paging.php.zip.html

Semoga berguna!…

bimosaurus

eof