Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обратился в РНР, мне посоветовали сюда.
 
 автор: Dmitry_RM   (08.12.2008 в 11:02)   письмо автору
 
 

Здрасьте!!!
Я пишу сайт типо викторины. Я уже все почти сделал осталось на главной странице поставить такую логику:

- Сперва на странице появляется таймер с обратным отсчетом времени (ну типа до начала осталось).
- Потом когда таймер по нулям - вылазит окно ввода пароля и логина (окно готово, надо только в логику вставить)
- Далее вопрос с вариантами ответа (10 вопросов, рефрешь каждые 5 мин с автоматической сменой вопроса)
- И в конце типа итог викторины.


Сама запарка состоит в том, что я изучал объектно-ориентированные языки, а теперь начал изучать РНР: скачал проги, видеоуроки. Но все таки не все там есть.

Помогите со скриптом таймера и с логикой смены информации на странице.


ДОПОЛНЕНИЕ.

Я просто в РНР и JavaScript еще очень мало знаю, но просто сайт очень нужен.

Дело в том, что мне требуется таймер один для всех, чтобы не влияло на обновление страницы и т.п. Например: я ставлю время до начала всей логики и все отсчет пошел, по окончанию таймера показывается авторизация, дальше проходят только те кто авторизовался (причем на авторизацию тоже дается определенное время - 5 минут), остальные могут только присоединится к игре. Смена вопросов происходит для всех пользователей одновременно.

Может вы мне что-нибудь подскажите, посоветуете или может ссылку какую-нибудь.

   
 
 автор: Valick   (08.12.2008 в 11:10)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 11:02)
 

Таймер то смастерить можно, но что если пользователь отключит JS в браузере?
Вобщем не всё так просто как вам кажется. В вашем случае нужно два таймера, один тикает на сервере другой в браузере у пользователя. И если пользователь отключит JS, то кроме проблем он себе ничего не выгадает. Таймер в браузере нужен только для визуального отображения времени на ответ, на него не надо завязывать никакую функцирональность.
А рефрешь страницы производить чисто средствами ХТМЛ:
<META HTTP-EQUIV="Refresh" CONTENT="5; URL=scriptname.php">

   
 
 автор: Dmitry_RM   (08.12.2008 в 11:32)   письмо автору
 
   для: Valick   (08.12.2008 в 11:10)
 

Вы немогли бы дать пример или ссылку на, как я понял, Двойной таймер?

   
 
 автор: Valick   (08.12.2008 в 11:43)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 11:32)
 

Да нету у меня никаких ссылок))) есть голова которой надо думать. Я вам даю подсказки, и если этого мало, то врядли я смогу вам помочь.

   
 
 автор: Dmitry_RM   (08.12.2008 в 12:05)   письмо автору
 
   для: Valick   (08.12.2008 в 11:43)
 

Еще раз повторю, что я сам плохо разбираюсь в написании кода, но переделать или модифицировать код под мои нужды я могу, вот я и прошу примеры или ссылки.

   
 
 автор: elenaki   (08.12.2008 в 11:12)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 11:02)
 

я бы посоветовала почитать книжки и начать делать самому, а не клянчить на форумах.
за вас никто не будет делать сайт, который вам очень нужен. есть чудесная книжица
"Flash+XML". там очень подробно на примерах показано, как создать викторину. про PHP
там тоже есть.

   
 
 автор: Dmitry_RM   (08.12.2008 в 11:31)   письмо автору
 
   для: elenaki   (08.12.2008 в 11:12)
 

Я сайт уже почти создал, и мне просто нужна помошь где я сам разобраться немогу.

   
 
 автор: sim5   (08.12.2008 в 11:38)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 11:02)
 

А если окно ввода пароля не "вылазит" и без всякого таймера. Зачем таймер для ввода пароля? Сразу предложить такой ввод нельзя? А уж остальное AJAX запросы, кои тут описывались уже не один раз.

   
 
 автор: Dmitry_RM   (08.12.2008 в 11:41)   письмо автору
 
   для: sim5   (08.12.2008 в 11:38)
 

