Foros del Web » Programando para Internet » PHP »

Librerias JpGraph

Estas en el tema de Librerias JpGraph en el foro de PHP en Foros del Web. Hola! Pues resulta que estoy realizando un proyecto y necesito presentar en pantalla gráficos estadísticos de valores que obtengo de la bd. Por ahi me ...
  #1 (permalink)  
Antiguo 23/09/2005, 12:48
Avatar de Ledita  
Fecha de Ingreso: agosto-2005
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 0
Librerias JpGraph

Hola! Pues resulta que estoy realizando un proyecto y necesito presentar en pantalla gráficos estadísticos de valores que obtengo de la bd.

Por ahi me conseguí unas liberías llamadas JpGraph que justamente (teóricamente) reciben datos en forma de arreglos, crean el gráfico y me regresan una imágen tipo .jpg, .png o .gif dependiendo el caso.

Dentro del archivo .zip vienen unos archivitos de ejemplo, donde en el mismo documento .php asigna valores en x y en y y despues lo grafica. Cuando yo intento enviarle los valores desde otro documento .php me marca errores de lo mas molestos.

Ando buscando por aqui algo de ayuda de alguien que ya haya utilizado y aplicado esas funciones en sus proyectos para que pueda orientarme.

Y si a alguien le interesa obtener esas liberías (de libre distribución), envíenme un correo y con gusto se las mando.

Gracias!!
[email protected]
  #2 (permalink)  
Antiguo 23/09/2005, 12:53
Avatar de cosuroca  
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
bueno primero instalastes las llibreria correctamente es decir modificastes en el archivos php.ini????

para que puedas hacer eso?
  #3 (permalink)  
Antiguo 23/09/2005, 12:59
Avatar de ADIÓS_ADRIANA  
Fecha de Ingreso: septiembre-2005
Mensajes: 263
Antigüedad: 12 años, 3 meses
Puntos: 0
1. Configura la Libreria gd

2. http://www.forosdelweb.com/f18/pasar-estos-dos-valores-arreglos-jpgraph-335525/


Saludos.
  #4 (permalink)  
Antiguo 23/09/2005, 13:01
Avatar de cosuroca  
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
o bueno te puedes guiar de este codigo que recojo del libro de ANAYA!!!

Necesitas los privilegios de un usario en mysql!!!

pollsetup.sql
Código:
create database poll;

use poll;

create table poll_results (
			     candidate varchar(30),
			     num_votes int
);

insert into poll_results values 
  ('John Smith', 0),
  ('Mary Jones', 0),
  ('Fred Bloggs', 0)
; 

grant all privileges
on poll.*			
to [email protected] 
identified by 'poll';

show_poll.php

Código PHP:
<?php
/*******************************************
  Database query to get poll info 
*******************************************/

// get vote from form
$vote=$_REQUEST['vote'];

// log in to database 
if (!$db_conn mysql_connect('localhost''poll''poll'))
{
  echo 
'Could not connect to db<br />';
  exit;
};
@
mysql_select_db('poll');

if (!empty(
$vote))  // if they filled the form out, add their vote
{
  
$vote addslashes($vote); 
  
$query "update poll_results
            set num_votes = num_votes + 1
            where candidate = '$vote'"
;
  if(!(
$result = @mysql_query($query$db_conn)))
  {
    echo 
'Could not connect to db<br />';
    exit;
  }
};

// get current results of poll, regardless of whether they voted 
$query 'select * from poll_results';
if(!(
$result = @mysql_query($query$db_conn)))
{
  echo 
'Could not connect to db<br />';
  exit;
}
$num_candidates mysql_num_rows($result); 

// calculate total number of votes so far
$total_votes=0;
while (
$row mysql_fetch_object ($result)) 
{
    
$total_votes +=  $row->num_votes;
}
mysql_data_seek($result0);  // reset result pointer


/*******************************************
  Initial calculations for graph 
*******************************************/
// set up constants
putenv('GDFONTPATH=C:\WINDOWS\Fonts');
$width=500;        // width of image in pixels - this will fit in 640x480
$left_margin 50// space to leave on left of graph
$right_margin50// ditto right   
$bar_height 40;  
$bar_spacing $bar_height/2
$font 'arial';
$title_size16// point
$main_size12// point
$small_size12// point
$text_indent 10// position for text labels from edge of image

