Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 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,379
По умолчанию

Что нужно сделать, дак это добавить в таблицу со статьями значения 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,074
По умолчанию

Первое, это сделать таблицу с полями 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 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840