2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
1

В чем может быть ошибка?

28.10.2014, 20:52. Показов 662. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function megaDate($timestamp) {
    global $tpl, $server_time;
 
  $diff   = time() - $timestamp; 
  $hours  = floor($diff/3600); 
  $diff  -= $hours*3600; 
  $minutes = floor($diff/60); 
  $diff   -= $minutes*60; 
  $seconds = $diff; 
  $diff   -= $seconds*60; 
 
  $date = "";  
          
       if ($hours > 1 && $hours < 24) { 
            if ($hours > 4 && $hours < 21) $date = "$hours часов назад"; 
            else if ($hours ==21 || $hours == 1) $date = "$hours час назад"; 
            else if ($hours >= 22 || $hours <= 4) $date = "$hours часа назад"; 
        } 
    if ($minutes > 60 && $minutes < 59) { 
            if ($minutes > 4 && $minutes < 21) $date = "$minutes минут назад"; 
            else if ($minutes ==21 || $minutes == 1) $date = "$minutes минута назад"; 
            else if ($minutes >= 22 || $minutes <= 4) $date = "$minutes минуты назад"; 
        } 
    if ($seconds > 1 && $seconds < 59) { 
            if ($seconds > 4 && $seconds < 21) $date = "$seconds секунд назад"; 
            else if ($seconds ==21 || $seconds == 1) $date = "$seconds секунда назад"; 
            else if ($seconds >= 22 || $seconds <= 4) $date = "$seconds секунды назад"; 
        }       
        elseif($seconds == 0 && $minutes == 0 && $hours == 0){ 
            $date = "только что"; 
        }
 
                return $date;
}
скрипт почему то зацикливается, а именно доходит нормально до 59 секунд, а потом пишет "только что" и заново считать начинает с 1 секунды, в чем может быть проблема?

Добавлено через 2 часа 52 минуты
и тишина
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2014, 20:52
Ответы с готовыми решениями:

В чем может быть ошибка?
Есть такой небольшой скрипт: в файле links.txt хранятся ссылки на страницы сайтов. Скрипт ходит...

В чем может быть ошибка?
В общем суть следующая. Пытаюсь установить скрипт обменника Payeer на сайт. Вот код: А...

Скрипт работает не стабильно в чем может быть причина
Привет всем. У меня скрипт то работает то не работает, а именно может показать данных больше чем...

Поля формы НЕ транслируются в переменные PHP. В чем может быть проблема?
Выдает ошибку, что переменные (в т.ч. и $QUERY_STRING, $argv) не определены. Окружение:...

7
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
28.10.2014, 21:41 2
Цитата Сообщение от wolf Посмотреть сообщение
if ($hours > 1 && $hours < 24) {
if ($hours > 4 && $hours < 21) $date = "$hours часов назад";
else if ($hours ==21 || $hours == 1) $date = "$hours час назад";
else if ($hours >= 22 || $hours <= 4) $date = "$hours часа назад";
}
if ($minutes > 60 && $minutes < 59) {
if ($minutes > 4 && $minutes < 21) $date = "$minutes минут назад";
else if ($minutes ==21 || $minutes == 1) $date = "$minutes минута назад";
else if ($minutes >= 22 || $minutes <= 4) $date = "$minutes минуты назад";
}
if ($seconds > 1 && $seconds < 59) {
if ($seconds > 4 && $seconds < 21) $date = "$seconds секунд назад";
else if ($seconds ==21 || $seconds == 1) $date = "$seconds секунда назад";
else if ($seconds >= 22 || $seconds <= 4) $date = "$seconds секунды назад";
}
elseif($seconds == 0 && $minutes == 0 && $hours == 0){
$date = "только что";
}
Может так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    if($seconds == 0 && $minutes == 0 && $hours == 0){ 
                $date = "только что"; 
    }
    elseif ($hours > 1 && $hours < 24) { 
                if ($hours > 4 && $hours < 21) $date += "$hours часов нзад"; 
                else if ($hours ==21 || $hours == 1) $date += "$hours час назад"; 
                else if ($hours >= 22 || $hours <= 4) $date += "$hours часа назад"; 
    } 
    elseif ($minutes > 0 && $minutes < 60) { 
                if ($minutes > 4 && $minutes < 21) $date = "$minutes минут назад"; 
                else if ($minutes ==21 || $minutes == 1) $date = "$minutes минуту назад"; 
                else if ($minutes >= 22 || $minutes <= 4) $date = "$minutes минуты назад"; 
    } 
    elseif ($seconds > 0 && $seconds < 60) { 
                if ($seconds > 4 && $seconds < 21) $date = "$seconds секунд назад"; 
                else if ($seconds ==21 || $seconds == 1) $date = "$seconds секунду назад"; 
                else if ($seconds >= 22 || $seconds <= 4) $date = "$seconds секунды назад"; 
    }
Добавлено через 3 минуты
Цитата Сообщение от wolf Посмотреть сообщение
global $tpl, $server_time;
не делайте так, нехорошо это
0
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
28.10.2014, 23:00  [ТС] 3
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
global $tpl, $server_time;
а как лучше сделать если не так?
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
28.10.2014, 23:01 4
Цитата Сообщение от wolf Посмотреть сообщение
а как лучше сделать если не так?
А зачем эти переменные в функции, если они не используются?
0
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
28.10.2014, 23:06  [ТС] 5
переменная tpl используется

я просто концовку кода изменил для форума, а воще в конце кода вот так у меня
вместо этого return $date;

вот это
return $tpl->set('{date}', $date);
0
(ノಠ益ಠ)ノ彡┻━┻
151 / 151 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
03.11.2014, 15:55 6
wolf,

В общем $tpl там явно не к чему.
В функции
PHP
1
return $date;
В скрипте
PHP
1
2
$data = megaDate($timestamp);
$tpl->set('{date}', $data);
$tpl, даже если вы в return укажите $tpl->set('{date}', $date); её не нужно объявлять, она есть часть движка, объявленная классом DLE.

Добавлено через 6 минут
Код только что проверил, все корректно считает.
0
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
03.11.2014, 16:22 7
Зачем изобретать велосипед?
PHP
1
2
3
4
5
$db = '2014-01-09 07:59:59';
$start    = new DateTime($db);
$end      = new DateTime();
$diff = $start->diff($end);
echo $diff->format('%h:%i:%s');
0
47 / 23 / 3
Регистрация: 28.05.2012
Сообщений: 150
Записей в блоге: 1
03.11.2014, 19:27 8
Перепишите через switch case.
0
03.11.2014, 19:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2014, 19:27
Помогаю со студенческими работами здесь

Очень медленно работает phpmyadmin. С чем это может быть связанно?
Очень медленно работает phpmyadmin. С чем это может быть связанно? НА картинке все данные о сервер...

Файл сбора статистики обнуляется или обрезается. В чем может быть причина?
Закустарил скрипт для отображения на сайте количества уникальных посетителей за прошедшие сутки,...

Где в коде может быть ошибка?
Есть код отправки данных на почту. &lt;form action=&quot;formdata.php&quot; method=&quot;POST&quot; name=&quot;form1&quot;...

Ошибка:название папки не может быть пустым
Вот код: &lt;?php function open_read(){ $dir = $open; $files = scandir($dir); for...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru