Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
intersk
114 / 4 / 0
Регистрация: 07.09.2014
Сообщений: 326
1

Идущие часы на PHP

09.10.2018, 13:21. Просмотров 240. Ответов 18
Метки нет (Все метки)

Часы на java показывают время на компьютере пользователя, которое может быть установлено неправильно.
Задача: отображать динамически точное время (сервера, интернета).
Метод решения: взять часы на сервере, а динамически обновлять через Java.
Пытаюсь создать шорткод с часами - не работает.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
add_shortcode ( 'clock', 'my_shortcode_clock' );
 
function my_shortcode_clock ( $attr, $content = null ) {
 
    $Hour = date("H");
    $Minute = date("i");
    $Second = date("s");
 
echo <<<EOT
<html>
    <head></head>
        <body>
            <form name="d"><p><strong>Точное время:</strong><input type="text" size="8" name="d2"></p></form>
            
            <script>var second=<?php echo $Second ?>; var minute=<?php echo $Minute ?>; var hour=<?php echo $Hour ?>; document.d.d2.value='0' function display(){ second++; if (second>=60){ second=0 minute++ } if (minute>=60){ minute=0 hour++ } if (hour>23){ hour=0 minute=0 second=0 } var cHour = hour; var cMinute = minute; var cSecond = second if (second < 10) cSecond = "0" + second; if (minute < 10) cMinute = "0" + minute; if (hour < 10) cHour = "0" + hour; document.d.d2.value=cHour+":"+cMinute+":"+cSecond setTimeout("display()",1000) } display()</script>
        </body>
    </html>
EOT;
}
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2018, 13:21
Ответы с готовыми решениями:

идущие часы
как сделать из этой функции идущие часы, без перезагрузки странице? там вроде js прикручивать надо,...

