Задать вопрос
@Kirill2501

Как сделать посуточный счетчик посещений (доработать старый)?

Всем привет, кто поможет с помощью запроса правильно вывести инфу? У меня на сайте есть счетчик посещений каждой страницы, в таблице visit_theme записываются все посещения (через крон таблица чистится раз в сутки), в таблицу article выводится общее количество посещений каждой статьи в столбец visits, мне нужно в таблицу article добавить столбец today и туда записывать количество просмотров каждой статьи за сутки (т.е. обнулять его в 12 ночи). Может кто помочь? Вот код:
<?php
$resss=mysqli_query($link_visits,"SELECT id FROM article WHERE id='".$id."'");
$resss=mysqli_fetch_array($resss);
$theme_idss=$resss["id"];
$ip=$_SERVER['REMOTE_ADDR'];
$time=time();

$resss=mysqli_query($link_visits,"SELECT count(id) FROM visit_theme WHERE id_theme_visit='".$theme_idss."' and ip_visit=INET_ATON('".$ip."') and date_visit>'".($time-86400)."' LIMIT 1");
$count_id=mysqli_fetch_array($resss);
if ($count_id[0]==0) {
 $resss=mysqli_query($link_visits,"UPDATE article SET visits=(visits+1) WHERE id='".$theme_idss."' LIMIT 1");
 $resss=mysqli_query($link_visits,"INSERT INTO visit_theme (id_theme_visit,ip_visit,date_visit) VALUES ('".$theme_idss."',INET_ATON('".$ip."'),'".$time."')");
} 
?>
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
@alexalexes
Если вы понимаете, что делает этот запрос:
UPDATE article SET visits=(visits+1) WHERE id='".$theme_idss."' LIMIT 1

То по аналогии можно плюсовать интересуемый столбец:
UPDATE article
SET visits=(visits+1),
      today = today + 1 -- суточные посещения
 WHERE id='".$theme_idss."' -- когда разберетесь, что такое sql-инъекция, то перепишите все запросы, использующие такой стиль подстановки параметров (склеиванием строк)
LIMIT 1 -- после того, как разберетесь, является ли id первичным ключом, можно убрать лимит

Но при добавлении столбца нужно позаботиться, чтобы у столбца значение по умолчанию было 0.
ALTER TABLE article
ADD COLUMN today int default 0 AFTER visits

В скрипте, который чистит таблицу раз в сутки предусмотрите запрос, обнуляющий суточный счетчик у всех статей:
UPDATE article
SET today = 0

PS: Если хотите анализировать посещаемость, то лучше воспользоваться готовыми счетчиками от поисковых систем - Google Analytics или Яндекс-метрики.
Если хотите все же использовать свой лог, то лучше его не удалять. Вдруг захотите выявить среднемесячное/суточное/годовое посещение или в каком то другом разрезе по разным разделам сайта. Для пересчета понадобится каждая запись посещения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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