У меня есть код, который, кажется, близок к работе. Вроде находит данные и группирует по дням, но метки по дням недели неверные.
У меня есть данные за понедельник, вторник, четверг и пятницу за текущий месяц. Выходные данные помечают их как воскресенье, понедельник, вторник, среду.
Так что на самом деле я думаю, что могут быть две проблемы: метки и не учет дней, по которым нет данных, поскольку выход не имеет перерыва в днях.
* Gets the first weekday of that month and year
*
* @param int The day of the week (0 = sunday, 1 = monday ... , 6 = saturday)
* @param int The month (if false use the current month)
* @param int The year (if false use the current year)
*
* @return int The timestamp of the first day of that month
*
**/
function get_first_day($day_number=1, $month=false, $year=false)
{
$month = ($month === false) ? strftime("%m"): $month;
$year = ($year === false) ? strftime("%Y"): $year;
$first_day = 1 + ((7+$day_number - strftime("%w", mktime(0,0,0,$month, 1, $year)))%7);
return mktime(0,0,0,$month, $first_day, $year);
}
// Bar Plot Guest by weekday/month
$data_wk = array();
$label_wk = array();
$statistic = querySQL('statistic_weekday');
foreach ($statistic as $key => $value) {
foreach($value as $paxsum){
$label_wk[] = $key;
$data_wk[] = $paxsum;
}
}
<?php
foreach ($label_wk as $value) {
echo "<th>".strftime("%A", get_first_day($value, $_SESSION['statistic_month'], $_SESSION['selectedDate_year']))."</th>";
}
?>
Я нашел эти два похожих сообщения и код, но не решил свою проблему. Я попробовал решение второго сообщения об изменении значения $first_day =, но все равно не правильно. Я могу заставить меня начать в другой день, но, поскольку он игнорирует пустые дни, только некоторые из меток верны.
Первая суббота выбранного месяца и года
.mktime и .strftime помогают вернуть неправильный день недели
Если полезно, вот мой: запрос:
case 'statistic_weekday':
$result = query("SELECT SUM(reservation_pax) AS paxsum FROM `$dbTables->reservations`
WHERE `reservation_wait`= '0' AND `reservation_hidden`= '0'
AND `reservation_outlet_id`='%d'
AND MONTH(reservation_date) = '%s'
AND YEAR(reservation_date) = '%s'
GROUP BY WEEKDAY(reservation_date)",
$_SESSION['outletID'], $_SESSION['statistic_month'], $_SESSION['selectedDate_year']);
return getRowList($result);