#php #mysql #mysqli #charts #morris.js
#php #mysql #mysqli #Диаграммы #morris.js
Вопрос:
Я пытаюсь динамически получать данные из таблицы в диаграмме Морриса. Но проблема в том, что он показывает только отдельные данные из таблицы, которая является последними данными.Я подсчитываю данные за месяц. но данные, которые я получаю, — это данные за последний месяц
Вот PHP-скрипт ниже :
<?php
$query = "SELECT tots.*, @var := @var tots.`count`
FROM (
SELECT
YEAR(created_at) AS `year`,
MONTHNAME(created_at) AS `month`,
COUNT(*) AS `count`
FROM users
GROUP BY `year`, `month`
) AS tots, (SELECT @var := 0) AS inc" ;
$result = mysqli_query($conn, $query) ;
while($row = mysqli_fetch_array($result))
{
$chart_data = "{ month:'".$row["month"]."', count:".$row["count"]."}, ";
}
$chart_data = substr($chart_data, 0, -2) ;
?>
И вот мой скрипт Morris JS :
<script>
Morris.Line({
element : 'chart',
data:[<?php echo $chart_data; ?>],
xkey:'month',
ykeys:['count'],
labels:['count'],
hideHover:'auto',
});
</script>
Результат, который я получаю, таков.
что не подходит, я хочу строку ежемесячно:
Комментарии:
1.
$chart_data
всегда указывайте значение только последней строки, вот почему. Объединить ваше значение:$chart_data .= "{ month:'".$row["month"]."', count:".$row["count"]."}, "
2. выполнение этого выдает мне ошибку: Неопределенная переменная: chart_data в C:xampphtdocslinechartindex.php
3. сначала определите свою переменную перед циклом while
$chart_data = "";
4. Ошибка устранена. спасибо за это. но я все еще не могу получить результат на графике
5. Вот обновленный код: $chart_data = «» ; while($row = mysqli_fetch_assoc($result)) { $chart_data .= «{ месяц:'».$строка[«месяц»].»‘, count:».$строка[«количество»].»}, «; } $ chart_data = substr($chart_data, 0, -2) ;
Ответ №1:
Кажется, метка слишком длинная. Вы можете попробовать использовать более короткую метку, например, Jan-19
вместо January 2019
.