Foros del Web » Programando para Internet » PHP »

Sumar registros

Estas en el tema de Sumar registros en el foro de PHP en Foros del Web. Buenas, quisiera saber si hay alguien que me pueda ayudar a arreglar mi código, ya que donde esta escrito en azul me repite los títulos ...
  #1 (permalink)  
Antiguo 14/10/2011, 11:13
Avatar de JoSe__MiGuEl__  
Fecha de Ingreso: octubre-2011
Ubicación: Colombia
Mensajes: 51
Antigüedad: 12 años, 6 meses
Puntos: 0
Sumar registros

Buenas, quisiera saber si hay alguien que me pueda ayudar a arreglar mi código,
ya que donde esta escrito en azul me repite los títulos y lo que esta en rojo me muestra lo mismo que esta en azul; ademas la imagen no me muestra las barras como deberían de quedar, que serian rellenas.
Esto lo estoy haciendo con la librería GD de PHP, si alguien sabe como puedo ordenar esto, se lo agradecería mucho.

<?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 $_POST[campo] from $_POST[tabla]";
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_co lor);

// 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
while ($row = mysql_fetch_object ($result))
{
if ($total_votes > 0)
$percent = intval(round(($row->num_votes/$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->num_votes/$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->$_POST['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->$_POST['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);
?>
  #2 (permalink)  
Antiguo 14/10/2011, 12:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Sumar registros

Solo por curiosidad, que obtienes si haces lo siguiente?

Código PHP:
Ver original
  1. // Antes del while
  2. echo '<pre>';
  3. var_dump($_POST['campo']);
  4. echo '</pre>';
  5.  
  6. // Dentro del while
  7. echo '<pre>';
  8. var_dump($row->$_POST['campo'], $row);
  9. echo '</pre>';

Seguramente te dara un warning de que no puede enviar encabezados, pero solo es una prueba, interesa el contenido de las variables.

P.D. Por cierto, bienvenido a FDW.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 21/10/2011, 09:49
Avatar de JoSe__MiGuEl__  
Fecha de Ingreso: octubre-2011
Ubicación: Colombia
Mensajes: 51
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Sumar registros

Lo estoy intentando hacer con esto es crear un diagrama de barras, con los datos de un formulario que me inserta 10 registros de una recolección de datos; también me gustaría saber si se puede crear un count para contar cuantos registros tienen una cadena de texto cuando tenga la misma respuesta, hacer que los sume y que me muestre el resultado. Y siendo a si como lo podría hacer?
__________________
\m/_ JoSe _\m/

Etiquetas: mysql, registros, tabla
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 06:34.