Estadisticas con Codeigniter

2,474 views
Skip to first unread message

Oscar Andres Argueyo

unread,
Oct 1, 2012, 10:03:15 AM10/1/12
to codeignit...@googlegroups.com
Hola que tal grupo!
Tengo una pregunta y espero que me puedan ayudar ya que estuve googleando mucho y no puedo llegar a la solucion!
Tengo mi aplicacion para el trabajo , hice toda la parte del Crud y validaciones , luego hice los reportes con DOMPDF y ahora me solicitan que a partir de los datos, realice las estadisticas, hasta ahi no hay problemas , solamente tendria que ponerme a trabajar con las consultas de mysql! Pero me piden que sean con graficos de barra y tortas. En principio pense en algo como lo que tiene linkedin para sus grupos. Pero no se bien como lo realiza a la parte de graficos con una libreria de php o con esas librerias de JQuery!

Alguno ha tenido que enfrentarse a esto?Y si es asi, que herramientas usaron y como lo integraron a Codeigniter??

Gracias y espero que tengan un buen dia!

Un saludo desde Buenos Aires
Oscar Andres Argueyo

Oscar Andres Argueyo

unread,
Oct 1, 2012, 10:05:39 AM10/1/12
to codeignit...@googlegroups.com

Me olvide de adjuntar de algo como lo que quiero hacer!
Este es el ejemplo de las estadisticas del Grupo de Codeigniter en LinkedIn http://www.linkedin.com/groups?groupDashboard=&gid=2069077&trk=group_most_popular-an-rr-0

Roberto Moreno P.

unread,
Oct 1, 2012, 10:06:21 AM10/1/12
to codeignit...@googlegroups.com
Estimado,

https://developers.google.com/chart/

Saludos

--
Roberto Andrés Moreno Pérez

Daniel Carrero

unread,
Oct 1, 2012, 10:08:51 AM10/1/12
to codeignit...@googlegroups.com
Estimado mire las siguientes librerias jquery:

http://www.1stwebdesigner.com/css/top-jquery-chart-libraries-interactive-charts/

Saludos

2012/10/1 Roberto Moreno P. <rmo...@gmail.com>:
> --
>
>



--
Daniel Carrero Canales
+56974726453

Oscar Andrés Argueyo

unread,
Oct 1, 2012, 11:47:38 AM10/1/12
to codeignit...@googlegroups.com
Gracias, voy a ver las librerias y como integrarlas con Codeigniter! Alguno ha tenido que hacer este tipo de cosas?

Saludos

> --
>
>

Roberto Moreno P.

unread,
Oct 1, 2012, 11:50:43 AM10/1/12
to codeignit...@googlegroups.com
Si, pero mas que Codeigniter, es una aplicación de javascript

Saludos

El día 1 de octubre de 2012 12:47, Oscar Andrés Argueyo
<ozz....@hotmail.com> escribió:
> --

Daniel Carrero

unread,
Oct 1, 2012, 11:51:49 AM10/1/12
to codeignit...@googlegroups.com
Yo hace unos años hice un gráfico con perl y jquery, en ese entonces
utilice jplot, ahora hay algunos con diseños mas bonitos, es sencillo
solo le pasas los datos en un array al plugin y el div donde deseas
poner el gráfico, no debería ser muy dificil :-)

El día 1 de octubre de 2012 12:47, Oscar Andrés Argueyo
<ozz....@hotmail.com> escribió:

Oscar Andrés Argueyo

unread,
Oct 1, 2012, 11:57:28 AM10/1/12
to codeignit...@googlegroups.com
Ah gracias, es que habia buscado y me aparecian muchas librerias php para graficos y pense integrarlo a Codeigniter! Lo voy a encarar mas como una plugin de javascript! Muchas gracias y luego de realizarlo comento como me fue!
Hasta pronto!



> --
>
>

cesar barcia

unread,
Oct 15, 2012, 9:31:45 PM10/15/12
to codeignit...@googlegroups.com
hola gente como estan?

en un reporte con codeignier y viendo suspublicaciones tengo que representar unos totales creando un grafico..

estoy usando esto:

