Все статьи >> Хранение, учет, вывод статистики просмотров для статьи MySQL (просмотров: 2517)

Хранение, учет, вывод статистики просмотров для статьи MySQL

Привет! В этой статье хочу поделиться своим опытом создания механизма для учета количества просмотров статей. С его помощью в блоке под названием “Популярные статьи” я размещаю девять наиболее просматриваемых в течении недели.

При создании данного инструмента учета посещаемости, я выделил несколько приоритетных моментов. Мне нужна была статистика просмотров за определенный короткий промежуток времени (например, только за текущую неделю), т.к. мне не было нужды собирать статистику больше чем за неделю, то от устаревших данных я решил избавляться путем затирания их новыми, что не позволит разрастаться базе. К тому же для еще более компактного содержания данных в таблице, одна табличная запись должна содержать статистические данные дневного посещения статьи.

Если вас предварительно заинтересовал данный способ хранения и учета статистики, то далее я подробно опишу его реализацию

Структура таблицы

Для хранения статистики создайте таблицу`bestweekpost` со следующими столбцами:

  • id – уникальный идентификатор;
  • idpost – ID статьи, для которой ведется подсчет посещений;
  • count – счетчик;
  • dayofweek – день недели (1-7, что соответствует понедельник-воскресенье)
  • date – дата;

SQL запрос для создания таблицы

 

1 CREATE TABLE IF NOT EXISTS `bestweekpost` (
2 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
3 `idpost` int(11) NOT NULL,
4 `count` int(11) NOT NULL,
5 `dayofweek` enum("1","2","3","4","5","6","7") COLLATE cp1251_general_cs NOT NULL,
6 `date` date NOT NULL,
7 PRIMARY KEY (`id`)
8 ) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_cs AUTO_INCREMENT=1;

 

Универсальный запрос на Добавление/Обновление статистики

Для внесения в базу данных новых просмотров, необходимо написать универсальный SQL запрос, который должен уметь анализировать текущую статистику (подсчет количества просмотров) для указанной статьи, и в зависимости от нее подбирать алгоритм добавления нового просмотра. Далее приведены случаи, с которыми может столкнуться запрос:

  1. случай - статистики для статьи еще не существует. Необходимо добавить новую запись ведения учета просмотров в таблицу;
  2. случай – статистика для статьи уже ведется. Необходимо увеличить счетчик просмотров на 1;
  3. случай - статистика для статьи уже существует в базе, однако она устарела (данные за прошлую неделю). Необходимо обнулить счетчик (установить значение равное 1) и обновить устаревшую дату записи на новую (текущую);

Получается, чтобы вести недельный отчет для одной статьи понадобиться всего 7 записей в таблице.

Для решения поставленной задачи удобно воспользоваться оператором INSERT, так как помимо основного его предназначения, добавления новой записи в таблицу, в него вложена дополнительная операция, работающая следующим образом: если при добавлении новой записи оператором INSERT, в таблице уже существует запись с идентичным уникальным идентификатором (`id`), иначе говоря дубликат, то управление передается ON DUPLICATE KEY UPDATE составной части оператора INSERT, где можно обновить значения любого поля записи.

Листинг 1. Упрощенный запрос INSERT для добавления нового просмотра

 

01 INSERT INTO `bestweekpost`
02 (`id`,`idpost`,`count`,`dayofweek`,`

Автор: http://www.webpress.uz
 
 
Email:
не зарегистрированы?
Пароль:
забыли?
 
Астраханские магазины