Как сделать круговую диаграмму в поле базы данных? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть 3 категории в этом поле таблицы, категории «еще нет, в настоящее время сделано».

enter image description here

Я хочу сделатькруговая диаграмма.

Это моя модель:

public function select_by_status() {
        $sql = "SELECT COUNT(status_laporan) AS jml FROM tp4d GROUP BY status_laporan ORDER BY jml";

        $data = $this->db->query($sql);

        return $data->row();
    }

это мой контроллер для отображения на круговой диаграмме,

//untuk statistik laporan
        $laporan                = $this->M_laporan->select_all();
        $index = 0;
        foreach ($laporan as $value) {
            $color = '#' .$rand[rand(0,15)] .$rand[rand(0,15)] .$rand[rand(0,15)] .$rand[rand(0,15)] .$rand[rand(0,15)] .$rand[rand(0,15)];

            $laporan_status = $this->M_laporan->select_by_status();

            $data_laporan[$index]['value'] = $laporan_status->jml;
            $data_laporan[$index]['color'] = $color;
            $data_laporan[$index]['highlight'] = $color;
            $data_laporan[$index]['label'] = $value->status_laporan;

            $index++;
        }
$data['data_laporan'] = json_encode($data_laporan);

Это мой взгляд:

<div class="col-lg-6 col-xs-12">
    <div class="box box-primary">
      <div class="box-header with-border">
        <i class="fa fa-briefcase"></i>
        <h3 class="box-title">Statistik <small>Data Status Laporan</small></h3>

        <div class="box-tools pull-right">
          <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i>
          </button>
          <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
        </div>
      </div>
      <div class="box-body">
        <canvas id="data-laporan" style="height:250px"></canvas>
      </div>
    </div>
  </div>
</div>

и это мой сценарий для круговой диаграммы:

var pieChartCanvas = $("#data-laporan").get(0).getContext("2d");
  var pieChart = new Chart(pieChartCanvas);
  var PieData = <?php echo $data_laporan; ?>;

  var pieOptions = {
    segmentShowStroke: true,
    segmentStrokeColor: "#fff",
    segmentStrokeWidth: 2,
    percentageInnerCutout: 50,
    animationSteps: 100,
    animationEasing: "easeOutBounce",
    animateRotate: true,
    animateScale: false,
    responsive: true,
    maintainAspectRatio: true,
    legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
  };

  pieChart.Doughnut(PieData, pieOptions);

Проблема в том, что в каждой отображаемой части диаграммы все содержимое одинаковое, в моей базе данныхимеет статус 2 записи при завершении 1 записи, но на круговой диаграмме это выглядит так же, все так:

enter image description here

enter image description here

Как статистика может совпадать с данными в базе данных?

1 Ответ

0 голосов
/ 18 июня 2019

Я думаю, что данные должны быть объектом в формате JSON.

Вы можете закодировать объект в JSON, используя json_encode($your_object), а затем передать его в JavaScript.

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