Strict Standards: Resource ID#35 used as offset, casting to integer (35) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#38 used as offset, casting to integer (38) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Помогите совместить 2 скрипта
ТвойWeb » WebMaster класс » PHP/Perl » Помогите совместить 2 скрипта

Страниц (2): [1] 2 »
 

1. Cyber-Cat - 13 Июня, 2005 - 09:41:48 - перейти к сообщению
Мне надо, что бы ДИНАМИЧЕСКИ отображалось дата и время.
Но переменная бралась не с системного таймера компа, а с сервака на котором хостишся...

т.е. вот: http://v-ufaley.h15.ru/time.php
в верхней строке мы видем время сервера,
а в нижней строке время системного таймера с нашего компьютера, и оно отображается динамически. т.е. часики в живую тикают...

так вот - вопрос - как передать переменную php - в переменную Java Script ?

Прилагаю сам скрипт. Помогите мне его переделать please...
2. Леголегс - 13 Июня, 2005 - 10:41:40 - перейти к сообщению
Cyber-Cat
PHP выполняется на сервере и javascript - у юзера и никак ты переменные не переделаешь! Можно конечно передавать время на сервере (статично) и у клиента яваскриптом вычислять разницу и так отображать. Но при этом возникнет ошибка, равная времени доставки страницы от сервера к клиенту.
итак.
Во-первых убери document.open(); - тут это не нужно.
Кроме того лишний
CODE:
</script>

<script>

Теперь собственно переделка.
После
CODE:

var dayNr = ((now.getDate()<10) ? "0" : "")+ now.getDate();
добавь
CODE:
var deltaHours = now.getHours() - $hours;
var deltaMinutes = now.getMinutes() - $minutes;
var deltaSeconds = now.getSeconds() - $seconds;
Строки
CODE:
intHours = today.getHours();
intMinutes = today.getMinutes();
intSeconds = today.getSeconds();
замени на
CODE:
intHours = today.getHours() - deltaHours;
intMinutes = today.getMinutes() - deltaMinutes;
intSeconds = today.getSeconds() - deltaSeconds;
После строки
PHP:
$time=date("H:i:s"); // часы:минуты:секунды
допиши
PHP:
$hours=date("H");
$minutes=date("i");
$seconds=date("s");

Вроде всё.
PS и в старом скрипте и после модификаций будут маленькие глюки если время близко к полуночи.
PPS я ничего не тестировал, сори
3. ETC - 13 Июня, 2005 - 10:53:37 - перейти к сообщению
Леголегс
А ты вспомни как сделано в гостевой народа, там через число делается, но вот я не помню, как вывести через PHP тоже самое...
4. Cyber-Cat - 13 Июня, 2005 - 11:16:27 - перейти к сообщению
Леголегс пишет:
Можно конечно передавать время на сервере (статично) и у клиента яваскриптом вычислять разницу и так отображать. Но при этом возникнет ошибка, равная времени доставки страницы от сервера к клиенту

Разница в 1 - 3 секунды для меня не суть важна...
Я же не сервер точного времени Подмигивание
Главное что бы на моем сайте отображались дата и время денамически, и переменная бралась с сервера (с хостинга), а не с таймера компа - дату и время которого давно уже не проверяли Улыбка

