En este grupo En todos

Grupo de PHP



Como hacer una grafica en PHP usando base datos mysql.

Andry
Escrito por Andry
el 10/05/2010

Estimados.

Ando buscando como realizar una grafica usando php extrayendo los datos de msyql.

Si alguno de ustedes puede decirme como se puede lograr esto, se lo agradecería mucho.

Sin más en esprera de sus coridales respuestas.

Atentamente

Un saludo.

Nasredin Nas Nas
Licenciado geografia e historia uam un...
Escrito por Nasredin Nas Nas
el 10/05/2010

Yo utilizo el visfire, te permite sacar los datos de sql usando consultas desde php, a la hora de mostrar los datos los indicas con xml.


Saludos.

Nasredin Nas Nas
Licenciado geografia e historia uam un...
Escrito por Nasredin Nas Nas
el 10/05/2010

Muy buenos enalces Marcelo,


La verdad es que vienen de maravilla ya que la clase que yo uso, esta muy bien para pocos elementos pero me daba poco juego cuando tenia multiples elementos de comparación.


Saludos.

Andry
Escrito por Andry
el 01/06/2010

Estimados Nasredin Nas Nas y Marcelo Aguero

Gracias por sus comentarios los link que me ofrecio Marcelo Aguero los estuve chequeando y he logrado hacer una grafica con el lenguaje php la base de datos mysql y la libreria jpgraph.

Les cuento que me funciono, pero no logro extraer como quiero los datos. Lo que ando tratando de hacer es obtener por cada día el tiempo cuando comenzo cada linea de produccion. Para esto hice una tabla llamada sgc_fecha, en ella tengo los campos id, id_linea, fecha, hora.

id -> identificador
id_lineas -> los valores de las lineas, 1, 2, 3, 4, 5.
fecha -> los valores de las fecha. 2010-06-01, 2010-06-01
hora ->las horas de inicio de las lineas.

Con este codigo pueden crear la tabla e insertar dos valores:
--
-- Estructura de tabla para la tabla `sgc_fecha`
--
CREATE TABLE `sgc_fecha` (
`id_fecha` int(11) NOT NULL auto_increment,
`id_lineas` int(11) NOT NULL,
`fecha` date NOT NULL,
`hora` time NOT NULL,
PRIMARY KEY (`id_fecha`),
UNIQUE KEY `id_lineas` (`id_lineas`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Volcar la base de datos para la tabla `sgc_fecha`
--
INSERT INTO `sgc_fecha` VALUES (1, 1, '2010-06-01', '07:00:00');
INSERT INTO `sgc_fecha` VALUES (2, 2, '2010-06-01', '07:20:00');
INSERT INTO `sgc_fecha` VALUES (3, 3, '2010-06-01', '07:15:00');
INSERT INTO `sgc_fecha` VALUES (4, 4, '2010-06-01', '07:05:00');
INSERT INTO `sgc_fecha` VALUES (5, 5, '2010-06-01', '07:20:00');
--

Con este otro codigo pueden crear una pagina. Php e introducirlo dentro para que muestre los valores que estan en la tabla anterior, pero antes tienen que crear una base datos llamada "sgc" donde esta la tabla sgc_fecha.

<? Php
//Libreria necesaria para confeccionar el grafico.
include (".. /jpgraph. Php");
include (".. /jpgraph_bar. Php");

//Variables deficinas.
$dbhost = "localhost"; // nombre del servidor de base datos.
$dbuser = "root"; // nombre del usuario que va interactuar con la base datos.
$dbpass = ""; // contraseña del usuario que va interactuar con la base datos.
$dbname = "sgc"; // nombre de la base datos.

//Conexion con la base datos.
$db = mysql_connect("$dbhost", "$dbuser","$dbpass") or die(mysql_error());

//Seleccion de la base de datos.
mysql_select_db("sgc",$db) or die(mysql_error());

//Conulta con la base datos.
$sql = mysql_query("SELECT * FROM sgc_fecha") or die (mysql_error());

//Estructura de repetición para extraer los valores de la consulta.
while($row = mysql_fetch_array($sql))
{
$data[] = $row[3];
$leg[] = $row[1];
}
$graph = new Graph(450,250,"auto");
$graph->SetScale("textint");
$graph->img->SetMargin(50,30,50,50);
$graph->SetShadow();
$graph->title->Set("Test1. Php MySQL & JpGraph");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetTickLabels($leg);
$graph->yaxis->SetTickLabels($data);
$bplot = new BarPlot($leg);
$bplot->SetFillColor("black"); // Fill color
$bplot->value->Show();
$bplot->value->SetFont(FF_ARIAL,FS_BOLD);
$bplot->value->SetAngle(0);
//$bplot->value->SetColor("green","yellow");
$bplot->SetFillGradient("blue","blue",GRAD_MIDVER);
$graph->Add($bplot);
$graph->Stroke();
? >

Ojala me pueda orientar al respecto.

Sin más en espera de sus comentarios y opiniones.

Atentamente.

Un saludo.

Andry

Agustin Rios Reyes
Ing. en sistemas computacionales insti...
Escrito por Agustin Rios Reyes
el 02/06/2010

<! -- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p. MsoNormal, li. MsoNormal, div. MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10. 0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11. 0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;}. MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;}. MsoPapDefault {mso-style-type:export-only; margin-bottom:10. 0pt; line-height:115%;} @page Section1 {size:612. 0pt 792. 0pt; margin:70. 85pt 3. 0cm 70. 85pt 3. 0cm; mso-header-margin:36. 0pt; mso-footer-margin:36. 0pt; mso-paper-source:0;} div. Section1 {page:Section1;} -->