// set up initial point to draw from
$x $left_margin 60;  // place to draw baseline of the graph
$y 50;          // ditto 
$bar_unit = ($width-($x+$right_margin)) / 100;   // one "point" on the graph

// calculate height of graph - bars plus gaps plus some margin
$height $num_candidates * ($bar_height $bar_spacing) + 50;   

/*******************************************
  Set up base image 
*******************************************/
// create a blank canvas
$im ImageCreateTrueColor($width,$height);   
     
// Allocate colors   
$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;

// Create "canvas" to draw on 
ImageFilledRectangle($im,0,0,$width,$height,$bg_color);   

// Draw outline around canvas 
ImageRectangle($im,0,0,$width-1,$height-1,$line_color);   

// Add title
$title 'Poll Results';
$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;  // center it in x 
$title_y = ($y $title_height)/$title_above_line// center in y gap
ImageTTFText($im$title_size0$title_x$title_y
             
$text_color$font$title);  

// Draw a base line from a little above first bar location 
// to a little below last  
ImageLine($im$x$y-5$x$height-15$line_color);   

/*******************************************
  Draw data into graph 
*******************************************/
// Get each line of db data and draw corresponding bars   
while ($row mysql_fetch_object ($result)) 
{
  if (
$total_votes 0)
    
$percent intval(round(($row->num_votes/$total_votes)*100));
  else 
    
$percent 0;

  
// display percent for this value  
  
$percent_dimensions ImageTTFBBox($main_size0$font$percent.'%');
  
$percent_length $percent_dimensions[2] - $percent_dimensions[0];
  
ImageTTFText($im$main_size0$width-$percent_length-$text_indent
               
$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;

  
// length of bar for this value   
  
$bar_length $x + ($right_value $bar_unit);   

  
// draw bar for this value   
  
ImageFilledRectangle($im$x$y-2$bar_length$y+$bar_height$bar_color);   

  
// draw title for this value   
  
ImageTTFText($im$main_size0$text_indent$y+($bar_height/2), 
               
$text_color$font"$row->candidate");  

  
// draw outline showing 100% 
  
ImageRectangle($im$bar_length+1$y-2
                (
$x+(100*$bar_unit)), $y+$bar_height$line_color);   

  
// display numbers   
  
ImageTTFText($im$small_size0$x+(100*$bar_unit)-50$y+($bar_height/2),
               
$number_color$font$row->num_votes.'/'.$total_votes);

  
// move down to next bar
  
$y=$y+($bar_height+$bar_spacing);   
}   

/*******************************************
  Display image 
*******************************************/
Header('Content-type:  image/png');
ImagePNG($im);   

/*******************************************
  Clean up 
*******************************************/
ImageDestroy($im);   
?>

el cual el envio de datos es :

vote.html or vote.php
Código:
<html>
<head>
  <title>Polling</title>
<head>
<body>
<h1>Pop Poll</h1>
<p>Who will you vote for in the election?</p>
<form method=post action="show_poll.php">
<input type=radio name=vote value="John Smith">John Smith<br />
<input type=radio name=vote value="Mary Jones">Mary Jones<br />
<input type=radio name=vote value="Fred Bloggs">Fred Bloggs<br /><br />
<input type=submit value="Show results">
</form>
</body>
  #5 (permalink)  
Antiguo 23/09/2005, 13:09
Avatar de Ledita  
Fecha de Ingreso: agosto-2005
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 0
ADIOS_ADRIANA.... vi el otro thread y veo que pasaste por exactamente lo mismo que estoy pasando yo, ahora voy a intentar modificar mis scripts para hacerlos lo mas parecidos a los tuyos. Solo me podrías explicar eso de modificar mi libería gd ? como debo de modificarla?
  #6 (permalink)  
Antiguo 23/09/2005, 13:16
Avatar de Ledita  
Fecha de Ingreso: agosto-2005
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 0
cosuroca gracias por tu ejemplo, está algo complicado pero voy a seguir leyendolo hasta poderlo aplicar, aunque lo que ahorita me tiene de cabeza es poder utilizar las liberías de JpGraph
Gracias!
  #7 (permalink)  
Antiguo 23/09/2005, 13:18
Avatar de ADIÓS_ADRIANA  
Fecha de Ingreso: septiembre-2005
Mensajes: 263
Antigüedad: 12 años, 3 meses
Puntos: 0
No es tanto modificarla, sino activarla, es decir:

Cuando instalas php este se instala de manera estándar, pero adicionalmente vienen con otras extensiones o librerías (archivos .dll).

Php para enviar una gráfica creada dinámicamente, requiere tener activada o accesible esa librería .dll.

Típicamente en unentorno windows, eso se hace accediendo al archivo de configuración php.ini y descomentariando (quitar el ;) de la línea que llama esta extensión que es:

;extension=php_gd2.dll

Y eso es todo.

Pero antes de que hagas esto y para guiarte exactamente y que no dañes tu configuración, debes decirnos todo: Sistema operativo, versiones de php/mysql, y si tienes instalado todo bajo easy php ó appserv
  #8 (permalink)  
Antiguo 23/09/2005, 13:21
Avatar de cosuroca  
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
bueno es justo lo que te iva a decir que modifiques esa setencia en eu php.ini para que puedas acceder a las librerias de gd2... U_U!!
  #9 (permalink)  
Antiguo 23/09/2005, 13:24
Avatar de Ledita  
Fecha de Ingreso: agosto-2005
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 0
Mira, estoy utilizando WinXP profesional, con AppServ 2.4.4a
Aunque no se si sirva de algo, yo he podido ver las gráficas de los ejemplos solo no encuentro la manera de crearlas enviándoles los valores desde otro script.. no se si me explico....
  #10 (permalink)  
Antiguo 23/09/2005, 13:25
Avatar de cosuroca  
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
a bueno entonces la instalacion esta correcta es decir tu codigo o tu script a la hora de modificarlo has variado alguna setencia ,,, es lo mas obivio creo por q dices q los ejemplos corren ok!!!

=)
  #11 (permalink)  
