如何显示12个月(1至12月)从由用户给出了一年的数据库中的数据?

问题描述 投票:0回答:1

我有一个表叫end_users。我显示每本年度月注册用户数。我从一月的数据库和数据显示的数据提取到当年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);  

帮我出人,好吗?enter image description here

javascript php html codeigniter canvasjs
1个回答
0
投票

试试这个,过去一年增加$用户输入

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.