https://google-developers.appspot.com/chart/interactive/docs/quick_start

mi ema es que tengo que crear varios graficos en unmisma pantalla y ahi no se como usar ese codigo que muestra el link que deje para crer mas un grafico...

estoy usando ese mismo codigo solo reemplazo 

data.addRows([
['Mushrooms', 3],
['Onions', 1],
['Olives', 1],
['Zucchini', 1],
['Pepperoni', 2]
]);

por esto;

data.addRows([
<?php foreach($clientes as $campo){ ?>
['<?php echo $campo["Nombre"]; ?>', <?php echo $campo['total']; ?>],
<?php } ?>
]); 


dnde la variacle $clientes es un array con los datos de mi db.

espero me puedan dar una mano con esto.
Saludos.

elobserva...@gmail.com

unread,
Oct 15, 2012, 9:50:14 PM10/15/12
to codeignit...@googlegroups.com
Cesar:
En mi caso uso pchart, trabajo las variables como $row[] en una consulta o array sin dramas, si deseas posteo el codigo. Oscar lo mismo para ti. Saludos
Enviado desde mi BlackBerry

From: cesar barcia <cesa...@gmail.com>
Date: Mon, 15 Oct 2012 18:31:45 -0700 (PDT)
Subject: [codeigniter-spanish] Re: Estadisticas con Codeigniter
--
 
 

cesar

unread,
Oct 15, 2012, 6:55:08 PM10/15/12
to codeignit...@googlegroups.com
Che te lo agradeceria.. Ya ma sali de La pc pero manana arranco tenprano con esto si me podes mostrar un poco de codigo me viene de 10.
Enviado desde mi BlackBerry

Date: Tue, 16 Oct 2012 01:50:14 +0000
Subject: Re: [codeigniter-spanish] Re: Estadisticas con Codeigniter

--
 
 

Oscar Andrés Argueyo

unread,
Oct 15, 2012, 10:00:11 PM10/15/12
to codeignit...@googlegroups.com

Gracias, a mi tambien venia de 10 intentaba integrar la libreria JPGraph en codeigniter! Pero usando esto de google solo le pasaba los datos al script de googlechart! Pero el problema es que algunos graficos no pueden ir juntos y en la misma grafica (Asi decia la documentacion!)
Te agradezco que subas algo de codigo de pchart!

Saludos y buenas noches al grupo!

Subject: Re: [codeigniter-spanish] Re: Estadisticas con Codeigniter
To: codeignit...@googlegroups.com
From: cesa...@gmail.com
Date: Mon, 15 Oct 2012 22:55:08 +0000
--
 
 

Teo Jurado

unread,
Oct 16, 2012, 3:32:26 AM10/16/12
to codeignit...@googlegroups.com
Yo utilizo esta.. http://www.highcharts.com/

Simple y facil de adaptar a nuestro CI...

--
 
 

edwin_aguiar

unread,
Oct 16, 2012, 6:39:24 AM10/16/12
to codeignit...@googlegroups.com
Estimados Cesar y Oscar

En mi caso lo que tenia que hacer es publicar en tiempo real lo que se llama "curva de crecimiento" una especie de sigmoidea que se usa para fines biologicos, en este caso cria de pollos. Se tiene la curva de Gompertz (la que se usa para comparar) y la generada por el investigador que carga sus datos (de sus pollos, semanalmente), de alli el programa traza las dos curvas en diferentes colores y sirve para ver como va la cosa. Hago esta explicacion para dar el conocimiento de contexto en el cual esta corriendo la aplicacion. En este ejemplo para simplificar uso los datos de una DB de clima que tenemos, para no complicar con la formula de las curvas.
Esencialmente el codigo es este (que es un php cualquiera, el integrado a CI lo debo buscar en la oficina y lo posteo despues ya que de momento no lo encuentro a mano, pero leyendo el codigo es facil comprenderlo)
//***** todo esto va dentro del controlador cuando hacemos CI *********************//
// librerias
include("pChart/pData.class");
include("pChart/pChart.class");
// creamos el objeto Data
$DataSet = new pData;
//conecto y llamo a las variables a cargar en tres series de datos para trazar la curva
// ejemplo con DB de clima
//********************************************************************************************************
$con = mysql_connect('localhost', 'root', 'entropia') or die("No se pudo conectar: " . mysql_error());
$db = mysql_select_db('clima2', $con);
//$resultado = mysql_query("SELECT * nombre FROM puntos");
$sql="SELECT * FROM data_eeactes where hora='12:00' limit 1,43";
$resultados=mysql_query($sql,$con);

