Buenas, estoy intentando crear un diagrama de barras pero ya me tiene cansado este error: No se puede mostrar la imagen “http://localhost/bienesTs/diagraBarr.php” porque contiene errores.
El cual no eh podido resolver, mi codigo es este:
Código PHP:
<?php
/*******************************************
Petición a la base de datos para obtener la información de la encuesta
*******************************************/
// hacer log in en la base de datos
if (!$db_conn = @mysql_connect("localhost", "root", ""))
{
echo "No se puede conectar a la base de datos<br>";
exit;
};
@mysql_select_db("bienest");
// obtener los resultados actuales de la encuentas, independientemente de lo que haya votado
$query = "select count($_POST[campo]) from $_POST[tabla] group by($_POST[campo])";
if(!($result = @mysql_query($query, $db_conn)))
{
echo "No se puede conectar a la base de datos<br>";
exit;
}
$num_candidates = mysql_num_rows($result);
// calcular el número total de votos hasta ahora
$total_votes=0;
while ($row = mysql_fetch_object ($result)){
$total_votes += $row->$_POST['campo'];
}
mysql_data_seek($result, 0); // resetear el resultado
/*******************************************
Cálculo inicial para el gráfico
*******************************************/
// configurar constantes
$width=500; // ancho de la imagen en pixeles - encajará en 640x480
$left_margin = 50; // espacio a dejar a la izquierda de la imagen
$right_margin= 50; // lo mismo para la derecha
$bar_height = 40;
$bar_spacing = $bar_height/2;
$font = "arial.ttf";
$title_size= 16; // puntos
$main_size= 12; // puntos
$small_size= 12; // puntos
$text_indent = 10; // posición para las etiquetas de texto a la izquierda
// configurar el punto inicial desde el cual dibujar
$x = $left_margin + 60; // colocar la línea de base para dibujar del gráfico
$y = 50; // lo mismo
$bar_unit = ($width-($x+$right_margin)) / 100; // un "punto" en el gráfico
// cálcula el alto del gráfico - barras más espacios más el margen
$height = $num_candidates * ($bar_height + $bar_spacing) + 50;
/*******************************************
Configurar la imagen base
*******************************************/
// crear un lienzo en blanco
$im = imagecreate($width,$height);
// Asignar colores
$white=ImageColorAllocate($im,255,255,255);
$blue=ImageColorAllocate($im,0,64,128);
$black=ImageColorAllocate($im,0,0,0);
$pink = ImageColorAllocate($im,255,78,243);
$text_color = $black;
$percent_color = $black;
$bg_color = $white;
$line_color = $black;
$bar_color = $blue;
$number_color = $pink;
// Crear "lienzo" para dibujar
ImageFilledRectangle($im,0,0,$width,$height,$bg_color);
// Dibujar borde en torno al lienzo
ImageRectangle($im,0,0,$width-1,$height-1,$line_color);
// Añadir Título
$title = "Resultados Sondeo";
$title_dimensions = ImageTTFBBox($title_size, 0, $font, $title);
$title_length = $title_dimensions[2] - $title_dimensions[0];
$title_height = abs($title_dimensions[7] - $title_dimensions[1]);
$title_above_line = abs($title_dimensions[7]);
$title_x = ($width-$title_length)/2; // centrarlo en x
$title_y = ($y - $title_height)/2 + $title_above_line; // centrarlo en y
ImageTTFText($im, $title_size, 0, $title_x, $title_y,
$text_color, $font, $title);
// Dibujar una línea de base un poco por encima de la primera localización de la barra
// a un poco por debajo de la última
ImageLine($im, $x, $y-5, $x, $height-15, $line_color);
/*******************************************
Dibujar los datos en el gráfico
*******************************************/
// Obtener cada línea de los datos de la base de datos y dibujar las barras correspondientes
$campo = $_POST['campo'];
for($i=0;$i<=$campo;$i++){
while ($row = mysql_fetch_object($result))
{
if ($total_votes > 0)
$percent = intval(round(($row->$i/$total_votes)*100));
else
$percent = 0;
// muestra el tanto por ciento para este valor
ImageTTFText($im, $main_size, 0, $width-30, $y+($bar_height/2),
$percent_color, $font, $percent."%");
if ($total_votes > 0)
$right_value = intval(round(($row->$i/$total_votes)*100));
else
$right_value = 0;
// tamaño de barra para este valor
$bar_length = $x + ($right_value * $bar_unit);
// dibujar barra para este valor
ImageFilledRectangle($im, $x, $y-2, $bar_length, $y+$bar_height, $bar_color);
// dibujar título para este valor
ImageTTFText($im, $main_size, 0, $text_indent, $y+($bar_height/2),
$text_color, $font, $row->$campo);
// dibujar contorno mostrando 100%
ImageRectangle($im, $bar_length+1, $y-2,
($x+(100*$bar_unit)), $y+$bar_height, $line_color);
// mostrar números
ImageTTFText($im, $small_size, 0, $x+(100*$bar_unit)-50, $y+($bar_height/2),
$number_color, $font, $row->$campo."/".$total_votes);
// hacia abajo a la siguiente barra
$y=$y+($bar_height+$bar_spacing);
}
}
/*******************************************
Mostrar imagen
*******************************************/
Header("Content-type: image/png");
ImagePng($im);
/*******************************************
Limpiar
*******************************************/
ImageDestroy($im);
?>
Los datos que tomo des de la base de datos son tipo text, los cuales sumo con count para sumar los que tengan la misma respuesta.
Agradeceria mucho si alguien pudiera ayudarme.