假设我有一个带有id,一些测量和DATE列的mysql表。
示例:id,measurements,date_entered
此表存储患者的一些测量结果,以便为他保留记录。 我想创建一个图表,根据数据库中存在的行数,动态地改变X轴。
例如,如果表格中只有7行,我需要用图表表示每天7天的图表。如果超过14天,我希望它在X轴上更改为2周,并且在Y轴上的平均测量值(平均1周和其他平均值)等等,从数周到数月。< / p>
任何人都可以帮我这个吗?在我的情况下,我无法想到会做的事情...... 我使用JPGraph制作折线图,但我没有问题。我的问题是如何处理结果。
我希望你能理解我需要的东西!感谢。
答案 0 :(得分:0)
这样的东西?
// Get the results from the database
$query = "SELECT `data_col` FROM `table` WHERE `condition_col` = 'some value'";
$result = mysql_query($query);
// Get all results into array and count them
$results = array();
for ($i = 0; $row = mysql_fetch_assoc($result); $i++) {
$results[] = $row;
}
// Re-format the data depending on number of results
$data = array();
if ($i < 14) { // Less than 14 days, show per day
foreach ($results as $row) {
$data[] = $row['data_col'];
}
} else if ($i < 56) { // Less than 8 weeks, show per-week
$thisweek = array();
for ($j = 0; isset($results[$j]); $j++) { // Loop the results
$thisweek[] = $results[$j]['data_col']; // Add result to this week total
if ($j % 7 == 0 && $j > 0) { // Every 7 days...
$data[] = array_sum($thisweek) / 7; // ...calculate the week average...
$thisweek = array(); // ...and reset the total
}
}
// If there is an incomplete week, add it to the data
$data[] = array_sum($thisweek) / count($thisweek);
} else { // 8 weeks or more, show per-month
$thismonth = array();
for ($j = 0; isset($results[$j]); $j++) { // Loop the results
$thismonth[] = $results[$j]['data_col']; // Add result to this month total
if ($j % 28 == 0 && $j > 0) { // Every 28 days...
$data[] = array_sum($thismonth) / 28; // ...calculate the month average...
$thismonth = array(); // ...and reset the total
}
}
// If there is an incomplete month, add it to the data
$data[] = array_sum($thismonth) / count($thismonth);
}
// $data now contains an array from which you should be able to draw your
// graph, where array keys are (sort of) x values and array values are y
// values.
显然,此解决方案假定为期28天 - 它不使用日历,只是天数。你可以做一些可怕的事情,包括基于date()
或类似的返回的一些值计算统计数据,但这可能会大大增加计算开销并减慢进程。
希望这会给你一个开始的地方。