while ($row=mysql_fetch_array($resultados))
{
//tomamos los valores de las variables y se cargan en arrays distintos
$data_1[]=$row[3];
$data_2[]=$row[4];
$data_3[]=$row[6];
}
//******************************************************************************************************
// se incorporan los datos de los array a los objetos dataset
$DataSet->AddPoint(array($data_1),"Serie1");
$DataSet->AddPoint(array($data_2),"Serie2");
$DataSet->AddPoint(array($data_3),"Serie3");

// damos formato a los ejes y etiquetas
$DataSet->AddAllSeries();
//$DataSet->SetAbsciseLabelSerie("XLabel");
//$DataSet->SetAbsciseLabelSerie();
$DataSet->SetSerieName("aire","Serie1");
$DataSet->SetSerieName("suelo -10","Serie2");
$DataSet->SetSerieName("suelo a 0","Serie3");
$DataSet->SetYAxisName("grados");
$DataSet->SetYAxisUnit("");
$DataSet->SetXAxisname("Dias");

// Se inicializa el grafico
$Test = new pChart(1300,550);
$Test->setFixedScale(15,37);
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->setGraphArea(50,30,1280,510);
$Test->drawFilledRoundedRectangle(7,7,1293,543,5,240,240,240);
$Test->drawRoundedRectangle(5,5,1295,545,5,230,230,230);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2);
$Test->drawGrid(4,TRUE,230,230,230,50);

// Linea "0" del grafico
$Test->setFontProperties("Fonts/tahoma.ttf",6);
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
// Dibujo de las curvas
$Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription());
// circulito marcando los datos en la curva
$Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,250);
// datos de serie en grafica

