Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как правильно подсчитать время и вставить в запрос?

Как правильно подсчитать время и вставить в запрос?


     02.07.2020    dle, time, время    Все вопросы » Общие вопросы по PHP    784

вопрос
Добрый день.
Хочу вывести кол-во просмотров публикаций юзера относительно дня, прошедшего дня, месяца и общего значения.
Но никак не могу разобраться с UNIX Timestamp

Мои попытки:

//сегодня
	$sql = $db->super_query( "SELECT SUM(news_read) as news_read FROM " . PREFIX . "_post_extras WHERE user_id='{$row['user_id']}' > '$temp_week'" );
	$temp_week = $_TIME - (3600 * 24 * 7);
	$news_read = isset($sql['news_read']) ? intval($sql['news_read']) : 0;
    $tpl->set( '{news_read_week}', $news_read );
    // /сегодня

    // вчера 
    $sql = $db->super_query( "SELECT SUM(news_read) as news_read FROM " . PREFIX . "_post_extras WHERE user_id='{$row['user_id']}' > '$temp_day'" );
	$temp_day = $_TIME - (3600 * 24);
    $tpl->set( '{news_read_olday}', $news_read );
    // /вчера

    // месяц
    $sql = $db->super_query( "SELECT SUM(news_read) as news_read FROM " . PREFIX . "_post_extras WHERE user_id='{$row['user_id']}' > '$temp_month'" );
	$temp_month = $_TIME - (3600 * 24 * 31);
    $tpl->set( '{news_read_month}', $news_read );
    // /месяц


Что я делаю не так? Он выводит везде одну и ту же цифру и как вообще работать с временем php в рамках DLE движка.

Ответа пока нет


8 комментариев

akella
Юзер

akella - 2 июля 2020 22:03 -

у вас $news_read только в одном запросе значение принимает

Invokerlover
Юзер

Invokerlover - 2 июля 2020 22:13 -

Да. я уже вызубрил мануал и понял свои ошибки, спасибо!

akella
Юзер

akella - 2 июля 2020 22:14 -

и может местами поменять переменную и запрос

dj-avtosh
PHP-developer

dj-avtosh - 3 июля 2020 11:18 -

Если заглянуть еще глубже, там вообще жесть в запросах:

WHERE user_id='{$row['user_id']}' > '$temp_week'" );

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 3 июля 2020 11:37 -


$newsReadsMapArr = [

// Сегодня:

'today' => $db->super_query("SELECT SUM(pe.news_read) as news_read_sum
FROM " . PREFIX . "_post p 
LEFT JOIN " . PREFIX ."_post_extras pe ON (p.id = pe.news_id)
WHERE DATE(p.date) = CURDATE()"),

// Вчера:

'yesterday' => $db->super_query("SELECT SUM(pe.news_read) as news_read_sum
FROM " . PREFIX . "_post p 
LEFT JOIN " . PREFIX ."_post_extras pe ON (p.id = pe.news_id)
WHERE p.date BETWEEN CURDATE() - INTERVAL 1 DAY
        AND CURDATE() - INTERVAL 1 SECOND"),

// Месяц:

'month' => $db->super_query("SELECT SUM(pe.news_read) as news_read_sum
FROM " . PREFIX . "_post p 
LEFT JOIN " . PREFIX ."_post_extras pe ON (p.id = pe.news_id)
WHERE p.date BETWEEN (CURDATE() - INTERVAL 1 MONTH) AND CURDATE()")

];

foreach ( $newsReadsMapArr as $k => $v )
{
   $tpl->set('{new_read_' . $k . '}', $v['news_read_sum']);
}



Вывод:
{new_read_today}
{new_read_yesterday}
{new_read_month}

Не тестировал!

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 3 июля 2020 14:57 -

ну и более короткий вариант кода:

$sqlNewsRead = "SELECT SUM(pe.news_read) as news_read_sum
    FROM " . PREFIX . "_post p 
        LEFT JOIN " . PREFIX ."_post_extras pe ON (p.id = pe.news_id) ";

$newsReadsMapArr = [

// Сегодня:
'today' => $db->super_query($sqlNewsRead . " WHERE DATE(p.date) = CURDATE()"),

// Вчера:
'yesterday' => $db->super_query($sqlNewsRead . " WHERE p.date BETWEEN CURDATE() - INTERVAL 1 DAY AND CURDATE() - INTERVAL 1 SECOND"),

// Месяц:
'month' => $db->super_query($sqlNewsRead . " WHERE p.date BETWEEN (CURDATE() - INTERVAL 1 MONTH) AND CURDATE()")

];

foreach ( $newsReadsMapArr as $k => $v )
{
   $tpl->set('{new_read_' . $k . '}', $v['news_read_sum']);
}

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Invokerlover
Юзер

Invokerlover - 3 июля 2020 17:08 -

Хм, благодарю!
Теперь я научился сокращать запросы, пойду переписывать все свои предыдущие модули ;)

dj-avtosh
PHP-developer

dj-avtosh - 5 июля 2020 22:01 -

А писать правильные тоже научились? Чуток ведь почитать надо об sql.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх