Pregunta

Parece que no puedo hacer que esto funcione, necesito mostrar el monto total del pedido por día en la tabla.

Obtuve el gráfico de flash abierto para funcionar mediante el siguiente código:


<?php

// Settings for Database Connection
include_once($root_folder_path . "includes/common.php");
include_once("./admin_common.php");
include_once("./ofc_chart_library/open-flash-chart.php");

$sql = "SELECT * from orders ORDER BY order_placed_date";
   if (!$sql) die('Invalid query: ' . mysql_error());

$result = mysql_query($sql);

$data = array();

while($row = mysql_fetch_array($result))
{
  $data[] = intval($row['order_total']);
}

/*
 *  Create a title object and set the text to present month.
 */
$title = new title( 'Monthly Sales Statistics for ' . date("F Y") . ' (US Dollar)' );
$title->set_style( "{font-size: 18px; font-family: Calibri; color: #808000; text-align: center;}" );

//Make our Bar Chart
$bar = new bar_filled('#f99bd6', '#ee0099');
$bar->set_values($data);

//Create a new Chart object
$chart = new open_flash_chart();

// add the title to the chart:
$chart->set_title( $title );
$chart->set_bg_colour("#FFFFFF");

// Display the bar object on the chart
$chart->add_element($bar);

/*
*  Create a Y Axis object
*/
$y_axis = new y_axis();
$y_axis->set_range(0, 12000, 1000);

// Add the y-axis object to the chart
$chart->add_y_axis($y_axis);

echo $chart->toPrettyString();
?>

Ahora el código anterior que se muestra bien, aquí está la instantánea:
http://static.zooomr.com/images/7749303_49fd833a44_o.jpg

Lo que quiero es mostrar la fecha en el eje X, tomando los valores de la fecha de mi base de datos MySQL.

Así es como las fechas se almacenan en mi base de datos, que es un tipo de fecha y hora:

2008-12-30 00:06:24
2009-02-03 01:57:17
2009-02-03 01:58:27
2009-05-03 01:58:48
2009-06-03 02:00:31
2009-07-03 02:01:47
2009-07-03 02:02:31
2009-07-04 14:21:18
2009-07-04 14:21:36
2009-07-04 14:22:18
2009-07-04 14:23:29
2009-07-04 14:24:24

Intenté el siguiente código para mostrar la fecha en el eje x:


<?php

include_once 'php-ofc-library/open-flash-chart.php';

//Connect to MySQL Database
$con = mysql_connect("localhost", "root", "password");
    if (!$con) die('Could not connect : ' . mysql_error());
$db_selected = mysql_select_db("cart",$con);
    if (!db_selected) die ("Could not find the database: " . mysql_error());

$sql = "SELECT * from orders ORDER BY order_placed_date";
    if (!$sql) die('Invalid query: ' . mysql_error());

$result = mysql_query($sql);

$amountData = array();


while($row = mysql_fetch_array($result))
{
  $amountData[] = intval($row['order_total']); 
}

$chart = new open_flash_chart();
$chart->set_title(new title('Open Flash Chart Downloads'));

//Make Bar Chart
$bar = new bar_filled('#df95c3', '#f34db7');
$bar->set_values($amountData);

//Create a new Chart object
$chart = new open_flash_chart();

/*
 *  Create a title object and set the text to present month.
 */
$title = new title( 'Monthly Sales Statistics for ' . date("F Y") . ' (US Dollar)' );
$title->set_style( "{font-size: 18px; font-family: Calibri; color: #808000; text-align: center;}" );

// add the title to the chart:
$chart->set_title( $title );
$chart->set_bg_colour("#FFFFFF");


// Add the bar object to the chart
$chart->add_element($bar);


//
// create an X Axis object
//
$x_axis = new x_axis();
// grid line and tick every 10
$x_axis->set_range(
    mktime(0, 0, 0, 1, 1, date('Y')),    // <-- min == 1st Jan, this year
    mktime(0, 0, 0, 1, 31, date('Y'))    // <-- max == 31st Jan, this year
    );
// show ticks and grid lines for every day:
$x_axis->set_steps(86400);