Два цикла WHILE, идущие в коде подряд...
Всем привет :senor: ! Появился вот такой вопрос: - Есть код: $data = mysql_query(&quot;SELECT * FROM...

Нужно в строке найти подряд идущие русские слова
Добрый вечер. Нужно в строке найти подряд идущие РУССКИЕ слова. Пример: 123321 trololo Это...

Заменить идущие подряд знаки припенания на один знак
заменить идущие подряд знаки припенания на один знак! Контр ни чего не пойму(((

Регулярные выражения: найти одинаковые слова, идущие друг за другом
Нужно найти одинаковые слова идущие друг за другом(например для для ) if...

18
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
10751 / 6078 / 456
Регистрация: 09.09.2009
Сообщений: 24,083
09.10.2018, 13:31 2
делаешь аякс запрос в сервер, получаешь от него ответ, выводишь куда хочется
0
Phantom-84
269 / 224 / 62
Регистрация: 15.09.2017
Сообщений: 1,064
09.10.2018, 14:14 3
intersk, принцип верный, только иногда все же не мешает делать синхронизацию с сервером или другим источником.

Добавлено через 1 минуту
У вас php-вставки в СТРОКЕ

Добавлено через 2 минуты
Нужно так: $Second или {$Second} и т.п.
1
Para bellum
09.10.2018, 14:41
  #4

Не по теме:

Цитата Сообщение от intersk Посмотреть сообщение
динамически обновлять через Java
Точно на Java? Может JavaScript?

0
intersk
114 / 4 / 0
Регистрация: 07.09.2014
Сообщений: 326
09.10.2018, 19:06  [ТС] 5
Dmitry, Phantom-84, Para bellum,
слышал что аякс нагружает сервер (при постоянных запросах), имел ввиду Javascript
вот рабочий код получился, но время на три часа меньше показывает.
Можно его ещё как-то оптимизировать?
мой сайт http://jurvrn.ru/, на сайте у меня ещё есть профиль jurvrn (сам не программист, создание сайта хобби)
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
35
36
37
38
39
40
41
42
43
44
45
<?php
/**
 * Created by jurvrn.
 * User: jurvrn
 */
 
/**
 * Plugin Name: my-shortcode-liveclock
 */
 
add_shortcode ( 'liveclock', 'my_shortcode_lc' );
 
function my_shortcode_lc ( $attr, $content = null ) {
   
$Hour = date("H");
$Minute = date("i");
$Second = date("s");
    
return "<html>
    <head></head>
    <body>
        <form name=\"d\"><p><strong>Точное время: </strong><input type=\"text\" size=\"8\" name=\"d2\"></p></form>
            <script>
            var second=$Second;
            var minute=$Minute;
            var hour=$Hour; 
            document.d.d2.value='0'; 
            function display(){ second++; 
            if (second>=60){ second=0; minute++ } 
              if (minute>=60){ minute=0; hour++ } 
               if (hour>23){ hour=0; minute=0; second=0 } 
              var cHour = hour; 
              var cMinute = minute; 
              var cSecond = second; 
              if (second < 10) cSecond = '0' + second; 
              if (minute < 10) cMinute = '0' + minute; 
              if (hour < 10) cHour = '0' + hour; 
              document.d.d2.value=cHour+':'+cMinute+':'+cSecond;
              setTimeout('display()',1000) 
            } 
            display()
            </script>
    </body>
    </html>";
}
0
Phantom-84
269 / 224 / 62
Регистрация: 15.09.2017
Сообщений: 1,064
09.10.2018, 20:04 6
Проверьте временную зону на сервере.

Добавлено через 5 минут
И не вызывайте три раза date при неявно заданном времени. Либо получите предварительно текущее время в отдельной переменной. Либо используйте один вызов функции, например getdate.
1
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
10.10.2018, 11:07 7
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Проверьте временную зону на сервере.
решил использовать функцию current_time вместо date - и тогда значение берется из консоли WordPress с учетом временной зоны.
Цитата Сообщение от Phantom-84 Посмотреть сообщение
И не вызывайте три раза date при неявно заданном времени. Либо получите предварительно текущее время в отдельной переменной. Либо используйте один вызов функции, например getdate.
получить можно время как переменную, но ведь потом она должна изменяться динамически...
получается 1) нужно создать массив из элементов: час, минута, секунда? или 2) получить время а потом его "разбить" на элементы?
в принципе getdate эти оба варианта как бы выполняет.
Код будет выглядеть так? вместо
PHP
1
2
3
 $Hour = current_time("H");
$Minute = current_time("i");
$Second = current_time("s");
будет
PHP
1
$time = getdate();
А вместо
PHP
1
2
3
var second=$Second;
var minute=$Minute;
var hour=$Hour;
- будет?
PHP
1
2
3
var second=$time[seconds];
var minute=$time[minutes];
var hour=$time[hours];
Добавлено через 5 минут
но тогда опять время отстает на 3 часа, значит нужно добавить временную метку в функцию

Добавлено через 18 минут
пришлось добавить в функцию
PHP
1
date_default_timezone_set('Europe/Moscow');
0
Phantom-84
269 / 224 / 62
Регистрация: 15.09.2017
Сообщений: 1,064
10.10.2018, 14:55 8
Цитата Сообщение от jurvrn Посмотреть сообщение
получается 1) нужно создать массив из элементов: час, минута, секунда? или 2) получить время а потом его "разбить" на элементы?
Необязательно. Если вникнуть в написанное мной: получили время - передали его трижды в date.

Цитата Сообщение от jurvrn Посмотреть сообщение
будет?
Зачем? Используйте в строке непосредственно элементы массива. Символьные ключи нужно обрамлять кавычками. Сами элементы массива в строке - на всякий случай фигурными скобками, например {$time['seconds']}.
1
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
10.10.2018, 15:22 9
ваши замечания учел, код работает (http://jurvrn.ru) Нужно ли менять что-то?
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/**
 * Created by jurvrn.
 * User: jurvrn
 * Date: 10.10.2018
 * Time: 10:31
 */
add_shortcode ( 'liveclock', 'my_shortcode_lc' );
 
function my_shortcode_lc ( $attr, $content = null ) {
 
date_default_timezone_set('Europe/Moscow');
$time = getdate();
 
return "<html>
    <head>
    <style>
       .polein {
        min-width: 149px; /* Ширина поля с учетом padding */
        height: 26px; /* Высота */
        line-height: 26px; /* Выравниваем по  центру в IE, равно высоте основной*/
        background: #dad7c5; /*url(images/input.png) no-repeat; /* Фон */
        padding: 0; /* Поля */
        border: none; /* Убираем рамку */
        font-size: 1.1em; /* Размер текста */
        text-align: center;
        outline: none;
       }
    </style>
    </head>
    <body>
    
        <form name=\"d\"><p><strong>Точное время: </strong><input type=\"text\" class=\"polein\" name=\"d2\"></p></form>
        
        <script>
            var second={$time['seconds']};
            var minute={$time['minutes']};
            var hour={$time['hours']}; 
            document.d.d2.value='0'; 
            function display(){ second++; 
            if (second>=60){ second=0; minute++ } 
              if (minute>=60){ minute=0; hour++ } 
               if (hour>23){ hour=0; minute=0; second=0 } 
              var cHour = hour; 
              var cMinute = minute; 
              var cSecond = second; 
              if (second < 10) cSecond = '0' + second; 
              if (minute < 10) cMinute = '0' + minute; 
              if (hour < 10) cHour = '0' + hour; 
              document.d.d2.value=cHour+':'+cMinute+':'+cSecond;
              setTimeout('display()',1000) 
            } 
            display()
            </script>
    </body>
    </html>";
}
0
Phantom-84
269 / 224 / 62
Регистрация: 15.09.2017
Сообщений: 1,064
10.10.2018, 15:32 10
Не вынуждайте меня повторять. Хотя для WP полно сделанных абы как расширений, поэтому можете оставить. Одним больше, одним меньше - не играет никакой роли
0
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
10.10.2018, 16:00 11
Phantom-84, я просто мало знаю теорию php и не все ваши слова по смыслу понимаю...
0
Phantom-84
269 / 224 / 62
Регистрация: 15.09.2017
Сообщений: 1,064
10.10.2018, 16:13 12
Видимо, и очков с собой нет, чтобы получше рассмотреть пример
0
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
10.10.2018, 16:16 13
Phantom-84, очки на носу ) и вроде всё сделал по вашим рекомендациям (ну как понял что вы писали)/
Кстати есть ещё один пример в просторах интернета:
Может его лучше использовать? меня интересует быстродействие, отсутствие нагрузки на сервер, точность

