I have this code that is supposed to put out a dynamic image that looks like this 
when all the variables are passed but instead i get it looking like this 
here is the code i have:
<?php
$con = mysql_connect("localhost","root","102188");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
if(!mysql_select_db("questbar_db", $con)) {
die('Could not connect: ' . mysql_error());
}
//used to find which user to query for in the database
$user = mysql_real_escape_string(trim($_GET['user']));
// Query
$sql = "SELECT item,have,need FROM questbar WHERE user = '$user'";
// Run Query
$result = mysql_query($sql) or die("Error retrieving user info: ".mysql_error());
// Grab the user results
while( $row = mysql_fetch_array($result) ){
$item = $row['item'];
$have = $row['have'];
$need = $row['need'];
}
$height = 25;
$width = 200;
$fontsize = 6;
$frac = $have/$need;
$pct = 100 * $frac;
$img = imagecreate($width,$height);
$red = imagecolorallocate($img,255,0,0);
$black = imagecolorallocate($img,0,0,0);
$white = imagecolorallocate($img,255,255,255);
$bg = imageCreateFromPNG ('bg.png');
$bar =imageCreateFromPNG ('fill.png');
imageSetTile ($img, $bg);
imageFilledRectangle ($img, 0, 0, 116, 40, IMG_COLOR_TILED);
imageSetTile ($img, $bar);
ImageFilledRectangle($img, 7, 22, (114 * $frac), 34, IMG_COLOR_TILED);
$font = '04B_09__.ttf';
$text1 = "Questing For";
$text2 = $item;
$text3 = $have . "/" . $need;
$textwidth1 = floor(imagefontwidth($font) * strlen($text1));
$textleft1 = (($width - $textwidth1) / 2) + 12;
$textwidth2 = floor(imagefontwidth($font) * strlen($text2));
$textleft2 = (($width - $textwidth2) / 2) + 12;
imagettftext($img, $fontsize, 0, $textleft1, 8, $white, $font, $text1);
imagettftext($img, $fontsize, 0, $textleft2, 19, $white, $font, $text2);
imagettftext($img, 6, 0, 46, 32, $black, $font, $text3);
header('content-type: image/png');
imagepng($img);
?>