【问题标题】:CanvasJS chart with average of database column具有数据库列平均值的 CanvasJS 图表
【发布时间】:2019-12-09 15:08:14
【问题描述】:

这是我的数据库:

我想在柱形图中显示每列的平均值,比如这个例子https://canvasjs.com/javascript-charts/multiple-axis-column-chart/

所以蓝色的PD1和红色的PD2的平均值,蓝色的SVK1,红色的SVK2等等。

我一直在尝试修改这个示例代码:https://canvasjs.com/php-charts/chart-data-from-database/

但我无法让它工作。这是我尝试过的

foreach ($link->query('Select AVG(PD1), AVG(PD2) from table') as $row) {
    $PD1 = $row['AVG(PD1)'];
    $PD2 = $row['AVG(PD2)'];
    array_push($dataPoints,"$PD1","$PD2");
    array_push($dataPoints2, array("y"=> $dataPoints));
};

非常感谢您的帮助!

【问题讨论】:

  • 你不应该foreach查询。您需要获取它,然后遍历获取的结果。
  • @MarkusZeller 恐怕我不太清楚“迭代获取的结果”是什么意思.. :($stmt = $conn->prepare("Select AVG(PD1), AVG(PD2) from table"); $stmt->execute(); $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 我做了这样的事情,然后仍然需要一个 foreach 循环? 我真的迷路了:(
  • 我通常使用prepare()、execute()然后在while循环中获取。我不知道我可以直接“查询”它。感谢那!但我注意到了错误。您可以设置自定义“列”名称并在结果中引用它们。请看下面我的回答。对不起。

标签: php canvasjs


【解决方案1】:

您可以在表达式上赋予自定义标签并将其用作键。

foreach ($link->query('Select AVG(PD1) AS a1, AVG(PD2) AS a2 FROM table') as $row) {
    $PD1 = $row['a1'];
    $PD2 = $row['a2'];
    array_push($dataPoints,"$PD1","$PD2");
    array_push($dataPoints2, array("y"=> $dataPoints));
};

【讨论】:

  • 我已经试过了。它只是显示一个空白页,根本没有图表。当我打印出 $dataPoints2 时,它会显示正确的平均值,因此它与 CanvasJS 的工作方式有关
猜你喜欢
  • 1970-01-01
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 1970-01-01
相关资源
最近更新 更多