Это в <head>...</head> засунуть:
Код:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script language="JavaScript">
function vrem()
{
ndata = new Date();
hours = ndata.getHours();
mins = ndata.getMinutes();
secs = ndata.getSeconds();
tochki='<span style="opacity: 0.2;">:</span>';
if(mins<10) {mins="0"+mins}
if(secs<10) {secs ="0"+secs}
if (secs%2==0) {document.getElementById("vremya").innerHTML=hours+":"+mins;} else {document.getElementById("vremya").innerHTML=hours+tochki+mins;}
setTimeout("vrem()", 1000);
}
</script>
к тегу <body> подписать onload="vrem()" (чтобы как-то так было: <body onload="vrem()">)

и в нужном месте страницы разместить <div id="vremya">00:00</div>
0
Phantom-84
269 / 224 / 62
Регистрация: 15.09.2017
Сообщений: 1,064
10.10.2018, 20:47 14
jurvrn, как вы умудрились так отредактировать то сообщение с кодом, что даже следов не осталось?

Цитата Сообщение от jurvrn Посмотреть сообщение
Может его лучше использовать?
Не знаю. В этом разделе обсуждают PHP.
1
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
11.10.2018, 09:42 15
Phantom-84, не знаю ) будем считать что тема решена
0
Omion
31 / 30 / 11
Регистрация: 19.05.2015
Сообщений: 295
11.10.2018, 10:15 16
Здравствуй дорогой друг. Идущие часы на PHP сделать невозможно. Если ты не планируешь обновлять страницу каждую секунду. Тема закрыта всем спасибо.
P.S
14-ть сообщений. Ужас. Мне думается что все сообщения должны быть типо моего. Я не читал правда, и вопроса не читал. только заголовок темы.
0
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
11.10.2018, 11:37 17
Omion, мы знаем, автор поста неправильно выразился. В итоге соединили возможность брать время с сервера через php и отображать его изменение динамически
0
Omion
31 / 30 / 11
Регистрация: 19.05.2015
Сообщений: 295
16.10.2018, 16:33 18
jurvrn, ну так это же не проблема.)
0
jurvrn
1 / 1 / 3
Регистрация: 09.07.2018
Сообщений: 119
17.10.2018, 12:54 19
Omion, тема решена. Теперь новый вопрос
http://www.cyberforum.ru/php/thread2333328.ht
0
17.10.2018, 12:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2018, 12:54

Считать в отдельную переменную все цифры идущие подряд после символа _ , пока не встретится символ не являющийся числом
на php Допустим дана строка: aeg28491_30481?353 как мне считать в отдельную переменную все цифры...

Круглые идущие часы
Помогите написать прогу ,которая выводит на экран круглые часы со всеми стрелками и по нажатию...

Идущие часы: переделать код с использованием классов
Добрый день, у меня есть код идущих часов с помощью функций. Не мог бы кто-то помочь переделать его...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru