Я хочу сделать простую гистограмму статистики в моей базе данных. Более конкретно: это семейное древо, и я хочу показать частоту рождений за месяц. Мне удалось создать SQL-запрос, чтобы получить список месяцев с соответствующим числом рождений. Теперь я хочу добавить цветную полосу, где наибольшее число равно 100% ширины, а остальные пропорциональны.
Чтобы рассчитать процент, мне нужно получить наибольшее число из результата запроса. Мне, однако, не нужно отображать это. Мне нужно только число, чтобы использовать его для расчета ширины полосы.
Я пробовал разные решения с MAX (), но все они были настроены на отображение только максимального значения COUNT (). Как уже упоминалось, я хочу отобразить полный результат, и мне нужен только MAX () для расчетов. Мне не нужно отображать его.
Получить номер легко, выполнив запрос SELECT (), упорядочив его по COUNT () и ограничив первым результатом. Поскольку необходимый результат MAX () - это только одно число, я не могу выполнить UNION с другим запросом SELECT, который получает мне числа в месяц.
Вторая проблема заключается в том, что отображаемые результаты упорядочиваются не COUNT (), а по месяцам. Так что в это время число MAX () будет третьим результатом, хотя оно может измениться, когда я добавлю в свою базу данных.
<?php
require_once(ABSPATH . 'wp-settings.php');
$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysqli_select_db($connection, DB_NAME);
$query = "SELECT
MONTHNAME(birthdatetr) AS Month_of_Birth,
MONTH(birthdatetr) AS number_of_month_of_birth,
COUNT(*) AS Total
FROM
tng_people
WHERE
MONTH(birthdatetr) > 0
GROUP BY
number_of_month_of_birth
ORDER BY
number_of_month_of_birth";
$result = mysqli_query($connection, $query);
$barwidth = floor($Total / $birthmax * 100);
?>
<?php foreach ($result as $row){
echo "{$row['Month_of_Birth']} ({$row['Total']})
<td class=\"bar-holder\"><div style=\"width:{$barwidth}%;\" class=\"bar rightround\"></div></td>";
}
?>
Это код, который я должен отобразить в моем списке месяцев. Я назвал max-переменную "birthmax", я просто не знаю, как присвоить ей значение. Значение должно быть наибольшим результатом «Всего».
«Ширина» - это расчетный размер цветной полосы, которую я хочу отобразить. С кодом как есть, поэтому без значения рождения макс. Отображаются столбцы, месяцы и цифры, но столбец имеет полную ширину, что говорит о том, что значение, назначенное полосе пропускания, не является числом (NAN).