Foros del Web » Programando para Internet » PHP »

Ayuda con graficas en PHP

Estas en el tema de Ayuda con graficas en PHP en el foro de PHP en Foros del Web. Tengo que modificar una aplicacion que usa la libreria jpgraph , para crear graficas , crea la grafica segun la fecha que le indique de ...
  #1 (permalink)  
Antiguo 01/06/2006, 09:05
 
Fecha de Ingreso: mayo-2006
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Ayuda con graficas en PHP

Tengo que modificar una aplicacion que usa la libreria jpgraph , para crear graficas ,
crea la grafica segun la fecha que le indique de esta manera:
./grafica/crear_grafica.php?nombre=fiat&contra=DLR&desde=2005/06/10&hasta=2006/06/1

Como hago para que la grafica se cree siempre mostrandome la fecha de los ultimos 10 días??

Saludos
  #2 (permalink)  
Antiguo 01/06/2006, 09:33
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
No puedes hacer esto?

./grafica/crear_grafica.php?nombre=fiat&contra=DLR&desde=200 6/05/21&hasta=2006/06/01

Es decir, pasar las variables desde y hasta con una diferencia de 10 dias, en algún minuto debes construir esa url.
  #3 (permalink)  
Antiguo 01/06/2006, 14:08
 
Fecha de Ingreso: mayo-2006
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Como hago?

Si puedo hacer eso , pero eso me funcionaria para el día de "Hoy" , ya el día de mañana no me lo estaria mostrando. ¿Como puedo hacer que siempre me muestre los 10 ultimos días automaticamente?

Saludos y gracias
  #4 (permalink)  
Antiguo 01/06/2006, 14:40
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Otra opcion es que dentro del codigo de crear_grafica.php coloques que:

$diasdif=10;
$hasta=date("Y/m/d");
$desde=date("Y/m/d",mktime(0,0,0,date("m"),date("d")-$diasdif,date("Y")));

Es decir, ya no es necesario que recibas esos parametros por la url.
  #5 (permalink)  
Antiguo 01/06/2006, 18:45
 
Fecha de Ingreso: mayo-2006
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Unas dudas

Claudio disculpame que te moleste ,tengo unas dudas , en el ejemplo que pongo mas abajo de un crear_grafica.php ¿donde tengo que colocar el codigo que tu me dices en tu post anterior, para que me muestre los ultimos 10 dias?

<?
include ("jpgraph.php");
include ("jpgraph_line.php");
require ("../Connections/servidor.php");

//se reciben por parámetro los valores de: moneda, contra, período de fecha,
// se selecciona eso de la base y se carga con los resultados el array para los valores
$rsConsulta=mysql_query("SELECT DATE_FORMAT(Fecha,'%e.%m.%y') AS Fecha,
Compra, Venta, (Compra+Venta)/2 AS Media
FROM cotizaciones C
WHERE Moneda = '" . str_replace("'", "''", $moneda) . "'
AND Contra = '" . str_replace("'", "''", $contra) . "'
AND Fecha BETWEEN '" . str_replace("'", "''", $desde) . "'
AND '" . str_replace("'", "''", $hasta) . "'
ORDER BY C.Fecha", $miweb)
or DIE(mysql_error());


//Determino cuantas fechas tengo, para mostrar la cantidad adecuada, solamente entran 10
// fechas por gráfica con el tamaño de 550 x 300 elejido.
// Solo recupero la parte entera, si tiene decimles, le sumo 1.
$registros = mysql_num_rows($rsConsulta);
$intervalo = $registros/9;
$cadaX = intval($intervalo);
$tmpcadaX = $intervalo - $cadaX;

if ($tmpcadaX > 0)
$cadaX++;


//Cargo el arreglo con los valores
$i=0;
//La inicializo al valor de cadaX para que se muestre la primera también
$cadaActual=$cadaX;

while($row = mysql_fetch_row($rsConsulta)) {
if ($cadaActual = $cadaX) {
$fechas[$i] =$row[0];
$cadaActual=0;
}
$compras[$i] =$row[1];
$ventas[$i] =$row[2];
$medias[$i] =$row[3];
$i++;
$cadaActual++;
}

//now we expand it
//while(list($compra, $venta) = each($myArray)) {
//echo "$compra : $venta";
//}

//libero los recursos utilizados por el recordset y la base.
mysql_free_result($rsConsulta);
mysql_close($miweb);

$grafoCompra = $compras;
$grafoVenta = $ventas;
$grafoMedia =$medias;

// Create the graph. These two calls are always required
$graph = new Graph(550,300);
$graph->SetScale("textlin");

//habilito el anti-aliasing, para que se dibujen mejor las líneas.
//es un poco mas lento pero el resultado final lo justifica
$graph->img->SetAntiAliasing();

// Increase the margins (left,right,top,bottom)
$graph->img->SetMargin(50,30,30,40);

// Add graph and axis title
$graph->title->Set("Gráfico de cotizaciones");
//$graph->subtitle->Set("miservidor.com");
$graph->xaxis->title->Set("Fecha");
//$graph->yaxis->title->Set("Cotización");
//Pongo el título del eje de las y manualmente ya que sinó se encima con los valores
//$graph->yaxis->title->Pos(0.01,0.5,"centered");
$txt1=new Text("Cotización");
$txt1->Pos(0.02,0.35,"center");
$txt1->SetOrientation("v");
$txt1->SetFont(FF_FONT1,FS_BOLD);
$graph->AddText($txt1);


//Indico que se muestre la leyenda del eje de las X una cada tantas indicada en la variable
$graph->xaxis->SetTextTickInterval($cadaX);

//Le pongo una sombra a toda la gráfica
$graph->SetShadow();

//$graph->SetMarginColor("lemonchiffon2");
$graph->SetMarginColor("lightskyblue2");

//Pongo la fuente para los títulos
//$graph->title->SetFont(FF_VERDANA,FS_BOLD,14);
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->title->SetColor("darkgreen");
//$graph->subtitle->SetFont(FF_VERDANA,FS_ITALIC,7);

//$graph->yaxis->title->SetFont(FF_VERDANA,FS_NORMAL,9);
//$graph->yaxis->SetFont(FF_ARIAL, FS_NORMAL,8);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->SetFont(FF_FONT0,FS_NORMAL);

//$graph->xaxis->title->SetFont(FF_VERDANA);
//$graph->xaxis->SetFont(FF_VERDANA, FS_NORMAL,7);
$graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD);
$graph->xaxis->SetFont(FF_FONT0, FS_NORMAL);

