Membuat Grafik Data Vertikal dengan PHP
dengan format Graphic Batang
ni cara bikin grafik sederhana tanpa gambar di PHP, dengan bentuk vertikal
pertama kita butuh sql data dari database:
bikin database, dengan nama: graph_dbase
ni bwat table SQL na:
Code:
CREATE TABLE `report_toko` (
`id` int(11) NOT NULL auto_increment,
`nama_toko` varchar(255) NOT NULL default '',
`laba` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Dumping data for table `report_toko`
--
INSERT INTO `report_toko` VALUES (1, 'Toko A', 100000);
INSERT INTO `report_toko` VALUES (2, 'Toko B', 25000);
INSERT INTO `report_toko` VALUES (3, 'Toko C', 15000);
INSERT INTO `report_toko` VALUES (4, 'Toko D', 5000);
wuki singkat saja, gw mao bikin koneksi dlo:
Code:
$varData = array('localhost', 'root', '', 'graph_dbase');
list($host, $user, $pass, $db) = $varData;
$con = mysql_connect($host, $user, $pass);
mysql_select_db($db, $con) or die('ERROR DBASE CON');
ambil query untuk jumlah terbesar dari laba (MAX) dan total seluruh laba (SUM) dalam baris table:
Code:
$qry = mysql_query("SELECT * FROM report_toko") or die('ERROR REPORT DATA');
//ambil data MAX dari laba
$max = mysql_query("SELECT MAX(laba) FROM report_toko") or die('ERROR MAX DATA');
list ($most_value) = mysql_fetch_row($max);
mysql_free_result($max);
//jumlahkan (SUM) seluruh nilai laba dalam baris data sebagai ttlLaba
$sum = mysql_query("SELECT SUM(laba) AS ttlLaba FROM report_toko") or die('ERROR SUM DATA');
$ttl = mysql_fetch_array($sum);
sebagai keluaran data, gw memanfaatkan table bwat bikin graphic na menjadi vertical. Jadi kaga make fungsi2 gambar lib dari PHP.
Code:
<table border=0 cellspacing=5 cellpadding=0 align="center" style="background-color:#ABCDEF;border:1px solid blue;"><tr>
<?
## Vertical Graphic for Report Data [dremi.info] ##
## © Copyright 2008. PHP Tutorial Forum www.dremi.info ##
## http://www.dremi.info/forum/viewtopic.php?p=899#899 ##
## PHP Builder by hairul azami [dr.emi] ##
##=======================LICENSE========================##
## FREE ##
##======================================================##
while($row=mysql_fetch_array($qry))
{
if($most_value==0)
$most_value=1; // menghandle nilai field laba yang nol
//mulai proses data value untuk graphic
$graphLineValue = round(($row[laba] * 100) / $most_value);
$percent = round(($row[laba] * 100) / $ttl[ttlLaba], 2);
?>
<td valign="bottom" title="Nama Toko: <? echo $row['nama_toko']; ?>"><table border=0 cellpadding=0 cellspacing=2>
<tr align=center valign=bottom><td style="background-color:#E0F0FF;"><table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr align=center><td height=102 valign=bottom nowrap style="color:black;font-family:Arial, Helvetica;font-size:12px;"><? echo $percent; ?> %</td>
</tr><tr align=center valign=bottom><td><table border=0 cellspacing=0 cellpadding=0><tr><td style="border:2px outset white;" bgcolor="#A0C0F0" title="<? echo "Rp. ".number_format($graphLineValue,3,"",".").",-".""; ?>"><div style="width:20px; height:<? echo $graphLineValue; ?>px; line-height:1px; font-size:1px;"></div></td></tr></table></td></tr></table></td></tr><tr align=center>
<td style="color:#000000;background-color:#FFFFFF;border:2px groove white;font-family:Arial, Helvetica;font-size:12px;" nowrap> <? echo "Rp. ".number_format($graphLineValue,3,"",".").",-".""; ?> </td>
</tr><tr><td bgcolor="#C0E0FF" style="color:#000000;background-color:#C0E0FF;border:2px groove white;font-family:Arial, Helvetica;font-size:12px;text-align:center;"> <? echo $row['nama_toko']; ?> </td>
</tr></table></td>
<?
}
?>
</tr></table>
<div style="font-family:'Courier New'; font-size:24px; font-weight:bold; padding-top:20px; text-align:center;">
<?
echo "Total Laba = Rp. ".number_format($ttl[ttlLaba],0,"",".").",-"."";
?>
</div>
sebagai penentu tinggi dari graphic na ada pada baris:
Code:
$graphLineValue = round(($row[laba] * 100) / $most_value);
NOTE: round = pembulatan digit angka dibelakang koma
sedangkan untuk perhitungan nilai persentase na ada pada baris:
Code:
$percent = round(($row[laba] * 100) / $ttl[ttlLaba], 2);
jadi kalo di preview di browser, jadi ke gini:
Download disini bwat source code na
No comments:
Post a Comment