【问题标题】:How to show 12 months (Jan to Dec) data from database of a year that is given by user?如何显示用户提供的一年数据库中的 12 个月(1 月至 12 月)数据?
【发布时间】: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


【解决方案1】:

试试这个,将过去的年份添加到 $userInput

function registered_user_graph($userInput = "") {
    if(empty($userInput)) {
        $userInput = date("Y");
    }
    //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)= ' . $userInput . ' GROUP BY (DATE_FORMAT(created_at,"%M")) ORDER BY "Month" ASC');

    if($query->num_rows() > 0){
        return $query->result_array();
    }else
        return false;
}

【讨论】:

  • 或者,将查询更新为SELECT (DATE_FORMAT(created_at,"%M")) AS "Month", COUNT(*) AS Number_of_registered_users FROM end_users WHERE year(created_at)= YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR)) GROUP BY (DATE_FORMAT(created_at,"%M")) ORDER BY "Month" ASC
猜你喜欢
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 2013-10-06
相关资源
最近更新 更多