gpt4 book ai didi

php - 从 MySQL 填充 PHP 数组以供 Amcharts 使用

转载 作者:行者123 更新时间:2023-11-29 08:32:43 26 4
gpt4 key购买 nike

我正在尝试为公司内部网网页设置一些简单的 Amcharts 图表。在过去的两周里,我创建了 HTML/JS 并使用 Amcharts 生成了一个漂亮的图形(数据硬编码在 HTML 中用于演示目的)。我还安装了 XAMPP 并创建了一个 MySQL 数据库,其中填充了表格和一些从 csv 文件导入的数据。

到目前为止,一切工作正常 - 我可以显示漂亮的图形,并且可以收集数据以向图表提供数据。然而,我一直在从两端解决这个问题(将源数据放入数据库并在网页上以图表形式呈现数据)。现在我需要连接这两端,这样我就可以向 Amcharts 提供来自 MySQL 的数据。

我知道我需要使用 PHP 从 MySQL 获取数据并将其放入 Amcharts 可以使用的数组中,但我的 PHP 知识非常基础,并且我在编写代码方面遇到了困难。

我拥有的是 PHP 代码,它成功连接到 MySQL 并提取数据以在浏览器中显示 - 可以工作。我只是不知道如何以 Amcharts 绘制图形所需的格式将该数据放入多维数组中。

如果你们能给我一些帮助并填补缺失的部分,那就太好了。我有一些用于创建数组的逻辑的伪代码,作为“真实”php 代码的基础。

这是填充数组的伪代码:

;charset=UTF-8', '', '', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

$stmt = $db->query("SELECT * FROM <mytable> WHERE <mycondition>");

$prevweek = "9999";
$headrowdone = 0;

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if ($prevweek < $row['WeekNumber']) {
// New week so write out Category X Label ('Week') with the week number of the following data rows
chartData.push($DataRow);
$headrowdone = 0;
}
if (!$headrowdone) {
$DataRow = "Week: "+$row['WeekNumber'];
$headrowdone = 1;
}
// Write out the X-Axis Category value and the Y-Axis value
$DataRow = $DataRow+$row['XAxisCategory']+": "+$row['YAxisCategory'];
$prevweek = $row['WeekNumber'];
}
chartData.push($DataRow); ?>

SQL 表如下所示:

CREATE TABLE ( WeekNumber varchar(4), XAxisCategory varchar(50), YAxisValue integer );

and has data like: '1301','A',10 '1301','B',20 '1301','C',24 '1302','A',11 '1302','B',22 '1302','C',27 '1303','A',14 '1303','B',23 '1303','C',28 ...etc

amcharts 的数据数组需要如下所示:

var chartData = [{ Week: "1301", A: 10, B: 20, C: 24 }, { Week: "1302", A: 11, B: 22, C: 27 }, { Week: "1303", A: 14, B: 23, C: 28 ....etc }];

最佳答案

// This is spoofing your fetch via pdo
$rows [] = array('WeekNumber'=>1301, 'A'=>10);
$rows [] = array('WeekNumber'=>1301, 'B'=>20);
$rows [] = array('WeekNumber'=>1301, 'C'=>25);

$rows [] = array('WeekNumber'=>1302, 'A'=>12);
$rows [] = array('WeekNumber'=>1302, 'B'=>22);
$rows [] = array('WeekNumber'=>1302, 'C'=>27);
//var_dump($rows);

// set up some vars
$lastweek = '';
$ctr = 0;
$data = array();


// loop thru the vars, build another array
foreach( $rows as $row){

if($row['WeekNumber'] !== $lastweek){
$ctr++;
$data[$ctr] = array('Week'=>$row['WeekNumber']);
$lastweek= $row['WeekNumber'];
}
// this could be nicer, but for now will do
if( isset($row['A']) ) $data[$ctr]['A'] = $row['A'];
if( isset($row['B']) ) $data[$ctr]['B'] = $row['B'];
if( isset($row['C']) ) $data[$ctr]['C'] = $row['C'];

}

var_dump($data);

然后使用 json_encode() 转换为您想要的格式。

这个答案有点困惑,但至少摆脱了构建字符串来生成 json 的麻烦。

关于php - 从 MySQL 填充 PHP 数组以供 Amcharts 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16117820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com