Как обновить график, запросив базу данных?

Я пытаюсь построить график, показывающий количество людей, выданных с пропуском за последние 07 дней.

Я использую PHP в бэкенде с phpMyAdmin's MySQL DBServer. Для построения графика я использую chart.js (я открыт для предложений различных библиотек для подходящего решения, так как случайно наткнулся на это)

PHP-код для создания результирующего набора данных для использования в chart.js JS-коде выглядит следующим образом:

<?php
    $servername = "localhost";
    $username = "xyz";
    $password = "xyz";
    $dbname = "xyz";
    try 
    {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $conn->prepare("SELECT inDate, COUNT(insertionId) AS occurrence FROM guestvisitorpassdetails GROUP BY inDate"); 
        $stmt->execute();
        $json_inDate = [];
        $json_occurrence = [];
        while($row = $stmt->fetch(PDO::FETCH_ASSOC))
        {
            extract($row);
            $json_inDate = $inDate;
            $json_occurrence = (int)$occurrence;
        }
        echo json_encode($json_inDate);
        echo json_encode($json_occurrence);
    }
    catch(PDOException $e) {
        echo "Error: " . $e->getMessage();
    }
    $conn = null; 
?>

Ниже показан элемент, используемый для построения графика.

<canvas class = "my-4 w-100 chartjs-render-monitor" id = "myChart" width = "1271" height = "536" style = "display: block; width: 1271px; height: 536px;"></canvas>

Ниже приведен необходимый скрипт chart.js для построения графика.

<script>
    (function () {
        'use strict'
        feather.replace()
        var ctx = document.getElementById('myChart')
        var myChart = new Chart(ctx, {
            type: 'line',
            data: {
                labels: <?php echo json_encode($json_inDate); ?>,
                datasets: [{
                    data: <?php echo json_encode($json_occurrence); ?>,
                    lineTension: 0,
                    backgroundColor: 'transparent',
                    borderColor: '#007bff',
                    borderWidth: 4,
                    pointBackgroundColor: '#007bff'
                }]
            },
            options: {
                scales: {
                    yAxes: [{
                        ticks: {
                            beginAtZero: false
                        }
                    }]
                },
                legend: {
                    display: false
                }
            }
        })
    }())
</script>

Хотя график хорошо отображается со статическими данными, если я попытаюсь обновить его динамически при каждой загрузке страницы, запросив базу данных и обновив значения графика, это не сработает. Я был бы рад, если бы кто-то мог помочь мне с этим.

Спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отвечая на мой собственный вопрос, поскольку я нашел решение для него в последнее время.

В цикле while произошла незначительная ошибка, о которой говорится ниже.

while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
    extract($row);
    $json_inDate = $inDate;
    $json_occurrence = (int)$occurrence;
}

Значения из считываемой базы данных должны храниться в $json_inDate[] и $json_occurrence[], а НЕ в $json_inDate и $json_occurrence. Очень незначительная ошибка, сделанная в гуще времени. Код отлично работает с этими поправками.

С уважением и благодарностью.

Итак, вы тот, кто ответил, удалил свой ответ и также проголосовал за мой вопрос. Я разместил этот комментарий к моему вопросу только для вас.

Shubham Mehta 20.07.2019 14:00

Я не голосовал против ..! Вы не видели, поэтому я удалил свой и... я не знаю, почему вы не видели

Shivendra Singh 20.07.2019 14:07

Сэр, как я уже упоминал в своем комментарии, я работаю в сети с воздушным зазором. Я разместил вопрос, а затем был ... развернут где-то. Я не мог видеть твой ответ. Когда я вернулся в сеть, я получил уведомление о вашем ответе, но когда я пришел сюда, чтобы увидеть его, его не было. Вопросу 5 дней, моему ответу 2 дня, что снова соответствует моему времени развертывания и почему вы «подождите 2 дня», а я до сих пор не увидел ответа. В любом случае, я удалю свой ответ и внесу свой вклад. Спасибо за помощь :)

Shubham Mehta 20.07.2019 18:25

Пожалуйста, подтвердите комментарий, чтобы вы также знали мою сторону истории, и у нас не было никаких плохих чувств между ними. Напишите, что я удалю свой ответ и отмечу ваш как правильный.

Shubham Mehta 20.07.2019 18:28

Давайте продолжить обсуждение в чате.

Shivendra Singh 20.07.2019 18:54

Другие вопросы по теме