Проблемы с получением данных MySQL в Javascript в определенном формате - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь создать диаграмму Ганта Highchart, используя PHP и MySQL. У меня проблема с получением данных из базы данных MySQL. Формат в примере, заданном Хайчартом Ганттом для хранения данных:

 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 Ответ

0 голосов
/ 29 марта 2019

Ваш объект не распознается старшими диаграммами, потому что имена объектов неверны и он не находится в массиве (возможно, вы исправляете часть массива в чем-то, что не показано).

Для данных, которые вы вставили выше, вам нужно получить следующий формат:

[{ 
  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 приведен в APIопределенные объекты: https://api.highcharts.com/gantt/series.gantt.data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...