Данные для построения графиков.
Всем привет. Хочу вывести графики. Решил использовать highcharts.js. Подключил пример, работает. Только теперь не могу въехать как мне данные передать. Пример здесь http://codepen.io/Ureech/pen/VPPBjp?editors=1010
Сами данные раз в неделю заносятся юзером в инпут, передаются аяксом на сервер, обрабатываются, заносятся в базу и выводятся в таблицу. А вот как их в эту data:[] передать? |
Дошёл до следующего.
Из php в html передаю переменую, полученную из массива
$list = Array ( [0] => 145.00 [1] => 115.00 [2] => 140.00 [3] => 0.00 [4] => 0.00 [5] => 0.00 [6] => 0.00 [7] => 0.00 [8] => 0.00 [9] => 0.00 )
$list = implode(',',$list);
Теперь в переменной у меня строка. Подставляю в
var dat = '{$list}';
....
series: [{
name: 'Dev #1',
data: [datа]
...
Не работает. Смотрю в консоли, в data только имя,значения нет. |
var dat = '{$list}'; - и нахрена тут вообще кавычки при том одинарные, в которых РНР не обрабатывает наличие своих переменных, да и к тому же к этой строке РНР не имеет отношения?
а тут data: [datа] |
var dat = '{$list}'; Не суть. Главное здесь строка. (это смарти)
Цитата:
|
Если смарти и опечатка, то в коде страницы должно быть data: [145.00,115.00,140.00,...], кстати можно и без var dat, а сразу вставить сюда data: [{$list}], без кавычек конечно.
Проверяйте что отдает интерпретатор в шаблон. |
В том то и дело, что в коде страницы не значение, а имя переменой.
console.log(dat) Строка 145.00,115.00,140.00,0.00,0.00,0.00,0.00,0.00,0.00 ,0.00 console.log(dat.split(',')) Array [ "145.00", "0.00", "0.00", "0.00", "0.00", "0.00", "0.00", "0.00", "0.00", "0.00" ] Прописываю в data: саму строку всё работает, подставляю переменую,нет |
Вот в доках тоже самое вроде
http://www.highcharts.com/docs/worki...rom-a-database |
Попробуйте так:
$list = json_encode($list); и data: {$list} |
var dat = "145.00,115.00,140.00,0.00,0.00,0.00,0.00,0.00,0.00 ,0.00 ";
var obj = { };
obj.data = dat.split(",");
alert(obj.data[1]);
|
Я не понимаю, что мне с этим делать? Это похоже тоже что и
data:dat.split(',')
console.log(obj.data)
Array [ "145.00", "0.00", "0.00", "0.00", "0.00", "0.00", "0.00", "0.00", "0.00", "0.00" ]
|
Цитата:
|
ureech,
А это не то, что тебе нужно? data у тебя - это что? Например
var chart1; // globally available
$(function() {
chart1 = Highcharts.stockChart('container', {
rangeSelector: {
selected: 1
},
series: [{
name: 'USD to EUR',
data: usdtoeur // predefined JavaScript array
}]
});
});
|
laimas,
Цитата:
|
Так я пробовал, но не смог заставить работать. Ошибка,
TypeError: Highcharts.stockChart is not a function |
Чем это
var a = '1,2,3'; var b = []; b = [a]; отличается от этого var b = [1,2,3]; |
ureech,
Ваш пример:
var chart1, chart2;
// Once DOM (document) is finished loading
$(document).ready(function() {
// First chart initialization
chart1 = new Highcharts.Chart({
chart: {
renderTo: 'chart_1',
type: 'line',
height: 350,
},
title: {
text: 'Изменение размеров шеи,талии и бёдер за 10 недель в %'
},
xAxis: {
categories: [1,2,3,4,5,6,7,8,9,10]
},
yAxis: {
title: {
text: 'Interviewed'
}
},
series: [{
name: 'Талия',
data: [5, 10, 20, 22, 25, 28, 30, 40, 80, 90]
}, {
name: 'Бёдра',
data: [15, 15, 18, 40, 30, 25, 60, 60, 80, 70]
}, {
name: 'Шея',
data: [1, 3, 6, 0, 50, 25, 50, 60, 30, 100]
}]
});
То же самое с данными из строки:
var chart1, chart2;
var legs = "15, 15, 18, 40, 30, 25, 60, 60, 80, 70";
// Once DOM (document) is finished loading
$(document).ready(function() {
// First chart initialization
chart1 = new Highcharts.Chart({
chart: {
renderTo: 'chart_1',
type: 'line',
height: 350,
},
title: {
text: 'Изменение размеров шеи,талии и бёдер за 10 недель в %'
},
xAxis: {
categories: [1,2,3,4,5,6,7,8,9,10]
},
yAxis: {
title: {
text: 'Interviewed'
}
},
series: [{
name: 'Талия',
data: [5, 10, 20, 22, 25, 28, 30, 40, 80, 90]
}, {
name: 'Бёдра',
data: legs.split(",")
}, {
name: 'Шея',
data: [1, 3, 6, 0, 50, 25, 50, 60, 30, 100]
}]
});
|
Цитата:
var a = '1,2,3'; var b = []; b = [a]; alert(b.length); alert(b[0]); |
У меня так же. Не работает.
|
Цитата:
|
Цитата:
|
Я скопировал ваш код в песочницу и проверил. Средний график отсутствует.
http://codepen.io/Ureech/pen/VPPJpb |
Действительно, что-то никак не хочет
<div class="col-xs-12 col-xl-6">
<div id="chart_1" class="chart"></div>
</div>
<div class="col-xs-12 col-xl-6">
<div id="chart_2" class="chart"></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="http://dieta.ewbolg.ru/templates/_default_/js/highcharts.js"></script>
<script>
var chart1, chart2;
// Once DOM (document) is finished loading
$(document).ready(function() {
var leg = "15,15,18,40,30,25,60,60,80,70";
var legs = leg.split(",");
alert(legs.length);
// First chart initialization
chart1 = new Highcharts.Chart({
chart: {
renderTo: 'chart_1',
type: 'line',
height: 350,
},
title: {
text: 'Изменение размеров шеи,талии и бёдер за 10 недель в %'
},
xAxis: {
categories: [1,2,3,4,5,6,7,8,9,10]
},
yAxis: {
title: {
text: 'Interviewed'
}
},
series: [{
name: 'Талия',
data: [5, 10, 20, 22, 25, 28, 30, 40, 80, 90]
}, {
name: 'Бёдра',
data: legs
}, {
name: 'Шея',
data: [1, 3, 6, 0, 50, 25, 50, 60, 30, 100]
}]
});
})
</script>
причем с var legs = [15,15,18,40,30,25,60,60,80,70];работает |
Возможно нужно подставлять массив
Array [ "145.00","0.00","0.00","0.00","0.00","0.00","0 .00" ], но убрать кавычки. |
Вопрос решил.Всем большое спасибо.
var leg = "15,15,18,40,30,25,60,60,80,70";
var legs = leg.split(",");
for(var i=0; i<legs.length; i++) {
legs[i] = +legs[i];
}
|
Блин, теперь застрял на получении нескольких строк. Раннее в запросе к базе был один параметр
SELECT hip... Теперь два
SELECT hip,neck...
........
while ($data = $inDB->fetch_assoc($result)) {
$list['hip'] = $data['hip'];
$list['neck'] = $data['neck'];
}
echo json_encode($list);
Пытаюсь получить на выходе, в аяксе две строки и никак. Пробую уже с помощью json хоть что то получить
$.ajax({
url:'/dieta/admin/full-report.html',
data:{grf: '1',ot:ot,to:to},
dataType:'json',
success : function (data) {
for(var i=0; i<data.length; i++) {
var res1 = (data.hip[i]);
var res2 = (data.neck[i]);
}
})
Ничего не выходит. {"hip":"0.00","neck":"0.00"},те последнии значения и ошибка TypeError: data is undefined Подскажите как решить.Уже устал тыкаться. |
С этим вроде разобрался. Имею в data
[{"hip":"140","neck":"58"},{"hip":"145","neck":"55"}]
success : function (data) {
var res1 = [];
for(var i=0; i<data.length; i++) {
res1 += data[i].hip;
}
console.log(hip) //140145
}
Но при hip.split(',') не хочет разделять числа запятой.Упорно выводит array["140145"] Почему? |
Зачем отдавать клиенту ассоциативный массив, если ему требуется индексный?
|
| Часовой пояс GMT +3, время: 21:10. |