|
|
|
| С помошью хороших людей собрал такой код:
<?php
$timestamp = strtotime('now');
$start = '20081219 1700';
$timestamp = strtotime($start);
$start_time=strtotime($start) - strtotime($now);
header("Refresh: $start_time; url=test.php");
$day=floor($start_time/86400);
$hours=floor(($start_time/3600)-$day*24);
$min=floor(($start_time-$hours*3600-$day*86400)/60);
$sec=$start_time-($min*60+$hours*3600+$day*86400);
?>
<html>
<head>
<SCRIPT LANGUAGE='JavaScript'>
var d = <?php echo $day ?>;
var h = <?php echo $hours ?>;
var i = <?php echo $min ?>;
var s = <?php echo $sec ?>;
function startCountdown()
{
s--;
d=(d<0)?0:d;
h=(h<0)?0:h;
i=(i<0)?0:i;
var ii=(i >= 10)?"":"0";
var ss=(s >= 10)?"":"0";
if((s-1) > 0)
{
document.getElementById('start_time').innerHTML = 'дней: '+ d+' часов: '+h+' минут: '+ii+i+' секунд: '+ss+s;
setTimeout('startCountdown()',1000);
}
else
{
i--;
s = 60;
startCountdown()
}
if(i==0&&h!=0)
{
h--;
i=59;
}
if(h==0&&d!=0)
{
d--;
h=23;
}
}
</script>
</head>
<body onload="startCountdown()">
Начало -
<?php echo date('d F Y h:i:s A', $timestamp);?>
<br>
До начала осталось <br />
<div id="start_time"></div></body>
|
Теперь немогу доработать так, чтобы при 00:00:00 происходило действие:
- допустим переход на другую страницу, а на той странице где отображался отсчет вывести любую другую надпись.
Кто поможет буду благодарен. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(18.12.2008 в 11:13)
| | зачем так?
$day=floor($start_time/86400);
$hours=floor(($start_time/3600)-$day*24);
$min=floor(($start_time-$hours*3600-$day*86400)/60);
$sec=$start_time-($min*60+$hours*3600+$day*86400);
|
правильней будет так:
$day=date ( "j" , $start_time);
$hours=date ( "G" , $start_time);
$min=date ( "i" , $start_time);
$sec=date ( "s" , $start_time);
|
и еще одно, вместо date лучше использовать gmdate - время по гринвичу - одно для всех часовых поясов. | |
|
|
|
|
|
|
|
для: HaJIuBauKa
(18.12.2008 в 11:39)
| | >вместо date лучше использовать gmdate - время по гринвичу - одно для всех часовых поясов.
мне так удобнее я сверяю по своим часам, хотя можно и так
А по моей теме можете что-нибудь посоветовать? | |
|
|
|
|
|
|
|
для: Dmitry_RM
(18.12.2008 в 11:13)
| | Ну а немного подумать? Это же я из Ваших кодов собрал.
if(h==0&&d==0&&i==0&&s==0)
{
ПОПЁЁЁЁРЛИ!!!!!
}
| К тому же это совсем не обязательно делать. Ведь стоит же рефреш. И про форматирование даты уже советовал. Вы не захотели оптимизировать, взяли всё готовое. Не тратьте время, не Ваше это. Заработайте денег другим способом и закажите сайт специалистам - мой Вам совет. | |
|
|
|
|
|
|
|
для: Николай2357
(18.12.2008 в 15:26)
| | >Это же я из Ваших кодов собрал.
Я тот переделал под свой сайт, а этот выложил чтоб понятней было и все видно.
>
if(h==0&&d==0&&i==0&&s==0)
> {
>ПОПЁЁЁЁРЛИ!!!!!
> }
|
Вот именно так я уже делал - не работает, в смысле время вообще не отображается.
> ...закажите сайт специалистам - мой Вам совет.
Я обращался к специалистам - они сказали 100 тыс. рублей. У меня таких денет нет.
Да и сайт я уже почти закончил. Осталось совсем фигня:
- вот это (что выше)
- статистику на сайте (кол-во зарегестрированных пользователей, кол-во он-лайн и т.п.)
- и расмещение сайта в Интернете. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(18.12.2008 в 19:23)
| | Не, ну столько конечно такой сайтик вряд ли стоит ))).
Так растолкуйте во первых, какое действие Вы хотите произвести, во вторых, куда Вы это ставили, что не работает, и в третьих, если это у Вас вызывает затруднения, то вывести к-во пользователей и пр. будет совсем не фигня. И ещё, если Вы сюда выложили не то, что у Вас на сайте, то как же тогда можно правильно подсказать? | |
|
|
|
|
|
|
|
для: Николай2357
(18.12.2008 в 19:55)
| |
<? ***
$timenow = strtotime('now');
$start = '20081218 1358';
$timestamp = strtotime($start);
$start_time=strtotime($start) - $timenow;
header("Refresh: $start_time; url=start_vik.php");
$day=floor($start_time/86400);
$hours=floor(($start_time/3600)-$day*24);
$min=floor(($start_time-$hours*3600-$day*86400)/60);
$sec=$start_time-($min*60+$hours*3600+$day*86400);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo $myrow['meta_d']; ?>">
<meta name="keywords" content="<?php echo $myrow['meta_k']; ?>">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $myrow['title']; ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
***
<SCRIPT LANGUAGE='JavaScript'>
var d = <?php echo $day ?>;
var h = <?php echo $hours ?>;
var i = <?php echo $min ?>;
var s = <?php echo $sec ?>;
function startCountdown()
{
s--;
d=(d<0)?0:d;
h=(h<0)?0:h;
i=(i<0)?0:i;
var ii=(i >= 10)?"":"0";
var ss=(s >= 10)?"":"0";
if((s-1) > 0)
{
document.getElementById('start_time').innerHTML = d +' дн. '+ h +' час. '+ ii + i +' мин. '+ ss + s +' сек. ';
setTimeout('startCountdown()',1000);
}
else
{
i--;
s = 60;
startCountdown()
}
if(i==0&&h!=0)
{
h--;
i=59;
}
if(h==0&&d!=0)
{
d--;
h=23;
}
}
</script>
***
</head>
<body onLoad="startCountdown()"></body>
<body onload=' *** здесь у меня навигация "> // два BODY и оба работают без конфликтов
<!--До начала викторины осталось <br />
<div id="start_time"></div></body>--> // эту строку я занес в БД, он выводится от туда
***
<td><strong>Статистика сайта</strong></td> // в этой таблице статистику сайта будет
</tr>
<tr>
<td><table width="164" border="1">
<tr>
<td><p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p></td>
</tr>
</table></td>
</tr>
***
<FONT CLASS=stat>Copyright © 2008 <A HREF='http://localhost/viktorina_com'>viktorina.com™</A><BR>
</td>
</tr>
</table>
</BODY>
</HTML>
|
Вот такой у меня сейчас код.
>Не, ну столько конечно такой сайтик вряд ли стоит ))).
А вот мне такую сказали.
>Так растолкуйте во первых, какое действие Вы хотите произвести,
По окончанию отсчета переходим на страницу start_vik.php, а на странице index.php оставляем надпись типа "Викторина уже началась"
>во вторых, куда Вы это ставили, что не работает,
function startCountdown()
{
***
if(i==0&&h!=0)
{
h--;
i=59;
}
if(h==0&&d!=0)
{
d--;
h=23;
}
*** // СЮДА
}
|
и вот так тоже
function startCountdown()
{
s--;
d=(d<0)?0:d;
h=(h<0)?0:h;
i=(i<0)?0:i;
var ii=(i >= 10)?"":"0";
var ss=(s >= 10)?"":"0";
if //(СЮДА)
{
// ДЕЙСТВИЕ
}
else
{
if((s-1) > 0)
{
document.getElementById('start_time').innerHTML = d +' дн. '+ h +' час. '+ ii + i +' мин. '+ ss + s +' сек. ';
setTimeout('startCountdown()',1000);
***
}
}
|
Только не ругайтесь :-) | |
|
|
|
|
|
|
|
для: Dmitry_RM
(19.12.2008 в 06:21)
| | Разобрался почему не работал переход на страницу start_vik.php.
Дело было в пустяке.
только вот не показывает последние секунды 1и 0. И переходит на страницу спустя 2 сек после "обнуления отсчета". Некрасиво получается.4 -> 3 -> 59 -> 58 -> start_vik.php
Теперь еще надо поменять надпись на idex.php. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(19.12.2008 в 06:52)
| | Да я не ругаюсь, я просто советую, видя Ваши неимоверные мучения ))) Просто у меня возникает ассоциация с тем, что бы я испытывал, если бы меня принудили заниматься балетом.
Ну вопервых, не нужно ставить два тега <body>, достаточно сделать так:
<body onload="*** здесь у меня навигация ; startCountdown() ">
|
Во вторых, чтоб было совсем красиво, сделайте так:
<SCRIPT LANGUAGE='JavaScript'>
var st = <?php echo $start_time ?>;
var d = <?php echo $day ?>;
var h = <?php echo $hours ?>;
var i = <?php echo $min ?>;
var s = <?php echo $sec ?>;
function startCountdown()
{
if(st < 0)
{
document.getElementById('start_time').innerHTML = "Поезд ту-ту!";
return false;
}
if(h==0&&d==0&&i==0&&s==1)
{
document.getElementById('start_time').innerHTML = "ПОПЁЁЁЁРЛИ!!!!!";
return false;
}
| И учтите то, что точности до секунды всё равно не выйдет. Разная скорость интернета, всякие глюки сети и пр... Надеюсь у Вас не по 5 сек на ответ дается? | |
|
|
|
|
|
|
|
для: Николай2357
(19.12.2008 в 09:09)
| | Так как у меня текст страницы index.php хранится в БД, то я подумал и сделал так:
function startCountdown()
{
if(h==0&&d==0&&i==0&&s==2)
{
clearTimeout(timer);
// потом конечно укарашу и добавлю еще, но главное что работает.
<?
$result=mysql_query("UPDATE settings SET text='Викторина уже началась!!!'");
?>
|
>Надеюсь у Вас не по 5 сек на ответ дается?
Да нет не 5 сек, а 5 или 10 мин. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(19.12.2008 в 09:49)
| | Посмотрите на верх, я маленько поправил. Если у Вас участники викторины должны предварительно зарегистрироваться, совсем ни к чему лишний раз дергать базу. Достаточно всё сделать на клиенте. И уж совсем ни к чему заставлять каждого клиента апдейтить запись. Ой как это не хорошо...
И еще забыл, вот так лучше:
//if((s-1) > 0)
if(s != 0)
|
| |
|
|
|
|
|
|
|
для: Николай2357
(19.12.2008 в 09:53)
| | >Посмотрите на верх, я маленько поправил.
Это я поправил.
>Если у Вас участники викторины должны предварительно зарегистрироваться, совсем ни к чему лишний раз дергать базу. Достаточно всё сделать на клиенте.
А где я дергаю базу?Какую? Непонял.
>И уж совсем ни к чему заставлять каждого клиента апдейтить запись. Ой как это не хорошо...
А как? Если у меня именно из базы берется "Надпись на странице".
>И еще забыл, вот так лучше:
>
//if((s-1) > 0)
>if(s != 0)
|
И правда лучше. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(19.12.2008 в 10:09)
| | Вы посмотрите, как именно сейчас написано наверху. Там немного иначе, нежели я писал первый раз. Не нужно вот этого:
<?
$result=mysql_query("UPDATE settings SET text='Викторина уже началась!!!'");
?>
| , если время вышло, и так всё напишется. Просто сейчас возьмите верхний код и вставьте в свой первый скрипт. Всё будет работать без всякой базы. | |
|
|
|