Code: Select all
<?php
include 'library/config.inc.php';
$conn=mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');
mysql_select_db($dbnamemain);
$que_fols=mysql_query("SELECT folder_id, fol_name
FROM folders
JOIN cabinets ON(cabinets.cabinet_id=folders.cabinet_id)
WHERE cab_name='Bills'
ORDER BY fol_name ASC
") or die(mysql_error());
while($row1=mysql_fetch_array($que_fols)) {
echo "<b>$row1[fol_name] ($row1[folder_id])</b><br>";
$que_years=mysql_query("SELECT DISTINCT item_id, folders.folder_id, fol_name, MID(bill_date_due,1,4) as year
FROM items
JOIN folders ON(folders.folder_id=items.folder_id)
JOIN cabinets ON(cabinets.cabinet_id=folders.cabinet_id)
WHERE cab_name='Bills'
AND folders.folder_id=$row1[folder_id]
ORDER BY fol_name ASC, year ASC
") or die(mysql_error());
$dataset=array();
while($row2=mysql_fetch_array($que_years)) {
$filename="images/graphs/$row1[folder_id]$row2[year].png";
echo "<a href='$filename'> $row2[year]</a>";
$que_data=mysql_query("SELECT bill_date_due, bill_amount
FROM items
WHERE folder_id=$row1[folder_id]
AND item_id=$row2[item_id]
ORDER BY bill_date_due ASC
") or die(mysql_error());
while(list($date,$amt)=mysql_fetch_row($que_data)) {
$t=strtotime($date);
$values=array ("year"=>date('Y',$t),
"month"=>date('m',$t),
"amount"=>$amt);
$dataset[$values[month]]=$values[amount];
}
}
if($dataset!=NULL) {
$img_width=450;
$img_height=300;
$margins=20;
# ---- Find the size of graph by substracting the size of borders
$graph_width=$img_width - $margins * 2;
$graph_height=$img_height - $margins * 2;
$img=imagecreate($img_width,$img_height);
$bar_width=20;
$total_bars=count($dataset);
$gap= ($graph_width- $total_bars * $bar_width ) / ($total_bars +1);
# ---- Define Colors
$bar_color=imagecolorallocate($img,0,64,128);
$background_color=imagecolorallocate($img,240,240,255);
$border_color=imagecolorallocate($img,200,200,200);
$line_color=imagecolorallocate($img,220,220,220);
# ---- Create the border around the graph
imagefilledrectangle($img,1,1,$img_width-2,$img_height-2,$border_color);
imagefilledrectangle($img,$margins,$margins,$img_width-1-$margins,$img_height-1-$margins,$background_color);
# ---- Max value is required to adjust the scale
$max_value=max($dataset);
$ratio= $graph_height/$max_value;
# ---- Create scale and draw horizontal lines
$horizontal_lines=20;
$horizontal_gap=$graph_height/$horizontal_lines;
for($i=1;$i<=$horizontal_lines;$i++){
$y=$img_height - $margins - $horizontal_gap * $i;
imageline($img,$margins,$y,$img_width-$margins,$y,$line_color);
$v=intval($horizontal_gap * $i /$ratio);
imagestring($img,0,5,$y-5,$v,$bar_color);
}
# ---- Draw the bars here
for($i=0;$i< $total_bars; $i++){
# ---- Extract key and value pair from the current pointer position
list($key,$value)=each($dataset);
$x1= $margins + $gap + $i * ($gap+$bar_width);
$x2= $x1 + $bar_width;
$y1=$margins +$graph_height- intval($value * $ratio);
$y2=$img_height-$margins;
imagestring($img,0,$x1+3,$y1-10,$value,$bar_color);
imagestring($img,0,$x1+3,$img_height-15,$key,$bar_color);
imagefilledrectangle($img,$x1,$y1,$x2,$y2,$bar_color);
}
imagepng($img,$filename);
}
else { echo "<i>No items exist in this bill folder!</i>"; }
echo "<p>";
}
mysql_close($conn);
?>
-----START-----
Credit Card statements (14)
No items exist in this bill folder!
Internet (15)
2008 2008
Telephone (2)
2007 2008 2008 2008
Water and Electric (10)
No items exist in this bill folder!
-----END-----
Here's what I'm wanting it to do.
-----START-----
Credit Card statements (14)
No items exist in this bill folder!
Internet (15)
2008
Telephone (2)
2007 2008
Water and Electric (10)
No items exist in this bill folder!
-----END-----
I know the years are being rendered per pass through the while statement, but I want the year to only render once per year.