Таймер нужен не для ввода пароля, а ДО ввода пароля.

   
 
 автор: sim5   (08.12.2008 в 11:44)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 11:41)
 

Это я понял, но зачем?

   
 
 автор: Dmitry_RM   (08.12.2008 в 12:03)   письмо автору
 
   для: sim5   (08.12.2008 в 11:44)
 

Просто викторина будет проводится в определенное время, которое я буду устанавливать сам через админку, а на сайте будет таймер до этого времени. Авторизация требуется только для того чтобы авторизированные пользователи могли участвовать в игре и входили в определенное время.

   
 
 автор: Valick   (08.12.2008 в 12:20)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 12:03)
 

авторизированные пользователи могли участвовать в игре и входили в определенное время
глупости)) авторизоваться можно в любое время, а стартовать викторину в любое другое время.
Но сайт ваш и вы можете делать как хотите.
И повторяю ещё раз) кодов у меня нет... этот код надо просто сесть и написать. А учитывая то что сайт у вас готов, то кроме вас этот модуль (по сути движок всей викторины, а не только таймер) никто не напишет. Это довольно объёмный код и либо вы начинаете его писать сами а мы вам помогаем, либо всё это делается на заказ, за определённую сумму денег.

   
 
 автор: Dmitry_RM   (08.12.2008 в 12:29)   письмо автору
 
   для: Valick   (08.12.2008 в 12:20)
 

Сайт у меня почти готов, но на локальном сервере.

Вот именно, я немогу найти код таймера, который мог бы вставить в свой сайт.
Если вы хотя бы примерный код мне дадите и напишите - я бы переделал и модифицировал его сам.

Сам принцип работы таймера я понимаю, и уже примерно знаю как он будет работать, но как пишется таймер незнаю. Мне что то типо "пинка" надо.

   
 
 автор: Valick   (08.12.2008 в 12:50)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 12:29)
 

Вы безнадёжны)))
таймер
На сервере же совсем другой принцип, там просто регистрируется время посылки формы пользователю и сравнивается со временем когда от него получен ответ.

   
 
 автор: Dmitry_RM   (08.12.2008 в 13:31)   письмо автору
 
   для: Valick   (08.12.2008 в 12:50)
 

Дело в том что пользователь не отвечает на вопросы нажатием на кнопки или выполнение каких либо других действий. Вопросы идут просто как слайд-показ с обновлением в 5-10 минут.

   
 
 автор: PAT   (08.12.2008 в 12:51)   письмо автору
 
   для: 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>

   
 
 автор: Dmitry_RM   (08.12.2008 в 12:57)   письмо автору
 
   для: PAT   (08.12.2008 в 12:51)
 

Спасиб!!! Это уже кое-что. Щас попробую.

   
 
 автор: Dmitry_RM   (08.12.2008 в 13:21)   письмо автору
 
   для: PAT   (08.12.2008 в 12:51)
 

я определил место под таймер взял тэг <TD>
<td id="tim01"></td>

Поставил предложенный скрипт между тегами <HEAD> и </HEAD>

Дописал в сво-вах формы
<FORM NAME="myForm" style="display: none" METHOD=POST>

Но неотображается ни таймер, ни форма (кстати тайм-аут я поставил 15 сек).

   
 
 автор: PAT   (08.12.2008 в 13:42)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 13:21)
 

>неотображается ни таймер, ни форма

То, что не отобразилась форма - согласен. Это у меня ошибка - обратился к форме по ID, которого у формы нет. Последнюю строку функции задо заменить на следующую - document.forms.myForm.style.display = 'block';

А вот то, что у вас не отображается таймер - это уже ваша ошибка. Ищите её сами.

   
 
 автор: Dmitry_RM   (08.12.2008 в 14:08)   письмо автору
 
   для: PAT   (08.12.2008 в 13:42)
 

Все проверил - не работает. Форма все равно не отображается.

