SitePoint Sponsor

User Tag List

Results 1 to 5 of 5
  1. #1
    SitePoint Zealot RishikeshJha's Avatar
    Join Date
    Mar 2009
    Location
    INDIA
    Posts
    146
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Bargraph code is not working???

    Hi,

    i want to create dynamic bar graph. i am using the following code. it is woriking fine bt when i implement this in ajax page it show gargabe values.

    include("../../includes/configure.php");
    for($j=0; $j< 12; $j++)
    {

    $today = mktime(0,0,0,date("m")- $j, date("d"),date("y"));
    $da=date("M",$today).' '.date("y",$today);
    $currentmonth=$da=date("m",$today);
    $sql="SELECT sum(`totalamount`) FROM `hj_employers_payment` where employers_id='1' and substring(substring_index(payment_date,'-',2),6)='$currentmonth' group by employers_id";
    //echo $sql;
    $query=mysql_query($sql);
    if(mysql_num_rows($query))
    {
    $result=mysql_fetch_array($query);
    $amt=$result[0];
    }
    else
    {
    $amt=0;
    }
    $arraymonth[$da].=$amt;
    }
    //print_r($values);
    $values=$arraymonth;


    $img_width=600;
    $img_height=300;
    $margins=25;


    # ---- 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=30; // for bard with change here
    $total_bars=count($values);

    $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,0,0,$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($values);
    $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($values);

    $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);

    }
    header("Content-type:image/png");
    imagepng($img);

    ?>

    can anyone help me...

    thanks in advance...

  2. #2
    SitePoint Evangelist
    Join Date
    Jun 2006
    Location
    Wigan, Lancashire. UK
    Posts
    523
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    If this is being called by an Ajax request, what is the Ajax response handler doing to process a PNG response rather than a JSON object?
    ---
    Development Projects:
    PHPExcel
    PHPPowerPoint

  3. #3
    SitePoint Zealot RishikeshJha's Avatar
    Join Date
    Mar 2009
    Location
    INDIA
    Posts
    146
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    actually i hv include this code in the ajax page. and simply i m using innerHtml to get the result

  4. #4
    SitePoint Zealot RishikeshJha's Avatar
    Join Date
    Mar 2009
    Location
    INDIA
    Posts
    146
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    hi mark i need ur help...

  5. #5
    SitePoint Evangelist
    Join Date
    Jun 2006
    Location
    Wigan, Lancashire. UK
    Posts
    523
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    The output of the script is the actual binary for the PNG image, and that is what is being sent back to the browser. What you could do is save the output from the script (the PNG binary) to a temporary file, and send the name of that file back to the browser. The ajax response handler can then write an <img src="filename"> to the innerhtml. However, this isn't the most efficient way of doing this: because the browser than has to call the server again to retrieve the actual image.

    It would be better if rather than making an Ajax call, your javascript wrote an <img src="phpscript.php>" to the innerhtml
    ---
    Development Projects:
    PHPExcel
    PHPPowerPoint


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
  •