Создание нескольких динамических диаграмм с Highcharts из данных MySQL - PullRequest
0 голосов
/ 08 ноября 2019

В настоящее время у меня есть база данных mysql, которая содержит данные об использовании диска для различных имен хостов.

Я очень плохо знаком с PHP и Javascript, поэтому заранее извиняюсь. Пожалуйста, дайте мне знать, если я должен включить дополнительную информацию.

Пример таблицы использования:

+-------+---------------------+-------------+-----------+
| runid | timestamp           | utilization | hostname   |
+-------+---------------------+-------------+-----------+
|    43 | 2018-11-22 01:00:05 |           3 | name1.host|
|    43 | 2018-11-22 01:00:19 |          10 | name2.host|
|    43 | 2018-11-22 01:00:29 |          11 | name3.host|
|    43 | 2018-11-22 01:00:38 |          13 | name4.host|
|    43 | 2018-11-22 01:00:45 |          13 | name5.host|
|    43 | 2018-11-22 01:00:49 |          15 | name6.host|
|    43 | 2018-11-22 01:00:58 |          14 | name7.host|
|    43 | 2018-11-22 01:01:04 |           4 | name8.host|
|    43 | 2018-11-22 01:01:11 |           4 | name9.host|

Для каждого имени хоста с уникальными временными метками существует более 1000 записей.

Также можно изменить имя и количество имен хостов. Поэтому я не смогу просто написать код для указанных имен.

Я хотел бы создать новую таблицу Highchart для каждого имени хоста и соответствующих ему данных.

Я полагаю, что получил свой phpмассив в правильном формате (однако я не уверен, что это правильная практика), но у меня возникают проблемы с использованием массива в Javascript.

Сначала я создал массив, содержащий необходимые имена хостов, связанные с заданным runid(первичный ключ).

Выдержка из кода PHP

<?php
// Get a list of all hostnames for a given runid
$hostnameListSql = "SELECT DISTINCT hostname from diskutilization where runid = $runId;";

$host_name = array();
$data = array();

$hostnameResult = $conn->query($hostnameListSql);

while($row = $hostnameResult->fetch_assoc()) {

extract($row);
$host_name[] = "$hostname";

}

// Iterate through the host_name array and get the associated utilization data for each hostname
foreach($host_name as $hostName) {

   echo "<div id=container_$hostName style='min-width: 400px; height: 500px; margin: 0 auto;'>$hostName</div>";

$dataSql = "SELECT * from diskutilization where runid = $runId and hostname = '$hostName';";

$dataResult = $conn->query($dataSql);

while($row = $dataResult->fetch_assoc()) {

extract($row);

$data[$hostName] = array("timestamp"=>$timestamp, "hostname"=>$hostname, "utilization"=>$utilization);

print_r($data[$hostName]);

}
}
?>

Когда я печатаю массив, он выводит правильные данные внутри каждого тега div (все 1000+ строк).

Вывод структуры массива:

Array ( [timestamp] => 2018-11-22 01:00:05 [hostname] => name1.host [utilization] => 3 )Array ( [timestamp] => 2018-11-22 01:05:05 [hostname] => name1.host [utilization] => 4 )...

Array ( [timestamp] => 2018-11-22 01:05:05 [hostname] => name2.host [utilization] => 3 ) Array ( [timestamp] => 2018-11-22 01:05:05 [hostname] => name2.host [utilization] => 5 )... 

...

Но как только я использую json_encode и перебираю массив $ data в Javascript, он содержит только последнее значение.

Я планирую использовать следующий поток, чтобы помочь сгенерироватьдиаграммы, как только у меня есть данные в правильном формате: Как сделать несколько диаграмм, используя высокие диаграммы в цикле?

Редактировать:

Вот результат var_dump ($ data ['name1.host']);

array(1152) { [0]=> array(3) { ["timestamp"]=> string(19) "2018-11-22 01:00:05" ["hostname"]=> string(9) "name1.host" ["utilization"]=> string(1) "3" } [1]=> array(3) { ["timestamp"]=> string(19) "2018-11-22 01:05:05" ["hostname"]=> string(9) "name1.host" ["utilization"]=> string(1) "3" } [2]=> array(3) { ["timestamp"]=> string(19) "2018-11-22 01:10:05" ["hostname"]=> string(9) "name1.host" ["utilization"]=> string(1) "3" }


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...