А разве отсчет может писаться просто как <span id="tim01"></span>?
Вообщем функция не обращается к <span>? Вот что я понял.

   
 
 автор: PAT   (08.12.2008 в 14:16)   письмо автору
 
   для: 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>?"

   
 
 автор: Dmitry_RM   (08.12.2008 в 14:32)   письмо автору
 
   для: PAT   (08.12.2008 в 14:16)
 

Извиняюсь!!!!
Теперь понял - но надо было сразу писать:
Для начала вам надо сделать страницу с МИНИМАЛЬНЫМ заполнением её кодом.

   
 
 автор: Dmitry_RM   (08.12.2008 в 14:39)   письмо автору
 
   для: PAT   (08.12.2008 в 14:16)
 

Хорошо проверил работает!!! Спасиб!!!
А как сделать чтобы не зависело от обновления страницы?

   
 
 автор: PAT   (08.12.2008 в 15:46)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 14:39)
 

>А как сделать чтобы не зависело от обновления страницы?

Чтобы что "не зависело"?

   
 
 автор: Dmitry_RM   (08.12.2008 в 16:02)   письмо автору
 
   для: PAT   (08.12.2008 в 15:46)
 

Чтобы таймер не сбрасывался при обновлении страницы или перезагрузки браузера.

   
 
 автор: PAT   (08.12.2008 в 16:36)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 16:02)
 

Сделать, конечно, можно... Через куки, или через свойство name окна...
Только вот не понимаю смысла этой примочки.

   
 
 автор: Dmitry_RM   (08.12.2008 в 19:36)   письмо автору
 
   для: PAT   (08.12.2008 в 16:36)
 

Я поставлю время до начала игры, и игра начнется для всех одновременно.

   
 
 автор: PAT   (08.12.2008 в 22:53)   письмо автору
 
   для: 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. И вообще посоветую вам бросить это дело. Ибо если вы здесь на форуме объяснить ни фига не можете, то как вы на реальной странице объясните игрокам правила игры? :-)

   
 
 автор: Dmitry_RM   (09.12.2008 в 07:13)   письмо автору
 
   для: PAT   (08.12.2008 в 22:53)
 

Вы меня поняли, и я уже точнее сформулировал желаемые действия.
Новый форум:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=60716&page=1

   
 
 автор: sl1p   (08.12.2008 в 19:11)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 16:02)
 

Тут уже через пхп назначать тайм аут яваскрипту.
В базе, например, хранить когда таймер должен истечь, ну и соответственно отнимать время сейчас от времени окончания таймера.

   
 
 автор: Dmitry_RM   (08.12.2008 в 19:38)   письмо автору
 
   для: sl1p   (08.12.2008 в 19:11)
 

Это конечно можно и даже нужно. Но вот как привязать серию событий на конец отсчета?

   
 
 автор: elenaki   (08.12.2008 в 19:45)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 19:38)
 

привязать скрипт к Cron'y

   
 
 автор: sl1p   (08.12.2008 в 22:21)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 19:38)
 

Самое идеальное будет использовать ajax -- красиво и удобно.
Поищите в этом форуме, топиков тьма.
Я похожую штуку хотел сделать только в качестве комнаты в чате, лень стало и забил до неопределённого времени:)

   
 
 автор: Николай2357   (09.12.2008 в 04:13)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 19:38)
 

Пойдемте, попробуем решить Вашу проблему, раз так сильно надо. Только предупреждаю - это гораздо сложнее, чем Вам кажется.
Сюда

   
 
 автор: Dmitry_RM   (08.12.2008 в 12:52)   письмо автору
 
   для: 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";

?>

Есть мысли? Я кочечно сейчас и сам подумаю может получиться справиться.

   
 
 автор: Dmitry_RM   (09.12.2008 в 07:14)   письмо автору
 
   для: Dmitry_RM   (08.12.2008 в 11:02)
 

ЭТА ТЕМА ЗАКРЫТА!!!

Загляни на эту:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=60716&page=1

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования