【发布时间】:2019-02-08 04:59:16
【问题描述】:
我有一个名为 end_users 的表。我正在显示当年每月的注册用户数。我从数据库中获取数据并以条形图形式显示当年 1 月至 12 月的数据。例如,当前年份是 2019 年,因此条形图将显示 2019 年每个月有多少用户注册。
我想要做的是根据给定用户的年份输入显示过去一年的数据,而不是只显示当前年份。这个想法是用户将从下拉列表中选择年份并将该年份传递给 sql 查询。
我的模型
public function registered_user_graph(){
//This query fetch number of registered users from jan to dec of current year
$query = $this->db->query('SELECT (DATE_FORMAT(created_at,"%M")) AS "Month", COUNT(*) AS Number_of_registered_users FROM end_users WHERE year(created_at)= year(CURRENT_DATE) GROUP BY (DATE_FORMAT(created_at,"%M")) ORDER BY "Month" ASC');
if($query->num_rows() > 0){
return $query->result_array();
}else
return false;
}
我的看法
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<?php
$userPoints = array();
foreach ($userschart as $key => $value) {
$userPoints[$key]['label'] = $value['Month'];
$userPoints[$key]['y'] = $value['Number_of_registered_users'];
}
?>
<script type="text/javascript">
//for chart and graph
window.onload = function () {
//Chart of monthly registered user data
var charts = new CanvasJS.Chart("user_container", {
animationEnabled: true,
exportEnabled: true,
theme: "light1", // "light1", "light2", "dark1", "dark2"
title:{
text: "Monthly registered Users"
},
data: [{
type: "column", //change type to bar, line, area, pie, etc
//indexLabel: "{y}", //Shows y value on all Data Points
indexLabelFontColor: "#5A5757",
indexLabelPlacement: "outside",
dataPoints: <?php echo json_encode($userPoints, JSON_NUMERIC_CHECK); ?>
}]
});
chart.render();
charts.render();
}
</script>
我认为不需要控制器,但以防万一,这是我的控制器
//Looping monthly registered users data got from model
$userschart = $this->dashboard_model->registered_user_graph();
$monthlyusers = array();
foreach($userschart as $row){
$monthlyusers[] = $row;
}
$this->data['userschart'] = $monthlyusers;
$this->template->admin_render('admin/dashboard/index',$this->data);
【问题讨论】:
-
用输入的日期替换
CURRENT_DATE(使用绑定)。
标签: javascript php html codeigniter canvasjs