$Test->writeValues($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie3");
$Test->writeValues($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie2");
$Test->writeValues($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie1");

// terminacion del grafico
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->drawLegend(1180,450,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties("Fonts/tahoma.ttf",10);
$Test->drawTitle(50,22,"Curvas de temperatura al mediodia",50,50,50,585);
//creacion del jpg o png que se envia a un directorio
$Test->Render("images/example2.jpg");

.....

se envia con $this->load->view la ruta de la imagen a la vista


?>
//******* esta es la vista ********************************************************
<html>
<body>
<div>
<!--- esta es la impresion en la vista de la imagen ---->
<p><img alt="Line chart" src="example2.jpg" style="border: 1px solid gray;"/></p>
</div>
</body>
</html>
En esencia este es el codigo de pchart, en su sitio esta muy explicado y hasta ahora me ha resultado mas facil que otras librerias, claro esta que hay que adaptarla
al CI, ese archivo lo buscare y lo subire apenas lo pueda. Espero que les sirva de algo, ya que el ejemplo es muy versatil, reemplazando el origen de datos por un CSV o
por un array cualquiera obtenemos las curvas / barras / tortas etc que deseen, en el sitio http://pchart.sourceforge.net/ esta muy bien explicado y en el rar de descarga
tenemos ejemplos de todo tipo para implementar. Obviamente hay que cargar la libreria en CI, usar los active records para las consultas mysql y pasar la ruta de la ima
gen a la vista para que imprima.

Teo
gracias por el dato, me agrado mucho lo que vi, voy a probarlo. Es como el open flash chart, te da los datos de valores y posee cierta interactividad. En el caso de Open flash chart les comento que no pude usarlo porque al llamar mis datos desde mysql por algun motivo hacia cast a string, por lo que al hacer los calculos no funcionaba. Les paso el dato por si tienen el mismo problema, que parece que su autor no resolvio porque en el ejemplo demo de su pagina tampoco se veia en funcionamiento :D 

Saludos cordiales

Ivo Rojas

unread,
Oct 16, 2012, 8:23:40 AM10/16/12
to codeignit...@googlegroups.com
Quizá Te sirve esta librería.. no lo use aun pero parece muy bueno... tiene bastante interactividad... :D
Me cuentas como te fue.. 



--
 
 

Ivo Rojas

unread,
Oct 16, 2012, 8:32:04 AM10/16/12
to codeignit...@googlegroups.com
Aqui esta la página principal de esta librería HighCharts... nota que es Responsive.. [se ajusta al tamaño que del navegador], 


También hay otros bastantes ejemplos...

Jimmy Collazos || acido || cuatroxl.com

unread,
Oct 16, 2012, 8:50:47 AM10/16/12
to codeignit...@googlegroups.com
Por norma general el tema de la visualización de gráficos se delega al front con Javascript; pero si tienes que hacer informes y exportar las estadísticas si que tiene sentido usar una librería PHP, en tu caso la de pChart está bastante bien.

Dentro de Javascript la de HighChart es la más recomendable ya que es bastante sencilla; pero eso dependerá de tu control sobre Javascript. De poder hacerlo Php sólo tendrá que pintar JSON

--
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::: J i m m y  C o l l a z o s :::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Ivo Rojas

unread,
Oct 16, 2012, 9:28:30 AM10/16/12
to codeignit...@googlegroups.com
HighChart  tambien exporta a Png, Jpg, SVG... tambien lo manda a la impresora..

--
 
 

Jimmy Collazos || acido || cuatroxl.com

unread,
Oct 16, 2012, 9:34:13 AM10/16/12
to codeignit...@googlegroups.com
@Ivo cuando digo "informes" me refiero a que tienes un cron automático cada x tiempo  para que exporte las gráficas en formato PDF, IMG o similar

También puedes levantar un cliente web por consola y hacer capturas pero... eso ya me parece un poco absurdo.

Agustin Suaña

unread,
Oct 16, 2012, 5:37:10 PM10/16/12
to codeignit...@googlegroups.com

cesar barcia

unread,
Oct 31, 2012, 10:26:09 AM10/31/12
to codeignit...@googlegroups.com
Gente mil gracias por las ayudas...

finalmente pude resolverlo hice algo con Highcharts y tambien pude con mi primer consulta de como generar mas de un grafico en una misma vista con https://www.google.com/jsapi

mi tema ahora es: saben si me puedo descargar esta libreria para usarla en local? el cliente no tiene conexion a internet generalmente y por mas que la aplicacion que le estoy haciendo es en local esta lbreria la estoy llamando asi:

        <script type="text/javascript" src="https://www.google.com/jsapi"></script>

mientras tenga internet no hay drama los graficos se van a generar.. pero necesito descargarla y poner los archivos en local, es posible?

les agradezco cualquier ayuda!!

Teo Jurado

unread,
Oct 31, 2012, 10:56:09 AM10/31/12
to codeignit...@googlegroups.com
Algo rápido, seria pulsar en el enlace y guardar como 'jsapi.js' lo que te aparezca en el navegador...

--
 
 

cesar barcia

unread,
Oct 31, 2012, 11:00:24 AM10/31/12
to codeignit...@googlegroups.com
Teo estaba viendo esa alternativa pero si vas al link de la libreria tenes lineas como estas:

google.loader.ServiceBase = 'https://www.google.com/uds';
google.loader.GoogleApisBase = 'https://ajax.googleapis.com/ajax';
google.loader.GoogleLocale = 'www.google.com';

que se siguen conectando a internet, estaria en la misma o no?



--
 
 

Teo Jurado

unread,
Oct 31, 2012, 11:04:25 AM10/31/12
to codeignit...@googlegroups.com
Puedes hacer lo mismo con esas y que se carguen en local....(de tu server vamos...)
--
 
 

--
 
 

cesar barcia

unread,
Nov 2, 2012, 3:01:06 PM11/2/12
to codeignit...@googlegroups.com
Teo pero esta libreria no puede acceder:
google.loader.GoogleApisBase = 'https://ajax.googleapis.com/ajax'
a la otra si pero a esta no, como seria?

Salute!


--
 
 

Reply all
Reply to author
Forward
0 new messages