Как отобразить данные за 12 месяцев (с января по декабрь) из базы данных за год, предоставленный пользователем? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть таблица с именем end_users.Я показываю количество зарегистрированных пользователей за месяц текущего года.Я получаю данные из базы данных и показываю данные с января по декабрь текущего года в форме гистограммы.Например, текущий год - 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>

Iне думаю, что контроллер нужен, но на всякий случай вот мой контроллер

//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

1 Ответ

0 голосов
/ 08 февраля 2019

Попробуйте, добавьте прошлый год в $ 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;
}
...