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

Как заставить работать в USERBOX от ПафНутиЙ модуль стаж пользователя v2


     15.01.2014    Все вопросы » Общие вопросы    2380

вопрос
Выводит почему то что стаж 44 года
Как заставить работать в USERBOX от ПафНутиЙ модуль стаж пользователя v2

Подключаю таким образом
// Считаем рейтинг
    $tpl->set('{user_rating}', userrating($userField['user_id']));
// Cтаж пользователя
        @include (ENGINE_DIR.'/modules/stag.php');

Вот сам модуль
if(!defined('DATALIFEENGINE'))
{
  die("Hacking attempt!");
}

function stag () {
    global $db;

    $result = $db->query("SELECT reg_date, lastdate, user_id FROM " . PREFIX . "_users ORDER BY reg_date DESC LIMIT 0,1");
    $row = $db->get_row($result);

$with_us = round( ( time() - $GLOBALS['row']['reg_date']) / 86400);

if ($with_us > 0)
{
                                                
$count_days=1;

$y1="год";
$y2="года";
$y3="лет";
$m1="месяц";
$m2="месяцa";
$m3="месяцев";
$d1="день";
$d2="дня";
$d3="дней";

$with_us_year = floor($with_us / 365);

if ($with_us_year >= 1)
{
if ($with_us_year == 1) $after_y = $y1;
if ($with_us_year > 1 && $with_us_year < 5) $after_y = $y2;
if ($with_us_year > 4) $after_y = $y3;
$years = $with_us_year." ".$after_y;
$with_us = $with_us - ($years * 365);
$count_days=0;
}
$with_us_month = floor($with_us / 31);
if ($with_us_month >= 1)
{
if ($with_us_month == 1) $after_m = $m1;
if ($with_us_month > 1 && $with_us_month < 5) $after_m = $m2;
if ($with_us_month > 4) $after_m = $m3;
$monthes = $with_us_month." ".$after_m;
$with_us = $with_us - ($monthes * 31);
if ($with_us_month > 6) $count_days=0;
if ($with_us_month == 12) {$years = ($with_us_year+1)." ".$y1;$with_us_month=$monthes=''; }
}
if ($count_days == 1)
{
if ($with_us > 0)
{
if ($with_us == 1 || $with_us == 21 || $with_us == 31) $after_d = $d1;
if ($with_us > 1 && $with_us < 5) $after_d = $d2;
if ($with_us > 4 && $with_us < 21) $after_d = $d3;
if ($with_us > 21 && $with_us < 25) $after_d = $d2;
if ($with_us > 24 && $with_us < 31) $after_d = $d3;
$days = $with_us." ".$after_d;
}
}
$stag = $years." ".$monthes." ".$days;
unset($years); unset($monthes); unset($days);
return $stag;
}
$stag = 0;
return $stag;
}
$with_us = stag (reg_date);
$tpl->set('{stag}', $with_us);

?>

Ответил: ukradyga


Выводит почему то что стаж 44 года


Возможно, что у вас в базе reg_date = 0 или нет такого поля.

$GLOBALS['row']['reg_date'] = 0 у вас. Попробуйте заменить следующим образом:

$with_us = round( ( time() - $GLOBALS['row']['reg_date']) / 86400); 


на

$with_us = round( ( time() - $row['reg_date']) / 86400);



Если не будет работать, еще замените

    $result = $db->query("SELECT reg_date, lastdate, user_id FROM " . PREFIX . "_users ORDER BY reg_date DESC LIMIT 0,1");
    $row = $db->get_row($result);


на
 $row = $db->super_query("SELECT reg_date, lastdate, user_id FROM " . PREFIX . "_users ORDER BY reg_date DESC LIMIT 0,1");


Так проще и обычно эту конструкцию использую. Но по идее они равнозначны.

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

shmel1985
Юзер

shmel1985 - 15 января 2014 17:00 -

UKRADYGA не работает
менял по отдельности тоже не хочет работать
в самом профиле отображается нормально.
Стаж юзера: 0

Вот так сделал
function stag () {
    global $db;

    $row = $db->super_query("SELECT reg_date, lastdate, user_id FROM " . PREFIX . "_users ORDER BY reg_date DESC LIMIT 0,1");

$with_us = round( ( time() - $row['reg_date']) / 86400);

if ($with_us > 0)
{

ukradyga
Юзер

ukradyga - 15 января 2014 17:04 -

Не знаю как ответ изменить или удалить. Запрос не тот, так будет стаж только последнего юзера. Видимо в GLOBAL хранится запрос по конкретному пользователю, но не пойму зачем тут тогда вообще запрос.

$userField['user_id'] - здесь id нужного пользователя, тогда запрос будет такой

$row = $db->super_query("SELECT reg_date, lastdate, user_id FROM " . PREFIX . "_users WHERE user_id = '".$userField['user_id'] . "'");

shmel1985
Юзер

shmel1985 - 15 января 2014 17:04 -

Вот так сделал
function stag () {
    global $db;

    $row = $db->super_query("SELECT reg_date, lastdate, user_id FROM " . PREFIX . "_users ORDER BY reg_date DESC LIMIT 0,1");

$with_us = round( ( time() - $row['reg_date']) / 86400);

if ($with_us > 0)
{

ukradyga
Юзер

ukradyga - 15 января 2014 19:55 -

Заработало?

shmel1985
Юзер

shmel1985 - 15 января 2014 17:06 -

если меняю только
$row = $db->super_query("SELECT reg_date, lastdate, user_id FROM " . PREFIX . "_users ORDER BY reg_date DESC LIMIT 0,1");
тогда стаж 44 года

shmel1985
Юзер

shmel1985 - 15 января 2014 17:12 -

И в профиле и в userbox стаж 44 года
при таком использовании
function stag () {
    global $db;

    $row = $db->super_query("SELECT reg_date, lastdate, user_id FROM " . PREFIX . "_users WHERE user_id = '".$userField['user_id'] . "'");

$with_us = round( ( time() - $row['reg_date']) / 86400);

if ($with_us > 0)
{

dep-lit
Юзер

dep-lit - 25 ноября 2014 02:55 -

может кто подскажет,а можно этот хак (стаж пользователя),подключить к доп.полю,прописал в поле 25.11.2014 и пошел отчет от этого времени

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

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

наверх