17 Jun 2013

Menyimpan Data MySQL ke Excel

Ketemu lagi kawan-kawan. Sekarang saya akan membahas bagaimana cara membuat laporan dengan Excel.... thumbnail 1 summary
Menyimpan Data MySQL ke Excel

Ketemu lagi kawan-kawan. Sekarang saya akan membahas bagaimana cara membuat laporan dengan Excel.
Tidak susah untuk membuatnya, logika pembuatan laporan tersebut adalah Load data mysql dan buat sebuah header untuk output excel.
Pertama sekali mari kita bikin file dengan nama excel.php , berikut koneksi database mysql :

<?php
mysql_connect("localhost","root","1234") or die("Tidak tersambung");
mysql_select_db("datates");
?>

Seperti biasa,kita memakai localhost sebagai host mysql, root sebagai user mysql dan 1234 adalah password mysql. Lalu buat penggunaaan datates. Sesuaikan konfigurasi di atas dengan local webserver anda.

Lalu buatlah query untuk menjalankan perintah sql, contohnya didalam tabel client ada field kode,nama,alamat,telepon. Pasti anda tahu bagaimana cara membuat database dan tabel tersebut. Berikut contoh perintah SQL Query nya :

$result=mysql_query("Select `client.kode`,`client.nama`,`client.alamat`,`client.telepon` from client order by `client.nama`");
Sekarang setelah membuat query tersebut, mari kita bikin pembuatan laporan untuk excel. Perlu diingat, membuat laporan tersebut, perintah ini membaca field dan data record pada sebuah tabel. Jadi jika anda membuat `client.kode` maka header adalah kode dan jika anda membaut `client.kode` as KODE maka tampilan headernya KODE. It's choice for you :)
Mari kita liat kode pembuatan export data ke excel :

$filename="namafile.xls";
header("Content-Type: application/ms-excel");
header("Content-Disposition: attachment; filename=$filename.xls");
header("Pragma: no-cache");
header("Expires: 0");
Cara diatas adalah membuat konten halaman sebagai aplikasi ms-excel.
Sekarang mari kita bikin pemecah data untuk ditampilkan pada header excel :
$sep = "\t";
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}
print("\n");
Keterangan :

- $i membaca field sebuah tabel, berati menurut rekomendasi tabel diatas akan ditampilkan
A1      B1     C1      D1
kode nama alamat telepon
- \t adalah tab, contoh A1,B1,C1,dst
- \n adalah baris baru contoh A2,B2,C2,dst

Terakhir kita arraykan datanya :
while($row = mysql_fetch_array($result))
    {
        $schema_insert = "";
        for($j=0; $j<mysql_num_fields($result);$j++)
        {
            if(!isset($row[$j]))
                $schema_insert .= "NULL".$sep;
            elseif ($row[$j] != "")
                $schema_insert .= "$row[$j]".$sep;
            else
                $schema_insert .= "".$sep;
        }
       
        $schema_insert = str_replace($sep."$", "", $schema_insert);
 $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
        $schema_insert .= "\t";
        print(trim($schema_insert));
        print "\n";
       
    }

Jadi saat halaman excel.php tersebut direload maka akan ditampilkan sebuah opsi download pada browser anda.
Sekarang, untuk tugas mandiri anda. Buatlah bagaimana jika halaman excel.php tersebut hanya menampilkan pengecualian data. Soal :
1. Buat tabel client
2. Buat tabel transaksi_client
3. Buat sebuah halaman CRUD (Insert,Edit,Delete) untuk client (client.php)
4. Buat sebuah halaman transaksi (transaksi.php)
5 Buat laporan data transaksi berdasarkan kode client (dalam client.php ada link excel.php?id=kodeclient)