jueves, 26 de noviembre de 2009

Crear graficos estadisticos con PHP( pChart ) y MySQL

Hace algunos dias me vi en la necesidad de usar una libreria para generar reportes estadisticos, anteriormente habia usado una libreria JpGraph, pero que por motivos de algunos problemas con el renderizado de la imagen y su baja calidad, busque una nueva libreria, la cual se llama pChart, realmente es muy accesible, facil de manipular y crea graficos muy profesionales, los cuales son adaptables a a necesidad.

Primeramente es necesario descargar la libreria desde su web (pChart), donde existen ejemplos utilizando datos estaticos, aqui veremos como implementar una reporte grafico usando base de datos.

Crearemos la base de datos llamada arqonexus. con la tabla personm. la cual contendra los datos de personas y sus respectivas edades.

1.CREATE TABLE `personm` (
2. `cpersona` int(10) NOT NULL,
3. `nombre` varchar(20) NOT NULL,
4. `apellido` varchar(50) NOT NULL,
5. `edad` int(3) NOT NULL,
6. PRIMARY KEY (`cpersona`)
7.) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Ahora rellenaremos de datos.:

1.insert into `personm`(`cpersona`,`nombre`,`apellido`,`edad`)
2. values (1,'Moshe','Cotacallapa',18),(2,'Jose','Ramirez',24),(3,'Mateo','Hurtado',17),(4,'Carlos','Gonzales',19),(5,'Judas','Iscariote',24),(6,'Pedro','La Roca',21),(7,'Ananias','Gutenm',24),(8,'Maria','Carmona',18),(9,'Julio','Farre',19),(10,'Charles','Chaplin',19),(11,'Noe','Prado',17),(12,'Viviana','Roman',17),(13,'Tadeo','Torres',19);

Ahora que ya tenemos nuestra base de datos llenada, procederemos a implementar nuestro sitio.
Descompimir el archivo en una carpeta llamada, grafico, y crearemos un nuevo archivo php llamado conexion.php.

En el archivo a descargar existen 2 archivos php, uno de ellos se llama mypie.php y el otro vermypie.php, de los cuales el primero se encarga de crear la imagen a mostrar, el segundo hace un llamado al primero y tambien llama a la imagen renderizada.

Si desemos cambiar los datos lo podemos realizar en esta parte de mypie.php

01.include "conexion.php";//llamamos a la conexion, donde uds puede modificar la base de datos ,user y pass.
02.$cn=LibMySQL::getInstancia();
03.
04.include("pChart/pData.class");
05.include("pChart/pChart.class");
06.
07. $rs=$cn->consultar("select count(edad) as cedad,edad from personm group by edad asc;");//la consulta a la base de datos pidiendo la cantidad de edades de una determinada edad
08. $edad=array();//creamos el array
09. $cedad=array();
10. foreach($rs as $datos){
11. $edad[]=$datos['edad']." de edad"; //asignamos a los arrays creados
12. $cedad[]=$datos['cedad'];
13. }
14.
15. $DataSet = new pData;
16.
17. $DataSet->AddPoint($edad,"Edad");//el texto
18. $DataSet->AddPoint($cedad,"Porcentajes");//Extrayendo Porcentajes(la libreria se encarga de extraerlos , tan solo es necesario colocar cantidades.)
19.$DataSet->AddAllSeries();
20.$DataSet->SetAbsciseLabelSerie("Edad"); //no olvidar que aqui van los textos(nombres de los campos)
21.....// el codigo continua, pero no es necesario modificarla.
22......//
23. $Test->Render("ReporteEdad.png");//en la ultima parte se ve el nombre de la imagen que deseamos que se cree.

ahora veremos vermypie.php
En este caso el boton se llama ver

1.if(isset($_POST['ver'])){
2. include("mypie.php");//no olvidarse llamar a nuestra archivo de renderizado
3. echo "";//llamar al nombre de la imagen que hemos colocado en el mypie.php
4. }

Ahora nos quedara de la siguiente forma:
buttons

Todo el archivo para descargar y ver la prueba se encuentra aqui:
espero que les sirva.


4 comentarios:

  1. disculpa, y para convertirlo en reporte? ya sea para imprimi o guardar.

    De antemano gracias

    ResponderEliminar
  2. Brother me salvaste..!!!!! :D

    ResponderEliminar
  3. hola realize lo pasos a seguir pero nada , que es lo que debe mostrar?

    ResponderEliminar
  4. no olvidarse llamar a nuestra archivo de renderizado CUAL ES ME DA DOS ERRORES

    ResponderEliminar