Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2020, 09:00   #1
AvegaSan
Новичок
Джуниор
 
Регистрация: 13.02.2020
Сообщений: 1
Вопрос Статейный сайт: ТОП недели: алгоритм

Коллеги, доброе утро!!

Есть статейный сайт, движок самописный. Хочется сделать блок с выводом наиболее читаемых статей в течении последних 7 дней.

Что приходит на ум?

Первое, это сделать таблицу с полями id, date, count. Тогда при загрузке статьи ищем строку по id-date, если находим, увеличиваем count, если не находим, добавляем строку id-date и count=1.

Второе, менее красивое решение, в таблицу со статьями вставляем столбик с датой. Т.е. при загрузке первой статьи в текущем дне создаем столбик текущей даты, и затем в течении дня плюсуем количество просмотров каждой статье.

В обоих случаях растет количество данных, надобность в которых отпадает через неделю.

Подскажите, какие алгоритмы еще существуют...
AvegaSan вне форума Ответить с цитированием
Старый 14.02.2020, 09:46   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Что нужно сделать, дак это добавить в таблицу со статьями значения views и date, сделать простую выборку за семь дней с большим количеством views, если по каким-то неведомым силам они не были добавлены изначально, потому, как это статейный двиг.

Что-то типо этого:
Код:
SELECT * FROM table WHERE date > NOW() - INTERVAL 7 DAY ORDER BY views DESC;
uberchel вне форума Ответить с цитированием
Старый 14.02.2020, 12:52   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Первое, это сделать таблицу с полями id, date, count. Тогда при загрузке статьи ищем строку по id-date, если находим, увеличиваем count, если не находим, добавляем строку id-date и count=1.
при анализе (когда хотим) СЧИТАЕМ
Код:
select id, count(*) from 
where  --за нужный период (сегодня за неделю, завтра за месяц, а потом и до года доберемся )
  group by id --по статейно
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 14.02.2020 в 12:55.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дата начала и конца недели по по номеру недели в году izac1 PHP 2 16.01.2013 19:22
Считая, что год невисокосный и его 1 января приходится на день недели wd1, определить: wd - день недели, на который приходится Галенька Помощь студентам 0 27.05.2012 14:33
Дни недели Freeman-des Помощь студентам 5 12.01.2011 22:23
Маленький сайт с БД. Работы на 2 недели. Хорошая оплата. SergAKM Фриланс 1 02.07.2008 09:36
Маленький сайт с БД. Работы на 2 недели. Хорошая оплата. SergAKM Фриланс 2 27.06.2008 12:46