В принцепе, если можно как то это сделать без Java Script, чисто на PHP - то меня и это устроит... лижбы, еще повторюсь, отображалось динамически...
5. Леголегс - 13 Июня, 2005 - 11:17:11 - перейти к сообщению
ETC пишет:
А ты вспомни как сделано в гостевой народа, там через число делается, но вот я не помню, как вывести через PHP тоже самое...
"Число" - это такое длинное целое, которое обозначает количество миллисекунд, прошедших с начала "эпохи юникс" (1 янв 1970г) ? Я пхп почти не знаю не говоря уж про такие тонкости. Да и времени у меня нет хороший скрипт писать Недовольство, огорчение Уж извините. Экзамен завтра.\n\n(Добавление)
Cyber-Cat пишет:
В принцепе, если можно как то это сделать без Java Script, чисто на PHP - то меня и это устроит... лижбы, еще повторюсь, отображалось динамически...
"динамически" и "пхп" - слабосовместимые понятия. Так ты попробовал этот вариант?
6. Cyber-Cat - 13 Июня, 2005 - 11:25:43 - перейти к сообщению
Леголегс
Только что внес все изменения которые ты предложил,
вот что получилась: http://v-ufaley.h15.ru/time2.php
т.е. во второй строке - пропало время Недовольство, огорчение
7. Леголегс - 13 Июня, 2005 - 11:34:32 - перейти к сообщению
ага. Cyber-Cat, исправляй
CODE:
var deltaHours = now.getHours() - $hours;
var deltaMinutes = now.getMinutes() - $minutes;
var deltaSeconds = now.getSeconds() - $seconds;
на
CODE:
var deltaHours = now.getHours() - <?echo($hours);?>;
var deltaMinutes = now.getMinutes() - <?echo($minutes);?>;
var deltaSeconds = now.getSeconds() - <?echo($seconds);?>;
теперь заработает
8. Cyber-Cat - 13 Июня, 2005 - 11:47:52 - перейти к сообщению
Леголегс
О! Другое дело! Заработал!

Но, млин, все таки что то не то этот скрипт считает... Недовольство, огорчение
т.е. секунды доходят до 60 и идут дальше... 61,62,63 и т.д.
тоже самое с минутами и часами...

к тому же если подправить системный таймер у себя на компе - на скрипте уже появляются другие цифры.
Т.е. все равно дата и время , получается зависимы от системного таймера.
А они не должны зависить от него. Тока от сервера.
Понаблюдай: http://v-ufaley.h15.ru/time1.php

Мне кажется что гдето тут:
CODE:

intHours = today.getHours() - deltaHours;
intMinutes = today.getMinutes() - deltaMinutes;
intSeconds = today.getSeconds() - deltaSeconds;

или тут:
CODE:

var deltaHours = now.getHours() - <?echo($hours);?>;
var deltaMinutes = now.getMinutes() - <?echo($minutes);?>;
var deltaSeconds = now.getSeconds() - <?echo($seconds);?>;


не понятные какие то вычисления...
Зачем отнимать время системного таймера от времени сервера?

Нильзя как то проще взять время сервера, и передать его скрипту?
Пусть даже черех запись во временный файл...?
9. Леголегс - 13 Июня, 2005 - 13:33:32 - перейти к сообщению
Cyber-Cat пишет:
секунды доходят до 60 и идут дальше... 61,62,63
да, это надо поправить. После
CODE:
intSeconds = today.getSeconds() - deltaSeconds;
добавь
CODE:
if (intSeconds>=60) {
intSeconds-=60;
intMinutes++;
}
if (intMinutes>=60) {
intMinutes-=60;
intHours++;
}
Cyber-Cat пишет:
если подправить системный таймер у себя на компе
на это скрипт не расчитан. Он просто находит разницу между временем сервера и клиента и вносит поправки при отображении. По другому почти никак.
Cyber-Cat пишет:
Зачем отнимать время системного таймера от времени сервера?
Вот тут как раз и находится разница времён.
Cyber-Cat пишет:
Нильзя как то проще взять время сервера, и передать его скрипту?
Нильзя. Принцип только такой. Или ты предлагаешь загружат время каждую секунду?
Cyber-Cat пишет:
Пусть даже черех запись во временный файл...?
??? чаво куда записывать??? По моему если я сохраню свои часы под стотонным прессом, то они начнут отставать Подмигивание
Млин, это скрипт стоило бы переписать заново. Но я смогу только завтра а может и позже. Cyber-Cat, возможно ETС или Дмитрий помогут тебе.\n\n(Добавление)
нашёл функцию php
php.net пишет:
int time ( void )
Возвращает количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) до текущего времени.
10. TvoyWeb - 13 Июня, 2005 - 16:16:58 - перейти к сообщению
Cyber-Cat пишет:
а не с таймера компа - дату и время которого давно уже не проверяли

Даже если передать время с сервака и вычислить разницу во времени между серверным и клиентским компом, все равно минуты и секунды берутся с компа клиента. ИМХО все это не стоит свеч.
Леголегс пишет:
int time ( void )

Можно вычислить только время в часах и передать его JS.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0436]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33