谁能帮我看看 PHP 图表吗?
我正在尝试显示当月每天的订单总额。
$sql = "SELECT date(order_placed_date),
COUNT(order_id),
SUM(order_total) AS order_total
FROM orders
WHERE order_placed_date>=date_sub(current_date, INTERVAL 31 DAY)
GROUP BY date(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 an X Axis object
$x = new x_axis();
// grid line and tick every 10
$x->set_range(
mktime(0, 0, 0, 7, 1, date('Y')), // <-- min == 1st Jan, this year
mktime(0, 0, 0, 7, 31, date('Y')) // <-- max == 31st Jan, this year
);
// show ticks and grid lines for every day:
$x->set_steps(86400);
$labels = new x_axis_labels();
// tell the labels to render the number as a date:
$labels->text('#date:j #');
// 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->set_labels($labels);
//Create a Y Axis object
$y_axis = new y_axis();
$y_axis->set_range(1, 15000, 1000);
//Add the y-axis object to the chart
$chart->add_y_axis($y_axis);
$chart->set_x_axis( $x );
echo $chart->toPrettyString();
?>
这就是我得到的:
谁能告诉我问题出在哪里以及如何纠正?
这是 print_r($data)
输出:
这是 print_r($data)
的输出
Array
(
[0] => 7721
[1] => 2169
[2] => 2249
[3] => 5509
[4] => 8729
[5] => 5899
[6] => 1793
[7] => 11307
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
[21] => 0
[22] => 0
[23] => 0
[24] => 0
[25] => 0
[26] => 0
[27] => 0
[28] => 0
[29] => 0
[30] => 0
)
我更改了 while 循环:
for( $i=1; $i<32; $i++ )
{
$row = mysql_fetch_array($result);
$data[] = intval($row['order_total']);
}
这是使用上面的 for 时更新的图表环形: 替代文本 http://static.zooomr.com/images/7807811_1b3c7c7274_o.png
I am trying to display Total Order Amount Per Day in the Present Month.
$sql = "SELECT date(order_placed_date),
COUNT(order_id),
SUM(order_total) AS order_total
FROM orders
WHERE order_placed_date>=date_sub(current_date, INTERVAL 31 DAY)
GROUP BY date(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 an X Axis object
$x = new x_axis();
// grid line and tick every 10
$x->set_range(
mktime(0, 0, 0, 7, 1, date('Y')), // <-- min == 1st Jan, this year
mktime(0, 0, 0, 7, 31, date('Y')) // <-- max == 31st Jan, this year
);
// show ticks and grid lines for every day:
$x->set_steps(86400);
$labels = new x_axis_labels();
// tell the labels to render the number as a date:
$labels->text('#date:j #');
// 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->set_labels($labels);
//Create a Y Axis object
$y_axis = new y_axis();
$y_axis->set_range(1, 15000, 1000);
//Add the y-axis object to the chart
$chart->add_y_axis($y_axis);
$chart->set_x_axis( $x );
echo $chart->toPrettyString();
?>
This is what i am getting:
Can anyone tell me where is the problem and how to correct it ?
Here is the print_r($data)
Output:
Here is the output from print_r($data)
Array
(
[0] => 7721
[1] => 2169
[2] => 2249
[3] => 5509
[4] => 8729
[5] => 5899
[6] => 1793
[7] => 11307
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
[21] => 0
[22] => 0
[23] => 0
[24] => 0
[25] => 0
[26] => 0
[27] => 0
[28] => 0
[29] => 0
[30] => 0
)
I changed the while loop :
for( $i=1; $i<32; $i++ )
{
$row = mysql_fetch_array($result);
$data[] = intval($row['order_total']);
}
Here is the updated Chart when using the above for loop:
alt text http://static.zooomr.com/images/7807811_1b3c7c7274_o.png
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题是,就像我所说的另一个线程,你有 31 个数据元素(每天一个),但是这段代码在这 31 天中每 2,678,400 秒创建一个 x 轴元素:
如果你删除这些行,你会好很多。
然后,您需要为 x 轴元素提供一个标签数组,并使用
$x->set_labels_from_array($array_of_labels);
设置它。 .co.uk/open-flash-chart-2/x-axis-labels.php" rel="nofollow noreferrer">此处的操作示例。
The problem is, like I said in the other thread, that you've got 31 elements of data (one per day), but this code is creating one x-axis element for every 2,678,400 seconds of those 31 days:
If you get rid of those lines you'll be it'll work a lot better.
You then need to provide an array of labels for the x-axis elements, and set it using
$x->set_labels_from_array($array_of_labels);
There's an example of how to do that here.