Я хочу создать диаграмму, показывающую «пользовательские логины» приложения каждый день в месяце. Далее я хочу показать их в своих диаграммах в зависимости от их группы (платного или бесплатного пользователя).Графики с ежедневными результатами из базы данных
Проблема: Я получаю все эти пользовательские логины из своей базы данных. К сожалению, есть дни, когда никто (может) не вошел в систему, а затем нет логинов на целый день (также возможно, что только свободные пользователи не смогли войти в систему). Это приведет к набору результатов моего SQL-запроса с отсутствующей датой, что приведет к проблемам с моей диаграммой.
Вместо:
2015-06-11: 50
2015-06-12: 0
2015-06-13: 108
Я хотел бы получить:
2015-06-11: 50
2015-06-13: 108
Мой data.php, который делает запросы SQL:
$sql = "SELECT count(distinct(member_id)) as logins, DATE(date_seen) FROM botuser_statistics WHERE subscriber=0 GROUP BY DATE(date_seen)";
$rows = $db->query($sql);
$logins = array();
$logins["type"]["dates"] = array();
$logins["type"]["logins"] = array();
foreach($rows as $row){
$logins["free"]["dates"][] = $row['DATE(date_seen)'];
$logins["free"]["logins"][] = $row['logins'];
}
$sql = "SELECT count(distinct(member_id)) as logins, DATE(date_seen) FROM botuser_statistics WHERE subscriber=1 GROUP BY DATE(date_seen)";
$rows = $db->query($sql);
foreach($rows as $row){
$logins["paid"]["dates"][] = $row['DATE(date_seen)'];
$logins["paid"]["logins"][] = $row['logins'];
}
echo json_encode($logins);
Это мой JavaScript рисунок диаграммы:
jQuery.getJSON("data.php", function (result) {
datesfree = result["free"]["dates"];
loginsfree = result["free"]["logins"];
loginspaid = result["paid"]["logins"];
// Get context with jQuery - using jQuery's .get() method.
var ctx = $("#userlogins").get(0).getContext("2d");
var data = {
labels: datesfree,
datasets: [
{
label: "Free Users",
fillColor: "rgba(220,220,220,0.2)",
strokeColor: "rgba(220,220,220,1)",
pointColor: "rgba(220,220,220,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: loginsfree
},
{
label: "Paid Users",
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(151,187,205,1)",
data: loginspaid
}
]
};
});
Это как мой график выглядит следующим образом:
Обратите внимание на голубую точку (платные пользователи), 12 июня - Он должен быть равен нулю на 12 июня, и он должен быть 20 на 13 июня, но это не так, потому что SQL-запрос даже не вернул эту дату. Как мне это решить?
Haven Я вообще не получил его, как мне нужно изменить свой SQL-запрос, чтобы все даты были там включены? – kentor
Что такое диапазон дат? Это исправлено? Вы знаете это заранее? – nivasan89
Я всегда хочу показать последние 30 дней на этом графике – kentor