0% found this document useful (0 votes)
225 views

Pivot Data Mysql PHP

How to pivot table data using php and mysql

Uploaded by

oskandaria
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
0% found this document useful (0 votes)
225 views

Pivot Data Mysql PHP

How to pivot table data using php and mysql

Uploaded by

oskandaria
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 9
sit018 Pivot Tabla Dengan PHP dan MySQL | JagaWebDev Pivot Table Dengan PHP dan MySQL Agus Prawoto Hadi 15-11-2016 PHP Tutorial Pada kesempatan kali ini, kita akan membahas cara membuat pivot table dengan PHP dan MySQL. Tutorial ini merupakan tutorial lanjutan dari tutorial sebelumnya: Pivot Table Dengan MySQL — Panduan Lengkap. Tutorial ini kita akan langsung menggunakan SQL yang sudah jadi, SQL ini sudah kita bahas pada tutorial tersebut, selain itu, kita juga akan melakukan pengolahan data dengan menggunakan PHP? Mengapa perlu bahasa pemrogrman lain? tidak cukup di SQL saja? Ketika menampilkan data dalam bentuk pivot table, terdapat banyak sekali kemungkinan layout data yang ingin disajikan, dengan keterbatasan SQL, hal tersebut terkadang sulit diwujudkan, sehingga kita perlu mengolahnya lebih lanjut menggunakan bahasa pemrograman lain, dalam hal ini PHP I. Persiapan DATA Data yang akan kita gunakan pada tutorial ini adalah data penjualan yang tersimpan pada tabel tabel_sales. Tabel ini memiliki lima kolom yaitu: id_trx, nama, tgl_trx, tim, dan nilai_trx . Layout data pada tabel tersebut seperti tampak pada tabel berikut ini idtrx nama —tgl_trx tim 1 Alfa 2016-01-10 1 250000 2 Charlie 2016-01-02 2 175000 3 Bravo 2016-01-01 1 310000 4 Bravo 2016-02-04 1 — 250000 5 Alfa 2016-01-15 1 ~~ 125000 6 Charlie 2016-01-13 2 325000 7 Bravo 2016-02-07 1 275000 8 Bravo 2016-03-06 1 — 150000 9 Alfa 2016-0205 1 215000 10 Alfa -2016-02-22 1 ~~ 360000 11 Alfa -2016-02-02 1 250000 12 Alfa 2016-03-12 1 150000 cs Data ini sudah include pada file .zip yang dapat didownload di bagian bawah tutorial ini. hitp:/jagowebdev.convpivot-able-dengan-php-dan-mysql! 1 snvzote vot Table Dengan PHP dan MySQL | JagaWebDev IL. Pivot Table dengan PHP dan MySQL — Menampilkan Data Dengan PHP Dengan Total dan Subtotal Dari SQL Pada bagian ini, kita akan membahas cara untuk menampilkan data pivot table hasil query dari MySQL dengan PHP. Pada bagian ini, data total dan subtotal sudah kita buat pada query SQL, sehingga kita benar-benar hanya menampilkan datanya saja. Adapun query yang akan kita jalankan adalah: SELECT TFNULL( nama, "SUB TOTAL’ ) AS nama_sales, IFNULL( tim, ‘TOTAL’ ) AS sales_tim, SUM( IF( MONTH(tgl_trx) = 1, nilai_trx, ®) ) AS januari, COUNT( IF( MONTH(tgl_trx) = 1, id_tex, NULL) ) AS trx_a, SUM( IF( MONTH(tgl_trx) = 2, nlai_trx, 8) ) AS februari, COUNT( TF( MONTH(tgl_trx) = 2, nilai_trx, NULL) ) AS trx_2, SUM( IF( MONTH(tgl_trx) = 3, nilai_trx, @) ) AS maret, COUNT( TF( MONTH(tgl_trx) = 3, nilai_trx, NULL) ) AS trx_3, COUNT(id_trx) AS jm1_tex, SUM( nilai_trx ) AS total_trx FROM tabel_sales GROUP BY tim, nama WITH ROLLUP Ketika dijalankan pada aplikasi SQL manager (HEIDI SQL) hasil yang kita peroleh adalah: | nama_sales | sales_tim | januari | trx_1 | februari | trx_2 | maret | trx_3 | jml_trx | | alfa ja | 375000 | 2| s1seee| 3 | 375000] 2 | 71 | Bravo ja | atee0o | 1 | s2seee | 2| #25000] 3 | | | sus Total | 1 | saseoo | 3 | 1340002 | 5 | 1200000 | 5 | a | | charlie | 2 | sseoea | 3 | 300000 | =a | 725000 | 2 | | | velta 12 | @| @| 1900000 | 2 | 370000} 11] 3 | | sus ToraL | 2 | aseeeo | 3 | 1300000 | 3 | 1095000 | 3 | | | sus ToraL | TorAL | 1535000 | 6 | 2640000 | 8 | 2295000 | a | 2 | Selanjutnya, mari kita tampilkan data tersebut menggunakan PHP. Adapun script yang kita gunakan adalah: Array hitp:/jagowebdev.convpivot-able-dengan-php-dan-mysql! 39 sit018 Pivot Tabla Dengan PHP dan MySQL | JagaWebDev ( [nama_sales] => Alfa [sales_tim] => 1 [bln_januari] => 375000 [trxa] => 2 [bln_februari] => 815000 [trx2] => 3 [bin_maret] => 375000 [trx_3] => 2 [jml_trx] => 7 [total_trx] => 1565000 ) [1] => Array ¢ [nama_sales] Bravo Hal ini kita lakukan karena kita perlu melakukan loop data hasil query tersebut dua kali, yaitu untuk membuat header dan menampilkan isi + Untuk membuat header tabel, kita ambil data pertama yaitu $result[@] selanjutnya dilakukan loop untuk mendapatkan data kolom, loop ini dilakukan karena jumlah kolom bersifat dinamis, bisa saja nanti muncul data bulan April, dst $header_row1 = $header_row2 = '"3 foreach ($result[@] as $key => $val) { if (strpos($key, ‘bln_') !== false) { $bln = explode('_', $key); $header_row1 .= ‘" . $bln[2] . ‘'; $header_row2 .= "Nilai ' 5 + + Karena header terdiri dari dua baris, baris tersebut kita simpan pada variabel masing masing $header _rowi untuk baris pertama dan $header_row2 untuk baris kedua. Variabel ini akan kita gunakan nanti ketika membuat tabel HTML. + Untuk membuat isi tabel, kita loop data yang tersimpan dalam variabel $result . foreach ($result as $array) t Selanjutnya kita identifikasi baris SUB TOTAL hitp:/jagowebdev.convpivottable-dengan-php-dan-mysal! 49 sit018 Pivot Tabla Dengan PHP dan MySQL | JagaWebDev . if ($array['nama_sales’] == "SUB TOTAL") { $class = ' class="total"'; $print_no = * } else { $no#e; Jika pada kolom nama_sales berisi “SUB TOTAL’ maka kita beri baris tersebut atribut class="total" disamping itu, nomor urut juga tidak kita tampilkan, jika tidak (else), maka tambahkan nilai variabel_ $no + Selanjutnya kita loop lagi isi dari variabel $result : foreach ($array as $key => $val) { if ($key !== 'nama_sales' && $key I== ‘sales tim’) t $val = number_format($val, '@', ',", ' + echo ‘’ . $val . ''; Selanjutnya kita tes, jika nilai tidak berasal dari kolom nana_sales dan sales_tin , maka kita buat format rupiah pada nilai tersebut. Demikian cara menampilkan data hasil pivot table dengan PHP. ILI. Pivot Table dengan PHP dan MySQL — Membuat Total dan Subtotal dengan PHP Pada bagian sebelumnya, total dan subtotal kita buat pada query MySQL, pada kondisi tertentu, tolal dan subtotal ini tidak bisa (rumit) jika kita buat pada SQL, melainkan harus dilakukan pengolahan lebih lanjut menggunakan bahasa pemrograman lain. Contoh kondisi tersebut adalah ketika kita ingin menampilkan data berdasarkan hasil penjualan diurutkan dari total penjualan terbesar yang dikelompokkan berdasarkan nama dan tim. Pertama, kita buat query untuk menampilkan data urut berdasarkan total penjualan (kolom total_trx ). Adapun querynya adalah sebagai berikut: SELECT IFNULL( nama, ‘SUB TOTAL’ ) AS nama_sales, IFNULL( tim, ‘TOTAL' ) AS sales_tim, hitp:/jagowebdev.convpivottable-dengan-php-dan-mysal! 59 sit018 Pivot Tabla Dengan PHP dan MySQL | JagaWebDev SUM( TF( MONTH(tgl_trx) = 1, nilai_trx, @) ) AS bln_januari, COUNT( TF( MONTH(tgl_trx) = 1, id trex, NULL) ) AS trx_a, SUM( IF( MONTH(tgl_trx) = 2, nilai_trx, @) ) AS bln_februari, COUNT( IF( MONTH(tgl_trx) = 2, nilai_trx, NULL) ) AS trx_2, SUM( IF( MONTH(tgl_trx) = 3, ndlai_trx, @) ) AS bln_maret, COUNT( TF( MONTH(tgl_trx) = 3, nilai_trx, NULL) ) AS trx_3, COUNT(id_trx) AS jml_trx, SUM( nilai_trx ) AS total_trx FROM tabel_sales GROUP BY tim, nama ORDER BY SUM( nilai_trx ) DESC, tim Query diatas sama seperti query sebelumnya, bedanya, kita hapus klausa WITH ROLLUP dan kita tambahkan klausa ORDER BY yaitu ORDER BY SUM( nilai_trx ) DESC, tim Hasil dari query tersebut adalah | nama_sales | sales_tim | b1n_januari | trx_1 | bln_februari | trx_2 | bln_maret | trx3 | | charlie | 2 | sse0e0 | 3 | e000 | a | 725e00 | 2 | | Bravo ja | 310000 | 1 | 525000 | 2 | 825000 | 3 | | alta ja | 375000 | 2 | siseoa | 3 | 375800 | 2 | | belta 12 I el el 1800000 | 2| 37¢000 | a] Selanjutnya kita buat script PHP sebagai berikut: Hasil yang kita peroleh’ NO NAMASALES TIM 1 Charlie 2 2 deta 2 SUBTOTAL «2 3 Bravo 1 4 Alfa 1 SUBTOTAL = TOTAL JANUAR! nual 850,000 o 850.000 310.000 375,000 625,000 1.535.000 FEBRUARI nual TRK sooo 1 roocco 2 1300003 5250002 arscoo 3 134000 5 26400006 2, milai_trx, NULL) ) AS trx_2, 3, nilai_trx, @) ) AS bln_maret, MaRET JMLTRX TOTALTRX Nal TRK 725002 6 1875.00 370m 31370000 10950003 9 3245.000 3250008 6 14660.000 37sco0 2 7 1865.000 12000005 13 3225000 2295000 6 22, 64700000 Pada gambar dialas, terlihat bahwa data diurutkan berdasarkan kolom total_trx mulai dari nilai terbesar, selain itu, data juga dikelompokkan berdasarkan sales_tim. Penjelasan script PHP: + Sama seperti sebelumnya, kita simpan semua hasil query SQL kedalam sebuah variabel berbentuk array, pada contoh kali ini kita gunakan variabel $fetch Selanjutnya, kita perlu menata ulang data array tersebut sehingga memudahkan kita untuk menghitung total dan subtotal $query $fetch mysqli_query($conn, $sql); mysqli_fetch_all ($query, MYSQLI_ASSOC) ; foreach ($fetch as $key => $val) { $result[$val['sales_tim']][] = $val; Hasil penataan ulang tersebut kita simpan pada variabel sebagai berikut: Array ( [2] => Array ¢ hitp:/jagowebdev.convpivot-able-dengan-php-dan-mysql! $result . Variabel $result berisi data 73 sii2018 Fivot Table Dengan PHP dan MySQL | JagoWWebDev [@] => Array ( [nama_sales] [sales_tim] => 2 [b1n_januari] => 850000 Charlie [tra] => 3 [bln_februari] => 300000 [trx2] => 2 [bin_maret] => 725000 [trx_3] => 2 [jml_trx] => 6 [total_trx] => 1875000 [1] => Array Array diatas memiliki index nomor tim dari petugas, dalam hal ini berada di kolom sales_tin (kolom alias) Sebagai pedoman kolom mana yang harus digunakan sebagai index, perhatikan klausa GROUP By pada query. Pada query diatas, pada klausa Group BY kita menggunakan kolom tim dan nama, sehingga kita periu menggunakan index kolom tim, yang pada query diatas kita ubah nama kolom tersebut menjadi sales_tim + Selanjutnya kita loop variabel $result dan tambahkan baris SUB TOTAL J SUB TOTAL echo * SUB TOTAL ". Stim . ‘ foreach ($subtotal as $nilai) { echo "" . number_format($nilai, '@", ',', '.') . ""; 3 echo ""; Nilai total ( $total ) dan subtotal ( subtotal ) kita akumulasi ketika membuat loop pada isi data . $subtotal = array()5 foreach ($array as $index => $array2) // $index (mulai @, 1, dst. { echo ‘ ". $no . '"; foreach ($array2 as $nama_kolom => $val) // $nama_kolom (nama_sales, sales_ti { if ($nama_kolom != ‘nama_sales' && $nana_kolon != ‘sales_tim') hitp:/jagowebdev.convpivot-able-dengan-php-dan-mysql! 80 sit018 Pivot Tabla Dengan PHP dan MySQL | JagaWebDev @$subtotal [$nama_kolom] += $val; @$total[$nama_kolom] += $val; $val = number_format($val, '@", ',', echo "" . $val . ""; 3 $no++5, echo ""; > LS > ‘Agar tidak terakumulasi ke SUB TOTAL di bawahnya, maka setap awal loop, variabel $subtotal kita reset: $subtotal = array() + Terakhir, kita buat baris total. . U1 TOTAL echo * TOTAL " 5 foreach ($total as $nilai) { echo ‘’ . number_format($nilai, '@", ',', '.') . ‘'s 3 echo ""; Selesai Dalam praktiknya, model total dan subtotal ini akan sangat bervariasi, sehingga logika pemrogramannya juga berbeda-beda, Contoh diatas dapat memberi gambaran bagaimana membuat total dan subtotal, silakan dikembangkan sesuai kebutuhan Download file yang digunakan dalam latihan ini. Download File Demikian pembahasan mengenai cara membuat pivot table dengan PHP dan MySQL, semoga bermanfaat. hitp:/jagowebdev.convpivot-able-dengan-php-dan-mysql! 99

You might also like