Mysql Query AnyChart JSON Данные отсутствуют даты

Я строю приборную панель с любыми диаграммами.
Я получаю свои данные из базы данных MySQL в формате JSON.
Пример запроса:

SELECT DATE( data_inscricao ) AS name, COUNT( id ) AS value FROM utilizador GROUP BY name

Итак, я получаю подсчет всех зарегистрированных пользователей, сгруппированных по дате регистрации.

Пример результата:

[{name: "2016-01-22",value: "7"}, {name: "2016-01-25", value: "3"}, {name: "2016-01-26", value: "1"}, {name: "2016-01-27", value: "2"}, {name: "2016-02-02", value: "1"}, ...

Я хотел бы показать 0 (ноль) для дат, когда не было никаких регистраций, таких как 2016-01-23, 2016-01-24, 2016-01-28, …

Это возможно?

Спасибо

0

Решение

Во-первых, вам нужно определить минимальное и максимальное значения дат. Затем вы можете генерировать массив с содержанием каждый день в периоде и объединять его со значениями из базы данных. В вашем случае у нас есть 2016-01-222016-02-02 период:

<?php
$begin = new DateTime( '2016-01-22' );
$end = new DateTime( '2016-02-02' );

$allDays = [];
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ( $period as $dt ) {
$allDays[$dt->format('Y-m-d')] = '0';
}
foreach ($array as $key => $dayFromDB) {
$allDays[$dayFromDB->name] = $dayFromDB->value;
}
var_dump($allDays);

Здесь $array это ваш массив БД. после этого вы получите что-то вроде:

array (size=12)
'2016-01-22' => string '7' (length=1)
'2016-01-23' => string '0' (length=1)
'2016-01-24' => string '0' (length=1)
'2016-01-25' => string '3' (length=1)
'2016-01-26' => string '1' (length=1)
'2016-01-27' => string '2' (length=1)
'2016-01-28' => string '0' (length=1)
'2016-01-29' => string '0' (length=1)
'2016-01-30' => string '0' (length=1)
'2016-01-31' => string '0' (length=1)
'2016-02-01' => string '0' (length=1)
'2016-02-02' => string '1' (length=1)

Я надеюсь, что это будет полезно для вас!

0

Другие решения

Других решений пока нет …