Tu peux dessiner en php mais faut dessiner droite par droite ou figure par figure donc pour un histogramme, les axes, les rectangles qui ont pour hauteur la donnée SQL.
Voilà un exemple:
<?
Header("Content-type: image/png" );
$x=400; //taille de l'image
$y=300;
$data=array (3, 1, 7, 2, 5, 4, 6); //données
$im = imagecreate($x,$y); //crée l'image en mémoire
$black = ImageColorAllocate($im, 0,0,0); //définit les couleurs
$blue = ImageColorAllocate($im, 0,36,135);
$white = ImageColorAllocate($im, 255,255,255);
ImageFilledRectangle($im,0,0,$x,$y,$white); //remplir l'image en blanc
//dessine les axes
imageline($im,0,50,$x,50,$black);
imageline($im,$x-50,0,$x-50,$y,$black);
//pour chaque donnée tu tableau, dessine un rectangle plein dont la hauteur est la valeur de la donnée du tableau
for($i=0;$i<sizeof($data);$i++)
{
ImageFilledRectangle($im,$i*50+15,51,$i*50+40,51+$data[$i]*30,$blue);
}
Imagepng($im); //envoi l'image en mémoire au navigateur
?>