Where should I place this code?

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
Darkmatter5
Forum Newbie
Posts: 2
Joined: Fri Oct 31, 2008 8:36 am

Where should I place this code?

Post by Darkmatter5 »

Here's my current overall code.

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);
             ?>
 
Here's the current output:

-----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.
Post Reply