|
|
|
| Здрасьте!!!
Я пишу сайт типо викторины. Я уже все почти сделал осталось на главной странице поставить такую логику:
- Сперва на странице появляется таймер с обратным отсчетом времени (ну типа до начала осталось).
- Потом когда таймер по нулям - вылазит окно ввода пароля и логина (окно готово, надо только в логику вставить)
- Далее вопрос с вариантами ответа (10 вопросов, рефрешь каждые 5 мин с автоматической сменой вопроса)
- И в конце типа итог викторины.
Сама запарка состоит в том, что я изучал объектно-ориентированные языки, а теперь начал изучать РНР: скачал проги, видеоуроки. Но все таки не все там есть.
Помогите со скриптом таймера и с логикой смены информации на странице.
ДОПОЛНЕНИЕ.
Я просто в РНР и JavaScript еще очень мало знаю, но просто сайт очень нужен.
Дело в том, что мне требуется таймер один для всех, чтобы не влияло на обновление страницы и т.п. Например: я ставлю время до начала всей логики и все отсчет пошел, по окончанию таймера показывается авторизация, дальше проходят только те кто авторизовался (причем на авторизацию тоже дается определенное время - 5 минут), остальные могут только присоединится к игре. Смена вопросов происходит для всех пользователей одновременно.
Может вы мне что-нибудь подскажите, посоветуете или может ссылку какую-нибудь. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 11:02)
| | Таймер то смастерить можно, но что если пользователь отключит JS в браузере?
Вобщем не всё так просто как вам кажется. В вашем случае нужно два таймера, один тикает на сервере другой в браузере у пользователя. И если пользователь отключит JS, то кроме проблем он себе ничего не выгадает. Таймер в браузере нужен только для визуального отображения времени на ответ, на него не надо завязывать никакую функцирональность.
А рефрешь страницы производить чисто средствами ХТМЛ:
<META HTTP-EQUIV="Refresh" CONTENT="5; URL=scriptname.php">
|
| |
|
|
|
|
|
|
|
для: Valick
(08.12.2008 в 11:10)
| | Вы немогли бы дать пример или ссылку на, как я понял, Двойной таймер? | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 11:32)
| | Да нету у меня никаких ссылок))) есть голова которой надо думать. Я вам даю подсказки, и если этого мало, то врядли я смогу вам помочь. | |
|
|
|
|
|
|
|
для: Valick
(08.12.2008 в 11:43)
| | Еще раз повторю, что я сам плохо разбираюсь в написании кода, но переделать или модифицировать код под мои нужды я могу, вот я и прошу примеры или ссылки. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 11:02)
| | я бы посоветовала почитать книжки и начать делать самому, а не клянчить на форумах.
за вас никто не будет делать сайт, который вам очень нужен. есть чудесная книжица
"Flash+XML". там очень подробно на примерах показано, как создать викторину. про PHP
там тоже есть. | |
|
|
|
|
|
|
|
для: elenaki
(08.12.2008 в 11:12)
| | Я сайт уже почти создал, и мне просто нужна помошь где я сам разобраться немогу. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 11:02)
| | А если окно ввода пароля не "вылазит" и без всякого таймера. Зачем таймер для ввода пароля? Сразу предложить такой ввод нельзя? А уж остальное AJAX запросы, кои тут описывались уже не один раз. | |
|
|
|
|
|
|
|
для: sim5
(08.12.2008 в 11:38)
| | Таймер нужен не для ввода пароля, а ДО ввода пароля. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 11:41)
| | Это я понял, но зачем? | |
|
|
|
|
|
|
|
для: sim5
(08.12.2008 в 11:44)
| | Просто викторина будет проводится в определенное время, которое я буду устанавливать сам через админку, а на сайте будет таймер до этого времени. Авторизация требуется только для того чтобы авторизированные пользователи могли участвовать в игре и входили в определенное время. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 12:03)
| | авторизированные пользователи могли участвовать в игре и входили в определенное время
глупости)) авторизоваться можно в любое время, а стартовать викторину в любое другое время.
Но сайт ваш и вы можете делать как хотите.
И повторяю ещё раз) кодов у меня нет... этот код надо просто сесть и написать. А учитывая то что сайт у вас готов, то кроме вас этот модуль (по сути движок всей викторины, а не только таймер) никто не напишет. Это довольно объёмный код и либо вы начинаете его писать сами а мы вам помогаем, либо всё это делается на заказ, за определённую сумму денег. | |
|
|
|
|
|
|
|
для: Valick
(08.12.2008 в 12:20)
| | Сайт у меня почти готов, но на локальном сервере.
Вот именно, я немогу найти код таймера, который мог бы вставить в свой сайт.
Если вы хотя бы примерный код мне дадите и напишите - я бы переделал и модифицировал его сам.
Сам принцип работы таймера я понимаю, и уже примерно знаю как он будет работать, но как пишется таймер незнаю. Мне что то типо "пинка" надо. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 12:29)
| | Вы безнадёжны)))
таймер
На сервере же совсем другой принцип, там просто регистрируется время посылки формы пользователю и сравнивается со временем когда от него получен ответ. | |
|
|
|
|
|
|
|
для: Valick
(08.12.2008 в 12:50)
| | Дело в том что пользователь не отвечает на вопросы нажатием на кнопки или выполнение каких либо других действий. Вопросы идут просто как слайд-показ с обновлением в 5-10 минут. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 12:29)
| | 1. На странице надо иметь место под таймер - любой тег, который имеет свойство innerHTML. Например, <SPAN>, <DIV>, <TD>...
2. Этому тегу (месту) назначаете уникальный ID. Например, <SPAN ID="tim01"></SPAN>
3. Между тегами <HEAD> и </HEAD> вставляете скриптовой блок, который будет содержать функцию, коя запустится по окончании загрузки HTML-содержания страницы и которая запустит таймер обратного отсчёта.
4. Определяетесь с продолжительностью тайм-аута и с периодом изменения показаний таймера. Например, тайм-аут равен 60 секундам, а показания изменяются посекундно.
5. Определяетесь с событием, кое должно произойти после окончания работы таймера. Например, место под таймер должно стать невидимым, а форма с логином/паролем, наоборот, должна стать видимой. (Положим, форма с паролем оформлена в виде <FORM NAME="myForm" style="display: none">)
В итоге:
<script>
var TA = 60; //тайм-аут в секундах
var CT = 1; //период изменения показаний таймера
onload = function myTimer ()
{
if (TA > 0)
{
TA--;
document.getElementById ('tim01').innerHTML = ((TA < 10) ? '0' : '') + '' + TA;
setTimeout (myTimer, CT * 1000);
}
else
{
document.getElementById ('tim01').style.display = 'none';
document.getElementById ('myForm').style.display = 'block';
}
}
</script>
|
| |
|
|
|
|
|
|
|
для: PAT
(08.12.2008 в 12:51)
| | Спасиб!!! Это уже кое-что. Щас попробую. | |
|
|
|
|
|
|
|
для: PAT
(08.12.2008 в 12:51)
| | я определил место под таймер взял тэг <TD>
<td id="tim01"></td>
Поставил предложенный скрипт между тегами <HEAD> и </HEAD>
Дописал в сво-вах формы
<FORM NAME="myForm" style="display: none" METHOD=POST>
Но неотображается ни таймер, ни форма (кстати тайм-аут я поставил 15 сек). | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 13:21)
| | >неотображается ни таймер, ни форма
То, что не отобразилась форма - согласен. Это у меня ошибка - обратился к форме по ID, которого у формы нет. Последнюю строку функции задо заменить на следующую - document.forms.myForm.style.display = 'block';
А вот то, что у вас не отображается таймер - это уже ваша ошибка. Ищите её сами. | |
|
|
|
|
|
|
|
для: PAT
(08.12.2008 в 13:42)
| | Все проверил - не работает. Форма все равно не отображается.
А разве отсчет может писаться просто как <span id="tim01"></span>?
Вообщем функция не обращается к <span>? Вот что я понял. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 14:08)
| | >Вот что я понял
Вы не поняли НИЧЕГО.
Для начала вам надо сделать страницу с МИНИМАЛЬНЫМ заполнением её кодом.
Т.е. между <body> и </body> должно быть только три НЕОБХОДИМЫХ для проверки работоспособности скрипта тега, а именно:
<span id="tim01"></span>
<form name="myForm" style="display: none">
<input name="tst">
</form>
|
а между <head> и </head> - предложенный выше скрипт БЕЗ КАКИХ-ЛИБО ИЗМЕНЕНИЙ.
Затем вам надо запустить эту страницу.
И убедиться в её работоспособности.
И только ПОСЛЕ ЭТОГО вносить какие-то свои изменения, а именно:
- менять значение тайм-аута (и СРАЗУ проверять);
- менять код формы (и СРАЗУ проверять);
- менять место под таймер (и СРАЗУ проверять);
- что-то ещё (и СРАЗУ проверять).
И если после какой-то из проверок скрипт перестанет работать - тогда вы САМИ убедитесь, что руки кривые именно У ВАС и что не стОит здесь на форуме вам самому ВСЕМ об этом МНОГО-МНОГО раз сообщать ("у меня не работает!")
И только тогда вы не будете здесь задавать ИДИОТСКИХ вопросов типа "А разве отсчет может писаться просто как <span id="tim01"></span>?" | |
|
|
|
|
|
|
|
для: PAT
(08.12.2008 в 14:16)
| | Извиняюсь!!!!
Теперь понял - но надо было сразу писать:
Для начала вам надо сделать страницу с МИНИМАЛЬНЫМ заполнением её кодом. | |
|
|
|
|
|
|
|
для: PAT
(08.12.2008 в 14:16)
| | Хорошо проверил работает!!! Спасиб!!!
А как сделать чтобы не зависело от обновления страницы? | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 14:39)
| | >А как сделать чтобы не зависело от обновления страницы?
Чтобы что "не зависело"? | |
|
|
|
|
|
|
|
для: PAT
(08.12.2008 в 15:46)
| | Чтобы таймер не сбрасывался при обновлении страницы или перезагрузки браузера. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 16:02)
| | Сделать, конечно, можно... Через куки, или через свойство name окна...
Только вот не понимаю смысла этой примочки. | |
|
|
|
|
|
|
|
для: PAT
(08.12.2008 в 16:36)
| | Я поставлю время до начала игры, и игра начнется для всех одновременно. | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 19:36)
| | Мда... изъяснятесь вы, конечно, весьма путано.
Как я понимаю, задача ваша следующая:
1. установили вы время начала игры в 20:00 10 декабря 2008 года по мсковскому времени
2. каждый открывший вашу страницу до 20:00 MSK 10 декабря 2008 года должен увидеть - сколько дней:часов:минут:секунд до начала игры осталось.
3. и у каждого, кто будет на странице ровно в 20:00 MSK 10 декабря 2008 года, должна появиться форма с логином/паролем.
Правильно я понял теперь вашу задачу?
Если "правильно", то идите-ка вы снова на форум PHP - перепишите там все три пункта написанного здесь мною и тогда именно там вам ответят.
Только не забудьте там ещё и ВНЯТНО объяснить - что же должны увидеть те, кто зайдёт на страницу только в 20:15 MSK 10 декабря 2008 года - уже ПОСЛЕ установленного вами время начала игры.
И, кроме того, не называйте на форуме PHP это дело "таймером". Ибо это - не таймер.
PS. Советы (ВСЕ, и мои, и прочих ваших помощников в этой теме) сути вашей задачи не решают.
PS2. И вообще посоветую вам бросить это дело. Ибо если вы здесь на форуме объяснить ни фига не можете, то как вы на реальной странице объясните игрокам правила игры? :-) | |
|
|
|
|
|
|
|
для: PAT
(08.12.2008 в 22:53)
| | Вы меня поняли, и я уже точнее сформулировал желаемые действия.
Новый форум:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=60716&page=1 | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 16:02)
| | Тут уже через пхп назначать тайм аут яваскрипту.
В базе, например, хранить когда таймер должен истечь, ну и соответственно отнимать время сейчас от времени окончания таймера. | |
|
|
|
|
|
|
|
для: sl1p
(08.12.2008 в 19:11)
| | Это конечно можно и даже нужно. Но вот как привязать серию событий на конец отсчета? | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 19:38)
| | привязать скрипт к Cron'y | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 19:38)
| | Самое идеальное будет использовать ajax -- красиво и удобно.
Поищите в этом форуме, топиков тьма.
Я похожую штуку хотел сделать только в качестве комнаты в чате, лень стало и забил до неопределённого времени:) | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 19:38)
| | Пойдемте, попробуем решить Вашу проблему, раз так сильно надо. Только предупреждаю - это гораздо сложнее, чем Вам кажется.
Сюда | |
|
|
|
|
|
|
|
для: Dmitry_RM
(08.12.2008 в 11:02)
| | Вот есть такой скрипт таймера, он работает, но не делит на часы/минуты:
<SCRIPT LANGUAGE="JavaScript">
var g_iCount = new Number();
var g_iCount = 100;
function startCountdown(){
if((g_iCount - 1) >= 0){
g_iCount = g_iCount - 1;
numberCountdown.innerText = '00:00:' + g_iCount;
setTimeout('startCountdown()',1000);
}
}
</script>
И есть еще скрипт который только делит на дни, часы, минуты, секунды:
<?
$time=4654654;
$day=floor($time/86400);
$hours=floor(($time/3600)-$day*24);
$min=floor(($time-$hours*3600-$day*86400)/60);
$sec=$time-($min*60+$hours*3600+$day*86400);
echo "Дни - $day : Часы - $hours : Минуты - $min : Секунды - $sec";
?>
Есть мысли? Я кочечно сейчас и сам подумаю может получиться справиться. | |
|
|
|
|