У меня есть задача сделать статистику статей на основе результатов базы данных.Мне нужно рассчитывать количество статей, добавляемых ежемесячно, и передавать эти результаты в функцию статистики JavaScript.
Первое, что я делаю, - это нахожу весь период, в который были добавлены статьи:
SELECT MIN(date) as startdate FROM articles LIMIT 1
SELECT MAX(date) as enddate FROM articles LIMIT 1
Теперь у меня есть период, который начинается с $startDate
и заканчивается $endDate
.Эти переменные являются временными метками Unix, поскольку они находятся в базе данных.Столбец date
в базе данных также является меткой времени Unix.
Далее я должен найти количество статей, добавленных за каждый месяц, которые выполняют запрос в цикле foreach, например:
SELECT COUNT(id) as total FROM articles
WHERE date > ".$startMonth." AND date < ".$endMonth
Но для этого мне нужно найти первые и последние дни каждого месяца в периоде.И я застрял в этот момент.Поэтому, пожалуйста, вы можете предложить мне, как найти эти первые и последние дни в виде массива.Я думаю, что я должен сделать что-то вроде strtotime("+1 month",$date)
в цикле while, пока $startDate
не будет равен $endDate
.Заранее спасибо.
Upd. Всего в базе 46 статей.Я хочу получить результаты, сгруппированные по месяцам:
SELECT date, COUNT(id) as total FROM `articles`
WHERE `author`=$author
GROUP BY date_format(date, '%Y-%m')
Результаты: сообщения за месяц 11-2010 13 12-2010 33