Доброго всем времени суток, пишу по странной проблеме : В переменной $time_voted хранится время последнего голосования, а $time_last - секунды, сколько должно пройти между голосованиями. Сорец кода : PHP: if (time() > $time_voted+$time_last) { $golos = 'Вы <b>можете</b> проголосовать!'; } else { $now = time(); $ostalos = $time_voted - time(); echo 'До голосования осталось' . $ostalos; } Что должно быть : после подхода времени к 0 пользователь\гость может проолосовать. Что не так : после 0 начинается "-", т.е. До голосования осталось -122 До голосования осталось -472 И т.д. Вопрос : что не так?
Переписал код, но теперь ещё лучше! После того, как дошло до 0, идёт не "-", а Вы сможете проголосовать через 8783 час (-ов) ,52 минут и 24 секунд
time() - больше других, тк это текущее время чтобы проголосовать, нужно чтобы time() - $time_voted было больше или равно $time_last PHP: if (time() - $time_voted >= $time_last) { $golos = 'Вы <b>можете</b> проголосовать!'; } else { $now = time(); $ostalos = $time_last - (time() - $time_voted); echo 'До голосования осталось' . $ostalos; }
:wall: чем тебе предыдущий вариант не нравился, предложенный мной? $now мог бы при вычислениях использовать, а так эта переменная вообще не нужна, получается $ostalos = $time_voted + $time_last - time(); если первое условие ты можешь вертеть как хочешь, то с вычислением этой переменной вариантов нет PHP: if (time() - $time_voted >= $time_last) { echo 'Вы <b>можете</b> проголосовать!'; } else { $ostalos = $time_voted + $time_last - time(); echo 'До голосования осталось' . $ostalos; }
да, накосячил я после else, но твой вариант тоже неправильный - если пройдет много времени, то $ostalos будте отрицательным в своем посте выше код поправил как нужно
Я всё понял, спасибо за участие в проблеме! Правильный код : PHP: if (time() > $time_voted) { $golos = 'Вы <b>можете</b> проголосовать!'; } else { $now = time(); $ostalos = $time_voted - time();
если пройдёт много времени, то до else уже не дойдёт и $ostalos считаться не будет и ещё, ты поправил: $time_last - (time() - $time_voted); из арифметики это тоже самое, что и $ostalos = $time_voted + $time_last - time(); N2kroot $time_voted = время следующего голосования? тогда всё верно. но по названию это время, когда юзер проголосовал.. однако $now = time(); у тебя снова не используется, а в сравнении лучше >=, чем >