Highcharts - получать и выводить данные с MySQLi + JSON (шаг за шагом)

0

Я пытаюсь построить простую серию в круговую диаграмму; мои данные поступают из базы данных SQL, и я хочу сохранить запрос Mysqli в отдельном файле (чтобы динамически менять свою серию данных, если нужно). Я попытаюсь описать вас шаг за шагом, что я делаю, прося вас исправить меня, если я что-то сделаю неправильно (я полный новичок в Highcharts и javascript...).

1) MySqli query и json_encode: в PHP файле я использую этот код для извлечения данных и преобразования их в формат JSON:

$query=$mysqli->query("SELECT nickname, count(nickname) as np FROM rating limit 10");
$rows = array();
while($row = mysqli_fetch_assoc($query)) {
$rows[] = $row; }
$rowsjson = json_encode($rows, JSON_NUMERIC_CHECK); 
echo $rowsjson;
// I'm using "numeric_check" option to avoid numbers to be formatted as strings

2) Получение данных из внешнего файла через $.get:

<script src="inc/jquery.js"></script>
<script type="text/javascript">
$.get("test.php", function(ris) {
var result = JSON.parse(ris); 

var valori_array = [];
var nick_array = [];
var dati_array = [];

for (j = 0; j < 10; j++) {
// values_array[j] = parseFloat(result[j].np); 
// first attempt (getting just numeric data): it works
data_array[j] = '["' + result[j].nicktrasf + '", ' + parseFloat(result[j].np) + ']';
// second attempt (getting the whole thing, Nicknames+Numbers array): it doesn't work
}

Многие вопросы по этой части: -Is есть способ, которым я могу напрямую использовать объект JSON, не имея необходимости извлекать одиночные значения через цикл? -Is объект в этом формате [{"nickname":"Name1","np":55},{"nickname":"Name1","np":20}] можно использовать для построения круговой диаграммы, которая нуждается в данных в этом другом формате: [["Name1",55],["Name2",20]]??

3) Построение круговой диаграммы с использованием Highcharts:

$('#container').highcharts({
    title: {text: 'Pie Chart Test'},       
    series: 
    [{ 
    type: 'pie',
    name: "test",
    // data:  values_array // It works, It draws a pie without names 
    // data: [["Name1",55],["Name2",20]]   // Manually, it works
    // data:  result  // It doesn't work, obvoiusly
    // data:  ris  // It doesn't work, obvoiusly
    // data:  [data_array]     // It doesn't work
    data:  data_array  // It doesn't work... why?
    }] });

Где я ошибаюсь? Я думаю, что я почти не использовал все возможности без успеха; массив data_array кажется, находится в правильном формате, когда я его эхо (и если я попытаюсь вручную вырезать и вставить в свой код эхо-сигнал браузера, он работает правильно...). Может, мне нужно преобразовать свой массив в строку или что-то вроде этого? Надеюсь, кто-то может указать мои ошибки и показать мне правильный путь...

  • 0
    Я также попробовал это: var data_test = "[" + data_array + "]"; но это тоже не работает. data_test - строка со структурой EXACT, необходимой для данных круговых диаграмм Highcarts ... Она должна работать ...
  • 0
    Похоже, что вы вставляете stirng с data_array в массив в php. что неверно. Вам нужно иметь массив validate точек / объектов (я имею в виду структуру), который будет проверять json.
Теги:
mysqli
highcharts

1 ответ

0

Объекты и массивы очень тесно связаны с JavaScript, но для Highcharts необходим массив для обработки процесса построения/визуализации

Не могли бы вы показать нам вывод

<?php var_dump($data_array);?> <?php var_dump($data_array);?>?

  • 0
    Ммм ... Нет переменной php $data_array ... Когда я предупреждаю переменную js data_array , вместо этого это результат: ["Name0", 55],["Name1", 50],["Name2", 22] т. Д.
  • 0
    извините, я имел в виду rowjson, но кажется, что просто не хватает внешнего []
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню