2017-09-08 6 views
0

Je construis un tableau de bord avec anycharts. Je reçois mes données de la base de données mysql au format JSON. Exemple d'une requête:Mysql Query AnyChart Données JSON manquantes

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

Alors, je deviens un compte de tous les utilisateurs enregistrés et regroupés par date d'inscription.

Exemple de résultat:

[{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"}, ... 

I'il aiment montrer 0 (zéro) pour les dates où il n'y avait pas d'inscriptions, comme 23/01/2016, 24/01/2016, 2016-01 -28, ...

Est-ce possible?

Merci

Répondre

0

Premièrement, vous devez définir des valeurs min et max de dates. Ensuite, vous pouvez générer un tableau contenant chaque jour en période et le fusionner avec les valeurs de la base de données. Dans votre cas, nous avons 2016-01-22 - période 2016-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); 

Ici, le $array est votre tableau de DB. après cela, vous obtiendrez quelque chose comme:

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) 

J'espère que cela vous sera utile!

+1

Merci Denniselite! C'est une solution parfaite et très simple. J'avais peur que les gens commencent à indiquer les tables de calendrier :) – mjpramos