Antiguo 23/09/2005, 13:30
Avatar de ADIÓS_ADRIANA  
Fecha de Ingreso: septiembre-2005
Mensajes: 263
Antigüedad: 12 años, 3 meses
Puntos: 0
Cita:
Iniciado por cosuroca
a bueno entonces la instalacion esta correcta es decir tu codigo o tu script a la hora de modificarlo has variado alguna setencia ,,, es lo mas obivio creo por q dices q los ejemplos corren ok!!!

=)

Es Correcto. Ahórrate ese paso.


Ahora verás que en el inicio de los scripts aparecen unas sentencias como

Código PHP:
include ("../../jpgraph/src/jpgraph.php"); 

Esto debes configurarlo según la ruta de tu carpeta jpgraph versus la localización de tu pagina.php con tu script.



Es decir en el ejemplo de mi post la carpeta jpgrap está 2 niveles de directorio "arriba", con respecto a mi página.

debes decirnos cómo están tus archivos para que los includes funcionen.
  #12 (permalink)  
Antiguo 23/09/2005, 13:31
Avatar de Ledita  
Fecha de Ingreso: agosto-2005
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 0
He intentado tantas cosas... que ya ni se lo que está bien o está mal
Intento enviar los valores tipo arreglo ya serializados por POST y solo me imprime el mensaje de que le he enviado valores no numéricos.... pero cuando pongo esos mismos valores directamente en el script que genera el gráfico, no me imprime ninguna queja!
Que demonios pasa...???
  #13 (permalink)  
Antiguo 23/09/2005, 13:36
Avatar de Ledita  
Fecha de Ingreso: agosto-2005
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 0
Las rutas de las liberias están bien, de otra manera no podría ver ni siquiera los ejemplos, de eso ya me encargué.


Yo lo tengo así:
ejemplos/graph //aqui tengo todas las liberías
ejemplos/ejemp1.php //este script intenta enviar valores al script que crea el gráfico ejemplos/bargradex2.php //este recibe los valores para graficarlos

y en "bargradex2.php" tengo así:
include ("graph/jpgraph.php");
  #14 (permalink)  
Antiguo 23/09/2005, 13:47
Avatar de cosuroca  
Fecha de Ingreso: septiembre-2005
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 0
bueno una gran ayuda seria que subieras tus scripts para ver si existe algun error ...

si no queres hacer eso podeis subirlo por medio de esta web y ya

http://www.megaupload.com/es/
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 20:06.