Saludos compañero.

Por lo que entiendo y me corriges si estoy interpretando mal la situación.

Lo que quieres graficar es por día, la line de producción del día. Lo que entiendo es que tienes barias líneas de producción que comienzan a diferentes horas.

Lo que se me ocurre es separar los datos o agruparlos desde el query, sabiendo la ora en la que comenzó la producción y el fin de esta. Y así ese resultado lo graficas.


Si me equivoco. Podrías describir con más detalle el proceso o la situación para darnos una idea más clara de cómo funciona el sistema y así poder auxiliarte.

Saludos a los que vivimos del PHP.

Andry
Escrito por Andry
el 02/06/2010

Estimado Agustin Rios Reyes

Muchas gracias por comentar.

Le explico, lo que intento hacer es obtener las horas de inicio de cada linea de produccion en una grafica.

Para esto necesito que en el eje X esten los días del mes en curso (01/06/2010 hasta 30/06/2010, teniendo en cuenta los meses con 31, 28 y/o 29) y en el eje Y las horas desde la 07:00 am hasta las 04:00 pm. Las leyendas que sean las lineas de produccion 1, 2, 3, 4, 5 y los valores a mostrar que sean las horas de inicio.

Adjunto una propuesta en una imagen de una grafica en excel para si esto se puede lograr con la libreria jpgraph, usando php y mysql.

Sin más en espera de su cordial respuesta.

Un saludo.
Andry.

Pablo Orbe
Ingenieria en computacion universidad ...
Escrito por Pablo Orbe
el 19/06/2010

Creo que lo primero que persivo en tu grafica de ejemplo son varias series en eje de las x;

Corrijeme si me equivoco...

Si este es el caso lo que deberias guaradar seria primero por cada registro

Idgeneral,idlinea,fecha ,horainicio, horafinal en una tabla

La sentencia sql tenqdrian que ser el numero de lineas de produccion.

$res1[$indedice]=mysql_query("SELECT * FROM tabla where idlinea=". $indice,$conneccion);

Y tener un arreglo /*para despues agregarlo como un bplot o seri de datos*/

While($data[$indice]=mysql_fetch_row($res1[$indice])&& $indice<$numeromayor)

$indice++;

$bplot=new barplot($data[$indice])//para cada uno de los arreglos

Graph->add/($bplot)//para cada uno de los indices


Ahora bien mi apreciacion seria la siguiente tambien si todas tus lineas de produccion empiezan a las 7:00 hrs o la que sea solo guada la hora final...

Otra cosa si no es este el caso usa otro tipo de grafica no la barra simples debe haber otra que mejor se adapte a tus necesidades nop se si me di a entender y si este es la manera de como quieres visualizar tus datos

Javier Cole
Aragua, Venezuela
Escrito por Javier Cole
el 06/11/2012

Yo para ser mis graficas uso fusioncharst. Trae muchas graficas para escoger https://www.fusioncharts.com/download/trials/ . Como hago para hacer una grafica en xml usando mi base de datos. Porque por php lo se hacer pero en xml noc la unica forma q las lleno dandolo yo mismo los valores :s.

Javier Cole
Aragua, Venezuela
Escrito por Javier Cole
el 06/11/2012

Yo para ser mis graficas uso fusioncharst. Trae muchas graficas para escoger https://www.fusioncharts.com/download/trials/. Como hago para hacer una grafica en xml usando mi base de datos. Porque por php lo se hacer pero en xml noc la unica forma q las lleno dandolo yo mismo los valores :s.