Подскажите как вывести число просмотров объявления за сегодня ?
У меня сейчас выводится общее число просмотров переменной вот этой строкой
введите сюда кодecho '<img class="glaz" src="/icon/glaz.png"width="16" height="13" title="Количество просмотров"> '.$row_Recordset1['counter'];
нужно к ней добавить число просмотров за сегодня что бы вышло так (просмотров 80 сегодня 5) и что бы все это обновлялось в 00.00 часов как это реализовать .
Для начала надо определить понятие "сегодня" - с учетом временных зон это понятие явно не определено.
Варианта 2:
сегодня := время с полуночи текущей даты до текущего времени в зоне Z
, где Z можно принять зону сайта, например Z := UTC+3В случае сложного варианта 2 нужно будет помнить каждый просмотр, или чуток схалявить - помнить число просмотров за последние 24 часа. Там все решение упрется в аккуратный SQL и работу с временными зонами
Я рассмотрю простой вариант, первый.
Понадобиться 2 счетчика. Просмотров всего (total) и просмотров сегодня (today). Пока идет текущая дата, мы просто прибавляем каждый просмотр объявления в счетчик today
, и всегда прибавляем total
. А в момент перещелкивания даты мы обнулим today
.
Событие сброса можно организовать как минимум двумя способами:
сегодня
, и если при +1 просмотре объявления дата не равна сохраненной, делать сброс и сдвигать датуБолее простой для кода и переносимости вариант первый.
/* Функция вызывается каждый раз, когда мы добавляем просмотр объявления
Необходимые поля в $record:
total - INT - счетчик просмотров за все время
today - INT - счетчик просмотров сегодня
date - DATE - дата последнего просмотра, то есть сегодня
*/
function AddView($record)
{
if (date('Y-m-d') != $record['date']) {
$record['today'] = 0;
}
$record['total'] += 1;
$record['today'] += 1;
// Каким-то образом записываем обновленную запись в базу
// Можете заменить на прямой SQL или как у вас принято писать в базу
return UpdateRecord($record);
}
/* Функция возвращает просмотры */
function GetView($record)
{
return 'Просмотры: всего '.$record['total'].' / сегодня '.$record['today'];
}
Ну и добавить просмотры лучше до того, как отображать их количество
Если предположить, что:
то:
Добавляем в таблицу (объявлений) поле просмотров за сегодня
ALTER TABLE adverts ADD COLUMN daily_views INT UNSIGNED DEFAULT 0;
Добавляем в код скрипта инкремент этого поля при очередном просмотре (так же, как инкрементируется поле общего количества просмотров counter
)
Создаём в планировщике сервера задание, которое обнуляет поле суточных просмотров в 0:00 ежесуточно
CREATE EVENT
ON SHEDULE EVERY 1 DAY
STARTS CURRENT_DATE + INTERVAL 1 DAY
DO
UPDATE adverts SET daily_views = DEFAULT;
Запускаем планировщик
SET GLOBAL event_scheduler = ON;
Альтернативный вариант - добавить поле просмотров за предыдущие дни ALTER TABLE adverts ADD COLUMN prev_views INT UNSIGNED;
, и по эвенту копировать в него текущее состояние счётчика UPDATE adverts SET prev_views = counter;
, тогда сегодняшние просмотры находим вульгарным вычитанием...
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Подскажите как авторизоваться при помощи Booking Sync Api? В документации есть способ авторизации только через приложение http://developersbookingsync
Прошу подсказать, как изменить личные данные пользователя для WooCommerceПробую: