Foros del Web » Programando para Internet » PHP »

Mostrar diagrama de barras?

Estas en el tema de Mostrar diagrama de barras? en el foro de PHP en Foros del Web. 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. ...
  #1 (permalink)  
Antiguo 25/10/2011, 15:23
Avatar de JoSe__MiGuEl__  
Fecha de Ingreso: octubre-2011
Ubicación: Colombia
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 0
Mostrar diagrama de barras?

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($result0);  // 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_margin50// lo mismo para la derecha
$bar_height 40;
$bar_spacing $bar_height/2;
$font "arial.ttf";
$title_size16// puntos
$main_size12// puntos
$small_size12// 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_size0$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)/$title_above_line// centrarlo en y
ImageTTFText($im$title_size0$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_size0$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_size0$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_size0$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.
__________________
\m/_ JoSe _\m/
  #2 (permalink)  
Antiguo 25/10/2011, 15:43
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 19 años, 1 mes
Puntos: 56
Respuesta: Mostrar diagrama de barras?

Cita:
No se puede mostrar la imagen “http://localhost/bienesTs/diagraBarr.php
y el error php es....
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 25/10/2011, 19:11
Avatar de JoSe__MiGuEl__  
Fecha de Ingreso: octubre-2011
Ubicación: Colombia
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Mostrar diagrama de barras?

Bueno hay me disculparan el error al redactar, la cosa es que en verdad al ejecutar no muestra un error como tal; sino que dice ese mensaje de que no se puede mostrar la imagen. Eso es todo lo que muestra y nada mas. Muchas gracias por haberme echo ver lo de la redacción.
__________________
\m/_ JoSe _\m/
  #4 (permalink)  
Antiguo 25/10/2011, 19:50
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Mostrar diagrama de barras?

con diagrama te refieres a graficos estadisticos de barra?? porque no usas jgraph que es una librerìa que te permite trabajar con estos de manera sencilla, ve si te sirve y si te entendi bien, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 25/10/2011, 20:08
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 19 años, 1 mes
Puntos: 56
Respuesta: Mostrar diagrama de barras?

verificaste si tienes activada la librería GD ?
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #6 (permalink)  
Antiguo 27/10/2011, 07:53
Avatar de JoSe__MiGuEl__  
Fecha de Ingreso: octubre-2011
Ubicación: Colombia
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Mostrar diagrama de barras?

Si tengo la librería GD activa, lo estoy usando con el xampp; aaah y si me refiero a gráficos estáticos de barra, voy a intentar adicionarle el jgraph al xampp... si me da les comento.
Muchas gracias por ayudarme
__________________
\m/_ JoSe _\m/

Etiquetas: libreriagd, php+mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:11.