Я застрял в подключении данных из базы данных mysql к HighCharts
Код highchart.js ниже
<script type="text/javascript"> $(function () { var chart; $(document).ready(function() { chart = new Highcharts.Chart({ chart: { renderTo: 'container5', plotBackgroundColor: null, plotBorderWidth: 2, plotShadow: false }, title: { text: '<p><?php echo $chart5; ?></p>' }, // tooltip: { // pointFormat: '{series.name}: <b>{point.percentage}%</b>', // percentageDecimals: 1 // }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', dataLabels: { enabled: false }, showInLegend: true } }, xAxis: { categories: [<?php echo "'".implode("','",$data)."'"; ?>] }, series: [{ type: 'pie', data: [<?php echo implode(",",$data1); ?>] }] }); }); }); </script>
и мой database.php :
$data = array(); $sql = "SELECT x_axis FROM licence_chart "; $result9 = mysql_query($sql); $data9 = array(); while ($row = mysql_fetch_array($result9)) { $data9 = $row['x_axis']; $data[] = $data9; } $data1 = array(); $sql = "SELECT y_axis FROM licence_chart "; $result10 = mysql_query($sql); $data10 = array(); while ($row = mysql_fetch_array($result10)) { $data10 = $row['y_axis']; $data1[] = $data10; } echo "'".join("','",$data)."'"; echo join(",",$data1);
когда я запускаю этот код в localhost, тогда круговая диаграмма показывает, но в значениях x-axies
не отображаются значения, показанные как Slice
Но значение y-axies
отображается правильно,
в данных таблицы x_axies
, подобных этому в таблице x_axies
, y_axies
являются столбцами
x_axies{crome,opera,ie,firefox,safari} y_axies{0.12,0.23,23.2,56.2,2}
я хочу в файле highchart.js
в data[]
данные будут такими же
['safari',10],
['firefox',1.5],
['ie', 0.5]
так что я делаю неправильно в файле database.php
и highchatr.js
пожалуйста, скажите мне и исправьте мой код.
этот правильный ответ для вышеупомянутого вопроса, я использую это и получаю выше формат
<php $sql = "SELECT x_axis,y_axis FROM licence_chart "; $result9 = mysql_query($sql); $data9 = array(); while ($row = mysql_fetch_array($result9)) { $data9 = "'".$row['x_axis']."'".",".$row['y_axis']; $data[] = $data9; } for($ii=0;$ii<count($data);$ii++) { echo "[".$data[$ii]."]," ; } ?>
Как ошибка говорит: http://www.highcharts.com/errors/14
Highcharts Error # 14 Значение строки, отправленное в series.data, ожидается Число
Это происходит, если вы передаете строку в виде точки данных, например, в такой настройке:
серия: [{данные: ["3", "5", "1", "6"]}]
Highcharts ожидает, что значения данных будут числами. Наиболее распространенная причина этого заключается в том, что данные анализируются из CSV или из источника XML, и разработчик забыл запустить parseFloat для анализируемого значения.
По соображениям производительности внутреннее литье типов не выполняется, и проверяется только первое значение (начиная с 2.3).
Ваша проблема – ваше echo join($data1, "','");
, Значения yAxis не могут быть строкой. И похоже, что вы просто получаете одну гигантскую строку:
'Safari','Opera','Firefox','IE','Chrome','Others10','6','40.5','20','10.6','0.5
Выполняя эту операцию соединения, вы добавляете одинарные кавычки вокруг чисел yAxis. Просто сделайте это:
echo join($data1, ",");
Это должно устранить часть вашей проблемы. Если бы вы прочитали страницу с ошибкой, вы бы увидели это – не стук на вас, но HighCharts имеет отличные отчеты о документации и ошибках.
Чтобы получить это в правильной форме, вам также понадобится сделать отдельные элементы ряда с помощью [name, yValue]. У вас есть только строка из [имя, имя, имя, …., yVal, yVal, yVal ..].
Как разобрать это? До вас действительно. Но почему бы не просто выполнить SELECT '[''' + x_axis + '',' + CONVERT(VARCHAR(10), y_axis) + ']' FROM licence_chart
тогда выполните объединение следующим образом:
echo join($data1, ",");
Это должно дать вам (не уверен в синтаксисе mySQL при выполнении конкатенации строк с номерами, поэтому я оставляю это для вас. Это в MS SQL):
['Safari', 6], ['Opera', 40.5], ['Firefox', 20], ['IE', 10.6], ['Chrome', 0.5], ['Others10', <some number...looks like it got cut off in your question>]
<?php
// Set the JSON header
header("Content-type: text/json");
// Set the JSON header
header("Content-type: text/json");
// The x value is the current JavaScript time, which is the Unix time multiplied by 1000.
$x = time() * 1000;
// The y value is a random number
$y = rand(0, 100);
// Create a PHP array and echo it as JSON
$ret = array($x, $y);
echo json_encode($ret);
?>
это ответ от инструкций установки HIGHCHARTS