#javascript #php #html #mysql #highcharts
#javascript #php #HTML #mysql #графики
Вопрос:
Я пытаюсь создать диаграмму Ганта Highchart с использованием PHP и mysql. У меня проблема с извлечением данных из базы данных mysql. Формат в примере, приведенном Highchart Gantt для хранения данных, является:
cars = [{
model: 'Nissan Leaf',
current: 0,
deals: [{
rentedTo: 'Lisa Star',
from: today - 1 * day,
to: today 2 * day
}, {
rentedTo: 'Shane Long',
from: today - 3 * day,
to: today - 2 * day
}, {
rentedTo: 'Jack Coleman',
from: today 5 * day,
to: today 6 * day
}]
}}
Например, это моя таблица:
kategori |sub categori | start_date | end_date
-----------------------------------------------
cat 1 | sub 1 | 2019-03-01 | 2019-03-04
cat 2 | sub 2 | 2019-03-06 | 2019-03-10
Я попробовал следующее, чтобы извлечь данные из таблицы mysql, чтобы получить точный формат, подобный приведенному в примере:
Запрос:
$query = "SELECT `kategori`, `sub_kategori`, `start_date`, `end_date`, FROM `table` ";
Функция:
public function datatable_mini($query)
{
$stmt = $this->db->prepare($query);
$stmt->execute();
if($stmt->rowCount()>0)
{
$y=$stmt->rowCount();
$x=1;
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
$start_date = DateTime::createFromFormat('Y-m-d', $row['start_date']);
$year = $start_date->format('Y');
$month = $start_date->format('m');
$day = $start_date->format('d');
?>
{
<br/>
<span>Kategori: '<?php print($row['kategori']); ?>',</span>
<br/><span>current: 0,</span>
<br/><span>deals: [{</span>
<br/><span>SubKategori: '<?php print($row['sub_kategori']); ?>',</span>
<br/><span>Mulai: Date.UTC(<?php print($year); ?>,<?php print($month); ?>,<?php print($day); ?>),</span>
<br/><span>Selesai: Date.UTC(<?php print(date('Y',strtotime($row['end_date']))); ?>,<?php print(date('m',strtotime($row['end_date']))); ?>,<?php print(date('d',strtotime($row['end_date']))); ?>)</span>
<br/>
}]
<br/>}<?php
if($x<$y){
echo ',';
}
$x=$x 1;
?>
<?php
}
}
else
{
echo "Nothing here...";
}
}
И это в javascript:
cars = [<?php echo $crud->datatable_mini($query); ?>];
Когда я попытался повторить результат, он выдает точно такой же необходимый формат, как в примере:
{
Kategori: 'cat 1',
current: 0,
deals: [{
SubKategori: 'sub 1',
Mulai: Date.UTC(2019,03,01),
Selesai: Date.UTC(2019,03,04)
}]
}
и т.д..
Но график не показан.
Как я могу извлечь данные mysql в javascript с форматом, указанным в примере?
Ответ №1:
Ваш объект не распознается highcharts, потому что имена объектов неверны, и он не находится в массиве (возможно, вы исправили часть массива в чем-то, что не показано, хотя).
Для данных, которые вы вставили выше, вам нужно получить этот формат:
[{
data: [{
name: 'cat 1',
id: 'cat 1'
}, {
name: 'sub 1',
parent: 'cat 1',
start: Date.UTC(2019,03,01),
end: Date.UTC(2019,03,04),
completed: {
amount: 0
}
}]
}],
Рабочий пример JSFiddle: https://jsfiddle.net/ewolden/muj5vx1f/6 /
Обратитесь к API для получения списка всех определенных объектов: https://api.highcharts.com/gantt/series.gantt.data