//$graph->legend->SetFont(FF_VERDANA, FS_NORMAL,8);

// Create the linear plot
$lineCompra=new LinePlot($grafoCompra);
$lineVenta=new LinePlot($grafoVenta);
$lineMedia=new LinePlot($grafoMedia);

//Cambio el color y grosor de la línea
//luego pongo el punto de la marca de un tipo, para la intersección de un valor x con un y.
// Si está con antialasing, no le hace caso al setweight.
$lineCompra->SetColor("blue");
$lineCompra->SetWeight(1);
//$lineCompra->mark->SetType(MARK_DIAMOND);

//Para la otra línea tambien
$lineVenta->SetColor("orange");
$lineVenta->SetWeight(2);
//$lineVenta->mark->SetType(MARK_SQUARE);

$lineMedia->SetColor("brown");
$lineMedia->SetWeight(1.5);
//$lineMedia->mark->SetType(MARK_CROSS);

//Se muestran las líneas verticales
$graph->xgrid->Show(true,false);

// adiciono las fechas en el eje de las x, con un ángulo dado
$graph->xaxis->SetTickLabels($fechas);
//$graph->xaxis->SetLabelAngle(60);

//ubico la leyenda
$graph->legend->Pos(0.5,0.90,"center","center");

//Pongo las leyendas de las líneas.
$lineCompra->SetLegend("Compra");
$lineVenta->SetLegend("Venta");
//$lineMedia->SetLegend("Media");


//Controlo que si son muchos registos no se muestran los valores de cada punto
//if ($registros < 20){
//$lineCompra->value->Show();
//$lineVenta->value->Show();
//$lineMedia->value->Show();
//}


//Mensaje de copyrigth
$txt=new Text("Derechos Reservados");
$txt->Pos(0.01,0.93,"centered");
$txt->SetColor("darkgreen");
$txt->SetFont(FF_FONT0);
$graph->AddText($var);


//Evito que se muestre el primer valor de la vertical.
$graph->yaxis->scale->ticks->SupressFirst();

// Add the plot to the graph
//$graph->Add($lineCompra);
//$graph->Add($lineVenta);
$graph->Add($lineMedia);

// Display the graph
$graph->Stroke();
?>


¿Como llamo a la grafica ? si antes era asi:./grafica/crear_grafica.php?nombre=fiat&contra=DLR&desde=200 6/05/21&hasta=2006/06/01

Como seria el link para la grafica para que siempre me muestra los ultimos 10 días?

Saludos y gracias
  #6 (permalink)  
Antiguo 02/06/2006, 09:07
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Bastaría con esto:

./grafica/crear_grafica.php?nombre=fiat&contra=DLR
  #7 (permalink)  
Antiguo 03/06/2006, 07:32
 
Fecha de Ingreso: mayo-2006
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Gracias

Bueno ya logre hacerlo funcionar , muchas gracias por tu tiempo Claudio.

Saludos
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 11:38.