@Dealaxer

Как Вывести количество записей за текущую неделю по дням с помощью PHP?

Всем привет!
SELECT * FROM TABLE WHERE tc_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) GROUP_BY( DAY('tc_date')


Как разобрать полученный массив данных на PHP и вывести на страницу количество записей из таблицы за каждый день недели? И если допустим на неделе в какой-то день, не было записей, то выводить 0!

Понимаю, что легко, но в голову ничего нелезет!
  • Вопрос задан
  • 1197 просмотров
Решения вопроса 1
@Dealaxer Автор вопроса
Сделал по своему:
$count = query("SELECT * FROM TABLE WHERE YEAR(`DATE`) = YEAR(NOW()) AND WEEK(`DATE`, 1) = WEEK(NOW(), 1)");
		
		$arr = array();
		foreach($count as $cnt) {
			$arr[] = date("w",strtotime(date_create($cnt->DATE)->Format('Y-m-d')));
		}
		
		$days = array_count_values($arr);

И если нет данных за какой-то день, то выводит Нуль!
//И вызываем нужный день, где нам надо
echo (isset($days[1])? $days[1]:'0'); //Понедельник
echo (isset($days[2])? $days[2]:'0'); //Вторник
echo (isset($days[3])? $days[3]:'0'); //Среда
echo (isset($days[4])? $days[4]:'0'); //Четверг
echo (isset($days[5])? $days[5]:'0'); //Пятница
echo (isset($days[6])? $days[6]:'0'); //Суббота
echo (isset($days[7])? $days[7]:'0'); //Воскресенье

Без заморочек, как всегда!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
GROUP BY работает с агрегирующими функциями, поэтому надо что-то типа
$query = 'SELECT tc_date, COUNT(tc_date) as amount FROM .. WHERE .. GROUP_BY tc_date';


ну а дальше на стандартный вывод на php

$items = $sql->execute($query);
foreach($items as $item) {
echo $item['tc_date'] . ' = ' . $item['amount'] . '<br>';
}
Ответ написан
Комментировать
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
SELECT 'tc_date', count(*) as 'count' FROM TABLE WHERE tc_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) GROUP_BY( DAY('tc_date')

Это решение, которое кажется правильным и простым, если бы не
И если допустим на неделе в какой-то день, не было записей, то выводить 0!

Если записей на какое то число нет, то в выборку они не попадут, следовательно не будут сгруппированы и в результате записей с нулём не будет.
Тут я вижу два варианта решения:
1. Держать таблицу со всеми нужными датами и делать к ней LEFT OUTER JOIN нужной таблицы.
2. Либо писать хранимую процедуру, формирующую нужный результат.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект