@Dealaxer

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

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


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

Понимаю, что легко, но в голову ничего нелезет!
  • Вопрос задан
  • 1253 просмотра
Решения вопроса 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. Либо писать хранимую процедуру, формирующую нужный результат.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы