Foros del Web » Programando para Internet » PHP »

crear grafico con mysql y php

Estas en el tema de crear grafico con mysql y php en el foro de PHP en Foros del Web. Hola junto con saludarlos necesita una gran ayuda esta es mi primer grafico que inteto hacer, los que e visto como ejemplo se ven faciles ...
  #1 (permalink)  
Antiguo 17/02/2008, 05:34
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años
Puntos: 1
crear grafico con mysql y php

Hola junto con saludarlos necesita una gran ayuda esta es mi primer grafico que inteto hacer, los que e visto como ejemplo se ven faciles ya que te indican una base de datos por ejemplo base de datos zologico tabla animales campo_animal len el insert colocan conejo numero 4......

esta es la base de datos que me entregaron para crear un grafico nesecito sacar los datos segun el codigo de evaluacion que se busca aca entrego la base de datos:

CREATE TABLE `eval_obs` ( `c_evaluacion` varchar(20) collate latin1_general_ci NOT NULL,
`ie1` varchar(4) collate latin1_general_ci NOT NULL, `io1` varchar(100) collate latin1_general_ci NOT NULL, `ie2` varchar(20) collate latin1_general_ci NOT NULL,
`ie3` varchar(20) collate latin1_general_ci NOT NULL, `ie4` varchar(20) collate latin1_general_ci NOT NULL, `ie5` varchar(20) collate latin1_general_ci NOT NULL,
`ie6` varchar(20) collate latin1_general_ci NOT NULL, `ie7` varchar(20) collate latin1_general_ci NOT NULL, `ie8` varchar(20) collate latin1_general_ci NOT NULL,
`ie9` varchar(20) collate latin1_general_ci NOT NULL, `ie10` varchar(20) collate latin1_general_ci NOT NULL, `ie11` varchar(20) collate latin1_general_ci NOT NULL,
`ie12` varchar(20) collate latin1_general_ci NOT NULL, `ie13` varchar(20) collate latin1_general_ci NOT NULL, `ie14` varchar(20) collate latin1_general_ci NOT NULL,
`ie15` varchar(20) collate latin1_general_ci NOT NULL, `ie16` varchar(20) collate latin1_general_ci NOT NULL, `ie17` varchar(20) collate latin1_general_ci NOT NULL,
`ie18` varchar(20) collate latin1_general_ci NOT NULL, `ie19` varchar(20) collate latin1_general_ci NOT NULL, `ie20` varchar(20) collate latin1_general_ci NOT NULL,
`ie21` varchar(20) collate latin1_general_ci NOT NULL, `ie22` varchar(20) collate latin1_general_ci NOT NULL, `ie23` varchar(20) collate latin1_general_ci NOT NULL,
`ie24` varchar(20) collate latin1_general_ci NOT NULL, `ie25` varchar(20) collate latin1_general_ci NOT NULL, `ie26` varchar(20) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`c_evaluacion`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

/*Data for the table `eval_obs` */

insert into `eval_obs`(`c_evaluacion`,`ie1`,`io1`,`ie2`,`ie3`, `ie4`,`ie5`,`ie6`,`ie7`,`ie8`,`ie9`,`ie10`,`ie11`, `ie12`,`ie13`,`ie14`,`ie15`,`ie16`,`ie17`,`ie18`,` ie19`,
`ie20`,`ie21`,`ie22`,`ie23`,`ie24`,`ie25`,`ie26`) values ('123','SI','N/A','NO','SI','SI','SI','SI','SI','SI','N/A','SI','SI','N/A','SI','SI','SI','SI','SI','SI','SI','SI','SI','S I','SI','SI','SI'');

ahi que sacar cuantos SI - NO -N/A hay por cada codigo que se ingresa .
de ahi tomar los numeros y convertirlos en graficos.

bueno yo hice este select

$sql="select id_codigo,obs1,obs2,obs3, COUNT(*) from evalu_obser WHERE id_codigo='1' GROUP BY
id_codigo AND obs1='si' AND obs2='si' AND obs3='si'";
$query=mysql_query($sql) or die ("ERRO al mostrar el select:" .mysql_error());

$datos=mysql_fetch_array($query);

echo"codigo $datos[id_codigo]";

pero como se daran cuenta solo me muestra los que esta en los campo es decir SI -NO -N/A pero no me muestra cuantos hay de ellos, bueno e echo varios select pero me dan los mismos datos .


y no se como sacarlo con php, en realidad no espero que me agan el trabajo pero si que me den una gran ayuda .

de antemano gracias.
  #2 (permalink)  
Antiguo 17/02/2008, 14:41
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años
Puntos: 1
Re: crear grafico con mysql y php

Hola a todos ya encontre como sacar los datos y hacer el grafico aca les dejo lo que hice:

include("db.php");
$total_si="";
$total_no="";
$total_na="";

$sql="select * from eval_obs where c_evaluacion='123'";
$query=mysql_query($sql) or die ("ERRO al mostrar el select:" .mysql_error());

$datos=mysql_fetch_array($query);

if($datos['ie1']=="SI") $total_si++;
if($datos['ie1']=="NO") $total_no++;
if($datos['ie1']=="N/A")$total_na++;

if($datos['ie2']=="SI") $total_si++;
if($datos['ie2']=="NO") $total_no++;
if($datos['ie2']=="N/A")$total_na++;

if($datos['ie3']=="SI") $total_si++;
if($datos['ie3']=="NO") $total_no++;
if($datos['ie3']=="N/A")$total_na++;

if($datos['ie4']=="SI") $total_si++;
if($datos['ie4']=="NO") $total_no++;
if($datos['ie4']=="N/A")$total_na++;

if($datos['ie5']=="SI") $total_si++;
if($datos['ie5']=="NO") $total_no++;
if($datos['ie5']=="N/A")$total_na++;

/* claro aca hay que segir colocando los campos si tienen mas */

/*asi te mostrara cuanto de cada uno hay en la base de datos*/
echo"$total_si ";
echo"$total_no ";
echo"$total_na ";
?>

si lo quieres pasar a un grafico con jpgraph hacen esto :

<?php

include("db.php");
include ("../jpgraph/src/jpgraph.php");
include ("../jpgraph/src/jpgraph_bar.php");

$total_si="";
$total_no="";
$total_na="";

$sql="select * from eval_obs where c_evaluacion='123'";
$query=mysql_query($sql) or die ("ERRO al mostrar el select:" .mysql_error());

$datos=mysql_fetch_array($query);

if($datos['ie1']=="SI") $total_si++;
if($datos['ie1']=="NO") $total_no++;
if($datos['ie1']=="N/A")$total_na++;

if($datos['ie2']=="SI") $total_si++;
if($datos['ie2']=="NO") $total_no++;
if($datos['ie2']=="N/A")$total_na++;

if($datos['ie3']=="SI") $total_si++;
if($datos['ie3']=="NO") $total_no++;
if($datos['ie3']=="N/A")$total_na++;

if($datos['ie4']=="SI") $total_si++;
if($datos['ie4']=="NO") $total_no++;
if($datos['ie4']=="N/A")$total_na++;

/* aca colocan su variable que trae los datos de su base de datos */

$datay=array($total_si,$total_no,$total_na);

// Create the graph. These two calls are always required
$graph = new Graph(300,200,"auto");
$graph->SetScale("textlin");
$graph->yaxis->scale->SetGrace(20);

// Add a drop shadow
$graph->SetShadow();

// Adjust the margin a bit to make more room for titles
$graph->img->SetMargin(40,30,20,40);

// Create a bar pot
$bplot = new BarPlot($datay);

// Adjust fill color
$bplot->SetFillColor('orange');
$bplot->SetShadow();
$bplot->value->Show();
$bplot->value->SetFont(FF_ARIAL,FS_BOLD,10);
$bplot->value->SetAngle(45);
$bplot->value->SetFormat('%0.1f');
$graph->Add($bplot);

// Setup the titles
$graph->title->Set("Grafico de Evaluacion de Observacion");
$graph->xaxis->title->Set("calidad");
$graph->yaxis->title->Set("cantidad");

$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

// Display the graph
$graph->Stroke();
?>
y listo funciona claro que ahi cada uno le da el su toco personalizado ya que es solo un ejemplo y funciona.


de antemano gracias
  #3 (permalink)  
Antiguo 17/02/2008, 14:56
Avatar de Bizo21  
Fecha de Ingreso: abril-2004
Ubicación: Valdivia
Mensajes: 93
Antigüedad: 20 años
Puntos: 1
Re: crear grafico con mysql y php

Este grafico lo saque de este link :

http://www.webintenta.com/crear-graf...s-con-php.html

solo hice una modificacion para que me muestre los datos que me entregaba de la
consulta de mi base de datos

<?
include("db.php");
$total_si="";
$total_no="";
$total_na="";

/************************************************** ****
a una cosa que se me habia olvidado si si tienen varios codigos hay que hacer a cada uno un query, pero si no lo quieren hacer le pueden pasar una variable y asi llamar el codigo de otro lado... pueden hacer un buscar asi pasan la variable del buscar codigo en id_codigo ejemplo:

c_evaluacion='$id_codigo' y este sale de la buscar anterior

************************************************** *****/
$sql="select * from eval_obs where c_evaluacion='123'";
$query=mysql_query($sql) or die ("ERRO al mostrar el select:" .mysql_error());

$datos=mysql_fetch_array($query);

if($datos['ie1']=="SI") $total_si++;
if($datos['ie1']=="NO") $total_no++;
if($datos['ie1']=="N/A")$total_na++;

if($datos['ie2']=="SI") $total_si++;
if($datos['ie2']=="NO") $total_no++;
if($datos['ie2']=="N/A")$total_na++;

if($datos['ie3']=="SI") $total_si++;
if($datos['ie3']=="NO") $total_no++;
if($datos['ie3']=="N/A")$total_na++;

if($datos['ie4']=="SI") $total_si++;
if($datos['ie4']=="NO") $total_no++;
if($datos['ie4']=="N/A")$total_na++;

if($datos['ie5']=="SI") $total_si++;
if($datos['ie5']=="NO") $total_no++;
if($datos['ie5']=="N/A")$total_na++;


/*************************************
aca replaze este codigo por el de abajo

$datosTabla = array(
array( "directas", 160, "#BDDA4C"),
array( "google", 220, "#FF9A68"),
array( "bloglines", 80, "#69ABBF"),
array( "del.icio.us", 10, "#FFDE68"),
array( "yahoo", 35, "#AB6487")
);

******************************************/

$datostabla = array(
array( "Si",$total_si, "#BDDA4C"),
array( "NO", $total_no, "#FF9A68"),
array( "N/A",$total_na, "#69ABBF"),
);
$maximo = 0;
foreach ( $datostabla as $ElemArray ) { $maximo += $ElemArray[1]; }

//echo"SI:$total_si <br>";
//echo"NO:$total_no <br>";
//echo"N/A:$total_na";

?>
<body>
<table width="400" cellspacing="0" cellpadding="2">
<?

foreach( $datostabla as $ElemArray )
{
$porcentaje = round((( $ElemArray[1] / $maximo) * 100),2);
?>
<tr>
<td width="20%">
<strong>

<?
echo( $ElemArray[0] )
?>
</strong>
</td>

<td width="10%">

<?
echo( $porcentaje )
?>

</td>
<td>
<table width="<? echo($porcentaje) ?>%" bgcolor="<? echo($ElemArray[2]) ?>">
<tr><td> </td></tr>
</table>
</td>
</tr>
<? } ?>
</table>
</body>

espero que les sirvan los dos ejemplos que e dejado aca.


De antemano Gracias.
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 17:19.