Intereting Posts
Как передать массив из Zend Dom Query Results в таблицу Cookie не удалит Как пройти сеанс php с помощью XMLHttpRequest Как добавить дополнительные поля и связанные геттеры / сеттеры из внешнего файла в один или несколько объектов Symfony / Doctrine, без наследования? slim php (объяснение документации «тело запроса») Обновить запись через модель в zend framework Есть ли способ использовать инструкции подготовки wpdb для массива implode ('OR', $ myArray)? Лучший способ создания абсолютного пути в PHP? (См. 3 метода, перечисленных внутри) скачать прикрепления gmail от php Файлы Bootstrap не загружаются должным образом на других страницах codeigniter экспорт использования памяти из базы данных в csv в php Получите результаты запросов MySQL как их собственный тип данных? Проверять размер файла перед загрузкой возможно ли использовать регулярное выражение для поиска внутри массива, используя php Извлечь строку между тегами html в php

преобразовать mysql resultset в объект (имя, данные), который будет загружаться в HighCharts

Я использую график HighCharts Bar для построения данных из набора данных mysql в гистограмме.

Теперь результат моего запроса выглядит следующим образом:

Name Expense ----------------- July 700.0000 August 450.0000 September 1700.0000 

Свойство series HighCharts требует данных в нижнем формате для построения графика

 [ {name:"July",data:[700.0000]}, {name:"August",data:[450.0000]}, {name:"September",data:[1700.0000]} ] 

Поэтому я подумал о том, чтобы скрыть свой набор результатов в объект JSON, используя json_encode($row) . Но я получил следующий результат:

 [{"name":"July","data":"700.0000"}, {"name":"August","data":"450.0000"}, {"name":"September","data":"1700.0000"}] 

Сомнения:

  1. Есть ли способ получить / преобразовать результирующий набор точно в том же формате, который требуется для свойства серии HighCharts?
  2. Также я могу использовать объект, созданный в блоке php, непосредственно в javascript? Скажем, я создаю объект $jsonNameData из моего набора результатов. Тогда я могу использовать его в javascript как

    series: <? echo $jsonNameData ?>

РЕДАКТИРОВАТЬ:

Я смог решить Q1, выполнив следующие действия:

 $count = 0; $strSeries = "["; while($r = mysql_fetch_assoc($result)) { if($count == 0){ $strSeries .= "{name:'" . $r['name'] . "',"; $strSeries .= "data:[" . $r['data'] . ']}'; $count = 1; } else { $strSeries .= ",{name:'" . $r['name'] . "',"; $strSeries .= "data:[" . $r['data'] . ']}'; } $rows[] = $r; } $strSeries .= "]"; 

Получил требуемую строку в $strSeries .

Теперь проблема – второй вопрос. Я присвоил значение $strSeries переменной в javascript, но когда я использую эту переменную как

 series: variableName 

Он не строит график должным образом, даже если переменная имеет правильное значение (проверено с помощью предупреждения).

Solutions Collecting From Web of "преобразовать mysql resultset в объект (имя, данные), который будет загружаться в HighCharts"

Не удалось запустить код ниже, но это должно работать или что-то очень похожее на это

 $series=array(); while($item = mysql_fetch_assoc($result)) { $serie=array( "name" => $item['name'], "data" => array(floatval($item['data'])) ); array_push($series,$serie); } echo json_encode($series); 

Совет должен всегда придерживаться json_encode() для выполнения jsonification. Вы можете просмотреть этот пример на странице справки, чтобы узнать, как работает json_encode с массивами, в частности

EDIT: ответить на ваш второй вопрос. Возможно, вы столкнулись с высокой ошибкой # 14 в консоли javascript? Посмотрите на этот вопрос. Highcharts возвращает ошибку 14

PS Пожалуйста, не смешивайте несколько вопросов в одном, размещайте их отдельно, также используйте инструменты, такие как javascript console и SO search более эффективно

Я бы попробовал это:

 $jsonObj = '['; foreach($mysqlResul as $item){ $jsonObj .= '{"name":"'.$item['name'].'","data":['.$item['data'].']},'; } // strip off last comma $jsonObj = substr(0,strlen($jsonObj)-1,$jsonObj); $jsonObj .= ']'; 
 select concat('{name:"', name, '",data:[', expense, ']}') as foo from bar