$labels = new x_axis_labels();
// tell the labels to render the number as a date:
$labels->text('#date:d#');
// generate labels for every day
$labels->set_steps(86400);
// only display every other label (every other day)
$labels->visible_steps(1);


// finally attach the label definition to the x axis
$x_axis->set_labels($labels);


$y_axis = new y_axis();
$y_axis->set_range(0, 3000, 200);

// Display the Axis on the Chart
$chart->set_x_axis($x_axis);
$chart->add_y_axis($y_axis);

echo $chart->toPrettyString();


?>

Esto es lo que tengo:
http://static.zooomr.com/images/7749325_1c8b37fdf9_o.jpg

Se muestra la cantidad, pero todos hay en una línea en el eje x.

¿Cómo puedo resolver este problema, así que obtenga las fechas de pedido de la base de datos y luego muestrelas en la tabla de acuerdo con la fecha en que se realizó el pedido?

============================================================

A continuación se muestran los datos JSON para ambos totales de pedidos y la fecha en que se colocaron.


<?php

include_once 'php-ofc-library/open-flash-chart.php';

//Connect to MySQL Database
$con = mysql_connect("localhost", "root", "password");
    if (!$con) die('Could not connect : ' . mysql_error());
$db_selected = mysql_select_db("cart",$con);
    if (!db_selected) die ("Could not find the database: " . mysql_error());

$sql = "SELECT * from orders ORDER BY order_placed_date";
    if (!$sql) die('Invalid query: ' . mysql_error());

$result = mysql_query($sql);

$dateData = array();
$TotalAmountData = array();

while($row = mysql_fetch_array($result))
{
  $TotalAmountData [] = intval($row['order_total']);
  $dateData[] = $row['order_placed_date'];

}

print '<pre>';
print_r( $TotalAmountData );
print_r( $dateData );
print '</pre>';[/code]

?>

Esto muestra los siguientes datos de JSON:

Array  // This is the Total Order Amount Per Day
(
    [0] => 2499
    [1] => 199
    [2] => 449
    [3] => 299
    [4] => 359
    [5] => 279
    [6] => 1359
    [7] => 5099
    [8] => 2621
    [9] => 2169
    [10] => 2249
    [11] => 5509
)
Array // This is the DateTime on which the orders where placed
(
    [0] => 2008-12-30 00:06:24
    [1] => 2009-02-03 01:57:17
    [2] => 2009-02-03 01:58:27
    [3] => 2009-05-03 01:58:48
    [4] => 2009-06-03 02:00:31
    [5] => 2009-07-03 02:01:47
    [6] => 2009-07-03 02:02:31
    [7] => 2009-07-04 14:21:18
    [8] => 2009-07-04 14:21:36
    [9] => 2009-07-04 14:22:18
    [10] => 2009-07-04 14:23:29
    [11] => 2009-07-04 14:24:24
)

Intenté seleccionar la fecha eliminando la hora de la fecha:

SELECT DATE_FORMAT(order_placed_date, '%m-%d-%Y'), order_total FROM orders

Pero el código anterior mostró valores vacíos para los datos JSON

Actualización: ¿Alguien puede ayudar?

¿Fue útil?

Solución

¿Son sus valores realmente totales por día? Parece que es el total por pedido, con la fecha del pedido.

El problema con su primer gráfico es que no está cubriendo sus valores a los totales por día: la tabla de flash abierta no lo hará por usted. Podrías hacer esto como parte de tu consulta SQL (por ejemplo, uso FECHA() para convertir el hecho de que las fechas), o con PHP, analizando y reformatando las fechas, y agregando valores juntos para el mismo día. Tenga en cuenta que dependiendo de cómo maneje el eje X, es posible que también necesite agregar 0 entradas durante días sin ningún pedido.

El problema con su segundo gráfico es que está configurando un elemento por segundo, pero sus datos deben ser por día. Lo importante aquí es entender la diferencia entre gráficos de línea y gráficos de dispersión En la tabla de flash abierto. Los gráficos de línea se trazan utilizando una matriz unidimensional de puntos de datos, mientras que los gráficos de dispersión se trazan con coordenadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top