So gampangnya kalau kita mengumpamakan garis X dan Y dalam tabel adalah X sebagai Kolom dan Y sebagai Baris.
Contoh Tabel Total Penjualan Perbulan mulai Januari sampai April.
Januari
|
Februari
|
Maret
|
April
|
1400
|
2000
|
4000
|
8000
|
Bulan
|
Total Penjualan
|
Januari
|
1400
|
Februari
|
2000
|
Maret
|
4000
|
April
|
8000
|
SELECT bulan, SUM( total_penjualan ) FROM penjualan GROUP BY bulan
Perintah Sql diatas adalah untuk mengelompokkan data bulan dan menjumlah total total_penjualan berdasarkan bulan yang sama. kenapa harus di Sum? ya dikarenakan mungkin ada dua data dengan bulan yang sama misal saja Bulan Januari ada dua data dan seterusnya. tetapi kalau kita menggunakan perintah Sql diatas maka data akan diurutkan berdasarkan nama bulan sesuai abjad. apa maksudnya? ya benar bulan april akan menjadi baris kesatu dan kemudian abjad bulan berikutnya. jadi bagaimana agar nama bulan dimulai bulan januari? ganti saja nama bulan dalam bentuk angka. Januari adalah angka 0 dan seterusnya. kenapa harus angka nol bukan satu? Karena nanti angka-angka tersebut akan dikonversi kebentuk nama bulan menggunakan fungsi Date di Extjs dan itu dimulai dari angka nol
SELECT bulan_angka, SUM( total_penjualan ) FROM penjualan GROUP BY bulan_angka
- Buat tabel dengan nama penjualan di database test dengan struktur dan data sebagai berikut
- Buat file chart.js, disini kita mendefinisikan chart dan data storenya
- Lakukan Looping dari Angka Nol sampai 11 (Angka 0 adalah Januari)
- Cari Data total di store berdasarkan angka perulangan tadi (0-11), jika ada maka ambil data totalnya dan jika tidak total =0
- Konversi data total tadi (berbentuk string) kedalam bentuk number
- Konversi angka bulan kedalam nama bulan menggunakan fungsi Date
- masukkan data yang telah dikonversi ke dalam variabel sementara
- Masukkan variabel sementara tersebut dalam cstore
- Buat file chart.php untuk mengakses data di mysql kita
- Buat File chart.html sebagai halaman utama
- Jika semua file sudah anda simpan tujukan browser kealamat chart.html (dalam hal ini punya saya di folder latihan1) => http://localhost/latihan1/chart.html
- Maka anda akan mempunyai tampilan chart seperti ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | -- phpMyAdmin SQL Dump -- version 3.2.0.1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Waktu pembuatan: 03. Januari 2010 jam 17:43 -- Versi Server: 5.1.37 -- Versi PHP: 5.3.0 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Database: `test` -- -- -------------------------------------------------------- -- -- Struktur dari tabel `penjualan` -- CREATE TABLE IF NOT EXISTS `penjualan` ( `bulan_angka` int(11) NOT NULL, `total_penjualan` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Dumping data untuk tabel `penjualan` -- INSERT INTO `penjualan` (`bulan_angka`, `total_penjualan`) VALUES (0, 1400), (2, 2000), (3, 4000), (4, 8000), (0, 30000), (1, 5000), (5, 14686); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | Ext.chart.Chart.CHART_URL = '../ext-3.1.0/resources/charts.swf'; Ext.onReady(function(){ Ext.QuickTips.init(); //mengaktifkan QuickTips var store = new Ext.data.JsonStore({ url:'chart.php', root:'data', autoLoad:true, fields: [ { name:'bulan' },{ name:'total1' } ], listeners:{ load: function(){ cstore.refreshData(); } } }); var cstore = new Ext.data.JsonStore({ fields: ['bulan', 'total1'], data: [], refreshData: function(){ var data =[]; for(i=0;i<12;i++){ total1 =0; found = store.findExact('bulan',String(i)); if (found != -1) total1 = Math.floor(store.getAt(found).data.total1); data.push({ bulan: Date.monthNames[i], total1:total1 }); } cstore.loadData(data); } }); new Ext.Panel({ width: 600, height: 400, renderTo: document.body, title: 'Grafik Batang', tbar: [ { text:'Refresh Data', handler:function(){ store.reload(); } } ], items: { xtype: 'columnchart', store: cstore, yField: 'total1', url: '../ext-3.1.0/resources/charts.swf', xField: 'bulan', xAxis: new Ext.chart.CategoryAxis({ title: 'Bulan' }), yAxis: new Ext.chart.NumericAxis({ title: 'Penjualan' }), extraStyle: { xAxis: { labelRotation: -90 } } } }); }); |
var data =[]; for(i=0;i<12;i++){ total1 =0; found = store.findExact('bulan',String(i)); if (found != -1) total1 = Math.floor(store.getAt(found).data.total1); data.push({ bulan: Date.monthNames[i], total1:total1 }); } cstore.loadData(data);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$host ="localhost";
$user ="root";
$pass = "";
$db = "test";
$table ="penjualan";
$con = @mysql_connect($host,$user,$pass) or die("tidak bisa terkoneksi ke Mysql");
mysql_select_db($db,$con) or die("tidak bisa memilih database test");
$sql = "select bulan_angka as bulan, sum(total_penjualan) as total1 from $table";
$sql .= " group by bulan_angka ";
$rs = mysql_query($sql) or die(mysql_error($con));
$data = array();
while ($row = mysql_fetch_object($rs)){
$data[] = $row;
}
$result = new stdClass();
$result->success= true;
$result->data = $data;
echo json_encode($result);
?>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <html> <head> <title>Chart</title> <link rel="stylesheet" type="text/css" href="../ext-3.1.0/resources/css/ext-all.css"> <script type="text/javascript" src="../ext-3.1.0/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="../ext-3.1.0/ext-all.js"></script> <script type="text/javascript">Ext.BLANK_IMAGE_URL = "../ext-3.1.0/resources/images/default/s.gif"</script> <script type="text/javascript" src="chart.js"> </script> <style type="text/css"> body { padding:10px; } </style> </head> <body> </body> </html> |
Mantaap gan, ane mau belajar extjs
BalasHapus