Why isnt this working?

Discussion in 'PHP' started by NITRO23456, Oct 13, 2013.

  1. #1
    
    <?PHP
    $username = "xxxxxx";
    $password = "xxxxxx";
    $hostname = "xxxxxx";
    
    //connection to the database
    $dbhandle = mysql_connect($hostname, $username, $password)
     or die("Unable to connect to MySQL");
    
    //select a database to work with
    $selected = mysql_select_db("xxxxxx",$dbhandle)
      or die("Could not select examples");
    
    //execute the SQL query and return records
    $result = mysql_query("SELECT rf FROM xxxxxx WHERE ID='4'");
    $result2 = mysql_query("SELECT rf FROM xxxxxx WHERE ID='3'");
    $result3 = mysql_query("SELECT rf FROM xxxxxx WHERE ID='5'");
    $result4 = mysql_query("SELECT rf FROM xxxxxx WHERE ID='7'");
    $result5 = mysql_query("SELECT rf FROM xxxxxx WHERE ID='8'");
    $result6 = mysql_query("SELECT rf FROM xxxxxx WHERE ID='9'");
    
       # ------- The graph values in the form of associative array
       $values=array(
         "1" => $result,
         "2" => $result2,
      "3" => $result3,
         "4" => $result4,
         "5" => $result5,
      "6" => $result6
       );
    
       $img_width=600;
       $img_height=250;
       $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=50;
       $total_bars=count($values);
       $gap= ($graph_width- $total_bars * $bar_width ) / ($total_bars +1);
    
       # -------  Define Colors ----------------
       $bar_color=imagecolorallocate($img,68,76,135);
       $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($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);
    
    ?>
    
    Code (markup):

     
    NITRO23456, Oct 13, 2013 IP
  2. ThePHPMaster

    ThePHPMaster Well-Known Member

    Messages:
    737
    Likes Received:
    52
    Best Answers:
    33
    Trophy Points:
    150
    #2
    You are assigning values the db handler and not the actual value. Change:

    
    $result = mysql_query("SELECT rf FROM xxxxxx WHERE ID='4'");
    ....
     "1" => $result,
    
    PHP:
    To:
    
    $result = mysql_fetch_row(mysql_query("SELECT rf FROM xxxxxx WHERE ID='4'"));
    .....
     "1" => $result[0],
    
    PHP:
     
    ThePHPMaster, Oct 13, 2013 IP
  3. NITRO23456

    NITRO23456 Well-Known Member

    Messages:
    516
    Likes Received:
    13
    Best Answers:
    0
    Trophy Points:
    110
    #3
    brilliant thanks a lot!!
     
    NITRO23456, Oct 13, 2013 IP
  4. PoPSiCLe

    PoPSiCLe Illustrious Member

    Messages:
    4,623
    Likes Received:
    725
    Best Answers:
    152
    Trophy Points:
    470
    #4
    And my god - please remake the database-related code to use mysqli or preferably, PDO. Please. Running separate queries for each row, no loops... *shakes head*

    Do a prepared statement-query, run it through a loop with the values provided (the IDs), and run through a loop for the results.
     
    PoPSiCLe, Oct 13, 2013 IP
    deathshadow and HolyRoller like this.