SitePoint Sponsor

User Tag List

Results 1 to 2 of 2

Hybrid View

  1. #1
    SitePoint Evangelist runeveryday's Avatar
    Join Date
    Jul 2009
    Posts
    437
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    what's wrong with the php generate image bar chart code?

    the database is right:

    Code:
    DATABASE `poll`; TABLE `results`  CREATE TABLE `results` ( 
       book_type VARCHAR(50), 
       num_votes INT
    );
    
    INSERT INTO `results` values  
        ('Classic', 15), 
        ('Fantasy', 7), 
        ('Humor', 32),
        ('Mystery', 12),
        ('Poetry', 25);

    the code:
    Code:
    <?php
        $dbhandle = mysql_connect("localhost","root","123") or die("unable to connect to mysql");
    
        $selected = mysql_select_db("poll",$dbhandle);
    
        $result = mysql_query("SELECT * FORM results");
    
        $num_poller = mysql_num_rows($result);
    
        $total_votes = 0;
        while($row = mysql_fetch_array($result)){
            $total_votes += $row{'num_votes'};
    
        }
    
        mysql_data_seek($result,0);
        mysql_close($dbhandle);
    
        putenv('GDFONTPATH=C:\WINDOWS\Fonts');
        $font = 'arial';
        $y = 50;
        $width =700;
        $height = $num_poller * $bar_height *1.5 + 70;
        $bar_unit = ($width - 400)/100;
    
        $image = imagecreate($width,$height);
    
        $white = imagecolorallocate($image,255,255,255);
        $black = imagecolorallocate($image,0,0,0);
        $red = imagecolorallocate($image,255,0,0);
        $blue = imagecolorallocate($image,0,0,255);
    
        imagefill($image,$width,$height,$white);
    
        imagerectangle($image,0,0,$width-1,$height-1,$black);
    
        imagettftext($image,16,0,$width/3+50,$y-20,$black,$font,'poll results');
    
        while($row = mysql_fetch_object($result)){
            if($total_votes > 0){
                $percent = intval(round(($row->num_votes/$total_votes)*100));
    
            }else{
                $percent =0;
    
        }
    
        imagettftext($image,12,0,10, $y+($bar_height/2), $black, $font, $row->book_type);
        //Output percentage for a particular value
        imagettftext($image, 12, 0, 170, $y + ($bar_height/2),$red,$font,$percent.'%');
    
        $bar_length = $percent * $bar_unit;
    
        //Draw a shape that corresponds to 100%
        imagerectangle($image, $bar_length+221, $y-2, (220+(100*$bar_unit)), $y+$bar_height, $black);
        //Output a bar for a particular value
        imagefilledrectangle($image,220,$y-2,220+$bar_length, $y+$bar_height, $blue);
        //Output the number of votes
        imagettftext($image, 12, 0, 250+100*$bar_unit, $y+($bar_height/2), $black, $font, $row->num_votes.' votes cast.');
    
    
        $y = $y + ($bar_height * 1.5);
    
        }    
    
        header("Content-Type: image/jpeg");    
    
        imagejpeg($image);    
    
        imagedestroy($image);
    it shows an error: the image...cannot be displayed because it contains errors?. what's wrong with the code? thank you

  2. #2
    SitePoint Evangelist runeveryday's Avatar
    Join Date
    Jul 2009
    Posts
    437
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    i am sorry, i missed $bar_height =20; although i added it the code still can't work.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •