@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."')");
} 
?>
  • Вопрос задан
  • 82 просмотра
Решения вопроса 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 или Яндекс-метрики.
Если хотите все же использовать свой лог, то лучше его не удалять. Вдруг захотите выявить среднемесячное/суточное/годовое посещение или в каком то другом разрезе по разным разделам сайта. Для пересчета понадобится каждая запись посещения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы