Como exibir o montante total da ordem por dia em um gráfico

Eu não consigo entender isso funcionando, eu preciso exibir o valor total da ordem por dia no gráfico.

Obtive o gráfico do Open Flash para funcionar pelo seguinte código:


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(); ?> 

Agora, o código acima exibido está bem, aqui está o instantâneo:
http://img.bestphpide.com/php/

O que eu quero é exibir a Data no X-Axis, levando os valores da data do meu database MySQL.

Veja como as datas são armazenadas no meu database, que é um tipo DateTime:

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

Eu tentei o seguinte código para exibir a Data no X-Axis:


 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("FY") . ' (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')) // 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(); ?> 

Aqui está o que eu tenho:
http://img.bestphpide.com/php/

A quantidade está sendo mostrada, mas há tudo em uma linha no 0 eixo dos x.

Como posso resolver esse problema, então pegue as Datas da Ordem no Banco de Dados e depois as exiba no Gráfico de acordo com a data em que o pedido foi feito.

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

Abaixo estão os dados JSON tanto para o total de pedidos quanto para a data em que foram colocados.


 <?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 '
'; print_r( $TotalAmountData ); print_r( $dateData ); print '

';[/code] ?>


Isso mostra os seguintes dados 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 ) 

Tentei selecionar a data removendo o tempo da data:

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

Mas o código acima mostrou valores vazios para dados JSON

Atualização: Alguém pode ajudar?

Seus valores são realmente totais por dia? Parece que é o total por pedido, com a data da ordem.

O problema com seu primeiro gráfico é que você não está depositando seus valores em totais por dia. O Open Flash Chart não fará isso por você. Você pode fazer isso como parte de sua consulta SQL (por exemplo, usar DATE () para converter as datastimes para datas), ou com o PHP, analisando e reformatando as datas e adicionando valores para o mesmo dia. Observe que, dependendo de como você lida com o eixo x, você também precisa adicionar 0 inputs por dias sem pedidos.

O problema com seu segundo gráfico é que você está configurando um elemento por segundo, mas seus dados devem ser por dia. O importante aqui é entender a diferença entre charts de linhas e charts de dispersão no Open Flash Chart. Os charts de linhas são plotados usando uma matriz unidimensional de pontos de dados, enquanto os charts de dispersão são plotados com coordenadas.