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

Форум PHP

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

 

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

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

тема: Задать отсчет времени
 
 автор: Ванек2010   (21.01.2010 в 03:04)   письмо автору
 
 

Подскажите как реализовать вот такую задачку.
У меня есть 30 вопросов, схема вопросов такая.
Идет вопрос, ниже варианты ответов с группой переключателей.
Задача такая, задать время на выполнение вопросов например 2 минуты, после чего нажать кнопку submit автоматически.
Буду благодарен за помощь =)

  Ответить  
 
 автор: tvv123456   (21.01.2010 в 04:19)   письмо автору
 
   для: Ванек2010   (21.01.2010 в 03:04)
 

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

Дам вам вырезку кода(таймер) из моего последнего заказа(игры):


<script language="JavaScript">
function timer() {
    clck=document.getElementById("clock")    
    if(was_ans) { clck.style.color='#00f';
    
            
            }
            
        
        if(t>15)      clck.style.color='#f00'
        else if(t>10) clck.style.color='#f06'
        else if(t>7) clck.style.color='#f0c'
        else if(t>5) clck.style.color='#c0f'
        else if(t>3) clck.style.color='#60f'
        else if(t>=0 || t<0) clck.style.color='#00f'
        clck.innerHTML = "<b>" + (20-t) + "</b>"
        t++
        handlertimer = setTimeout("timer()",1000)
        
    if(t>20) {
        clearTimeout(handlertimer)
        if(!was_ans)
        {
            was_ans = true
        numa=0
        ans_ajax()
                }
            
        
        }
}


Код конечно написан под определенный сайт, но попробуйте разобраться что к чему и тогда вы без труда сами ответите на свой вопрос

некоторые пояснения к коду:
was_ans=true если был выбран вариант ответ, при загрузке следуещего вопроса was_ans принимает значение false
numa - вариант ответа
ans_ajax() - функция которая принимает ответ(сравнивает его с правильным) и передает эстафету функции, которая загружает вопрос
Также скажу специально для вас, что необходимо для начала определить переменную t

в принципе тут поставлено 20 секунд но что мешает сделать 120 секунд? А при t>120запустить функцию, которая запустит следующий вопрос и не защитает этот

Надеюсь вы это делаете не по курсу Евгения Попова? :)

  Ответить  
 
 автор: Ванек2010   (21.01.2010 в 11:24)   письмо автору
 
   для: tvv123456   (21.01.2010 в 04:19)
 

чесно говоря я 0 в JavaScript..
Если что-то изменять, я сам не пойму что изменил, кроме времени t.
У меня все 8 тестов находятся на странице test.php.
И следущий подгружается после того, как нажали кнопку предыдущего.
Но суть в том, что максимальное время уделяемой не должно привышать 2 минуты.
Вот человек ответил половину теста, если не успел то все, сохранить результаты, и загрузить следущий тест.
А нельзя какой-то по проще скрпит?
Я его представляю таким, JavaScript будет автоматически жать на кнопку submit1 че рез такое-то время.
Потом будет жать submit2 (второй тест) через такое-то время.
Потом будет жать submit3 (третий тест) через такое-то время.
Потом будет жать submit4 (четвертый тест) через такое-то время.
Потом будет жать submit5 (пятый тест) через такое-то время.
Вот.. чтобы просто жал сам на кнопки. А формы у меня и сами сохраняют данные, который успел ответить человек.

  Ответить  
 
 автор: sim5   (21.01.2010 в 11:27)   письмо автору
 
   для: Ванек2010   (21.01.2010 в 11:24)
 

Что вам мешает контролировать время на сервере?

  Ответить  
 
 автор: buldovsky   (21.01.2010 в 13:31)   письмо автору
 
   для: Ванек2010   (21.01.2010 в 03:04)
 

Чтобы форма отправляла введенные данные на сервер регулярно через несколько секунд нужно в страницу вставить код:


<?php
// время на ответы
$time 5000;

// начальное значение
$last_question 0;

// определяем ответы на какой вопрос пришли
if(isset($_POST["last_question"])) $last_question = (int) $_POST["last_question"];

/* обрабатываем ответы на вопрос */

// выводим следующий вопрос
$now_question $last_question 1;

?>

<form action="" method="post" id="form">
 <input type="hidden" name="last_question" value="<?=$now_question?>" />
 <?php echo "Это форма $now_question вопроса <br />..."?>
</form>

<script type="text/javascript">
 function submit_form() {
  document.getElementById('form').submit()
 }
 setTimeout("submit_form()", <?=$time?>)
</script>


Только не забывайте, что человек может выключить javascript и страница перестанет обновляться и можно будет неограничено долго отвечать на вопросы.
Чтобы проверить время ответа на сервере, нужно запоминать (в базе или файлах) время начала теста и при получении ответов сверять с текущим временем

  Ответить  
 
 автор: Ванек2010   (21.01.2010 в 17:00)   письмо автору
 
   для: buldovsky   (21.01.2010 в 13:31)
 

Блин мне нужно очень простой скриптек.
Который бы просто жал кнопку submit1 по истечению 2 минут.
Потом жал submit2 по истечению 2 минут.
Потом жал submit3 по истечению 2 минут.
И так до submit8.
Просто жал на кнопку и все... больше не чего дополнительного не нужно.

  Ответить  
 
 автор: buldovsky   (21.01.2010 в 17:32)   письмо автору
 
   для: Ванек2010   (21.01.2010 в 17:00)
 

Нажимая на кнопку submit вы не просто отправляете переменные серверу, вы еще и получаете его ответ, который приведет к обновлению текущей (по умолчанию) страницы.

Чем вас не устраивает вариант выше?

  Ответить  
 
 автор: Ванек2010   (21.01.2010 в 19:00)   письмо автору
 
   для: buldovsky   (21.01.2010 в 17:32)
 

Да нет спасибо, в JS разделе, дале более простой...
Меня теперь интерисует вот это
Чтобы проверить время ответа на сервере, нужно запоминать (в базе или файлах) время начала теста и при получении ответов сверять с текущим временем
Ну в базу я занесу например 120.
Потом я думаю, когда человек попадает на данную страницу запустить таймер и потом сверить время из базы и врея ща которое он провел на странице, если меньше или равно то успешно, а иначе послать.
Теперь из этого такой вопрос, с помощью чего запускаеться таймер? Ну или время , вообщем с помощью какой функции..

  Ответить  
 
 автор: sim5   (21.01.2010 в 19:09)   письмо автору
 
   для: Ванек2010   (21.01.2010 в 19:00)
 

Я случайно забрел на ваш сайт, и хотя я не любитель всяких тестов, опросов и вопросов, допустим, вы меня заинтриговали, и я решил на них ответить.
Я читаю ваш первый вопрос, но тут ко мне пришла бабушка (пироги принесла), и как любящий внучек, я кушая пироги, беседую с бабушкой, а вы в это время поставили меня "на счетчик".
И не просто на счетчик - по истичении 2 минут, без моего ведома мне будет предложен второй вопрос (я так понимаю, иначе смысла вообще нет в ваших "бросках" на сервер), затем третий, четвертый... (я все еще пироги кушаю).
В общем, проводив бабушку домой, я увижу на мониторе ваше резюме - "Вы ни на один вопрос не ответили во время. Вы козел!". И что к чему? Лично я, да и не только я, не люблю когда меня в чем-то принуждают, а вот на просто таймер, который бы инфомировал меня (без всяких новых вопросов без моего ведома) об истичении времени (тестового), я бы не обиделся. Да и айкю бы мой не пострадал по вашей вине. ;-)

  Ответить  
 
 автор: Ванек2010   (21.01.2010 в 19:48)   письмо автору
 
   для: sim5   (21.01.2010 в 19:09)
 

Перед тем как пользватель нажмет на тест, его 100 раз переспросят и скажут, что тест проходит в ограниченное время, и это уже не наши проблемы почему к нему пришла бабушка =) Согласись.
Он нажал согласие и время пошло.
Другим способом без ограничивания времени этот тест потеряет свой смысл и актуальность. Вот такие жесткие условия, за то на выходе правда, а не то что он будт думать месяц и придумает все правельные ответы =)
Так как время задать, с помощью какой функции?

  Ответить  
 
 автор: sim5   (21.01.2010 в 19:52)   письмо автору
 
   для: Ванек2010   (21.01.2010 в 19:48)
 

Во-первых, этикет предполагает не тыкать ;-)
Во-вторых, что-то я не увидел в вашей просьбе на скрипт, даже и намека на подтверждение согласия условий ваших.
Ну коли у вас сверх задача, не спорю, вам надо, а хозяин барин.
Время не задается, время можно узнать с помощью функции time().

  Ответить  
 
 автор: Valick   (21.01.2010 в 20:20)   письмо автору
 
   для: Ванек2010   (21.01.2010 в 19:48)
 

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

  Ответить  
 
 автор: Ванек2010   (22.01.2010 в 00:37)   письмо автору
 
   для: Valick   (21.01.2010 в 20:20)
 

нет, тест предпологает выполнение за 2 минуты, то что успели выполнить сохранить и дать следущий тест.

  Ответить  
 
 автор: Ванек2010   (22.01.2010 в 01:20)   письмо автору
 
   для: Ванек2010   (21.01.2010 в 03:04)
 

Кстати такой вопрос, авторам книги php5/6 3 издание.
Там есть такой момент
<?

$begin 
gettimeofday(TRUE);

for(
$i 0$i 5$i++)
{

sleep(1);
}

$end gettimeofday(TRUE);
echo 
"Скрипт выполняется ".($end $begin)." секунд";


?>

Это код показывает сколько времени выполняется скрипт, но что то он не хочет работать:/

  Ответить  
 
 автор: tvv123456   (22.01.2010 в 02:02)   письмо автору
 
   для: Ванек2010   (22.01.2010 в 01:20)
 

Извини, но изучай все-таки те скрипты которые тебе предложены. Ты написал: я в яваскрипте 0; дак в чем проблема? Я вам написал в руки учебник и разбирайтесь в том что я вам написал и что написали вам другие. Нужно тупо научиться думать и понимать чужие скрипты. Вы же хотите выехать на всем готовеньком как предлогает ваш учитель - Попов, не хочу ничего сказать плохого об его уроках, но из знаний они вам ни дадут ничего просто научат вас как обезьяну выполнять элементарные команды,а в программирование главное думать!!!!!. Насчет последнего вашего сообщения(сколько времени выполняеться скрипт): вы вообще хоть чуть-чуть улавливаете что должен делать скрипт? Если нет, то позор вашему учителю и пусть у него уже диски покупать перестанут!

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

  Ответить  
 
 автор: Ванек2010   (22.01.2010 в 03:32)   письмо автору
 
   для: tvv123456   (22.01.2010 в 02:02)
 

Да по сравнению с книгой, Попов объясняет так, что обезьяна поймет.
В книге таким языком профессиональным написано, что хрен че поймешь.
Попов правильно говорил, как будто для своего друга пишет ей богу.
Или может я такой лузер что не че там не пойму.
Все что расказывает Попов, очень понятно и доступно.
А ваши реплики типо думай сам делай сам, извени если я в JS 0, я и останусь там 0 потому что нету базы первоночальной, а в книге написано профессионально с моей точки зрения. В php я не полный ноль, потому что уроки Попова действительно помогают. Пусть он не все функции рассказывает, пусть не все моменты, но это в 150 раз легче, понятнее чем книга! По крайне мере для меня.
А думать я умею, но методом тыка подставлять пол дня я чесна говоря зблся, и если что-то прошу, прошу уже готовое из JS.
Вот вы сказали про страницу проигрыша, и как это реализовать? Бежать мне на яндекс и пол дня там юзать все? Я б с удовольствием, но в данный месяц у меня совсем нету время, бегать по яндексу и стараюсь просить помощи тут на месте.

  Ответить  
 
 автор: tvv123456   (22.01.2010 в 03:38)   письмо автору
 
   для: Ванек2010   (22.01.2010 в 03:32)
 

>Он лучше расказывает он лучше делает.
А вы уверены?
Он дает базу!!
А на основе этой базы потрудитесь научиться думать и понимать сложные книжки. Он делает это чтоб заработать бабосы. А заработать(с его точки зрения) можно на безграмотных нубах. Вы просто включите свое понимание. Поймите, что к чему. Для чего нужна та или иная функция. Многие не знают php на 100%, но если они умеют думать, то подобрать нужную функцию это просто, а если не смог сам то на форуме тебе помогут, но нужно просто включить мозг

Я дак не то что в Php я вообще везде полный 0, но я сделал классную игру на яваскрипте и пишу сайты для клиентов, главное терпение, мне здесь помогали и не раз но нужно только понять что ты просишь

И что касаеться яваскрипта:
Яваскрипт эта такая по идее класная вещь, но вот проблема: яваскрипт интерпритируеться браузарами, следовательно он может в разных браузерах интерпретироваться по разному, тут возникает проблема кроссбраузерности, но тему которую вы создали никаким боком не задевает php

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

  Ответить  
 
 автор: Valick   (22.01.2010 в 09:59)   письмо автору
 
   для: Ванек2010   (22.01.2010 в 03:32)
 

Вы просите помощи и абсолютно не слушаете, что вам говорят. Задача программиста избавить пользователя от каких либо проблем, а Вы их методично создаете.
Выводить на страницу одновременно семь вопросов и давать по 2 минуты для каждого - это просто глупо. Кто Вам сказал, что я буду отвечать на вопросы в том порядке в котором они представлены? Прежде чем браться за реализацию чего-либо, нужно грамотно поставить задачу и этому Вы никогда не научитесь у Попова. Я Вас перкрасно понимаю, огромное желание кодить, в голове тысяча идей, мозг кипит, руки кодят.. я сам был такой, но вовремя остановился. И раз уж Вы и так ограничены во времени, то мой Вам совет: не тратьте свое время, читайте книги, учитесь ставить задачу, грамотно задавайте вопросы, попытайтесь ответить на вопросы других участников форума и примерно через год или полтора Вы поймете о чем я сейчас говорю.

  Ответить  
 
 автор: Ванек2010   (22.01.2010 в 12:02)   письмо автору
 
   для: Valick   (22.01.2010 в 09:59)
 

Я задачу поставил граматно, тест должен проходить в течении 2 минут.
За то время что успели ответить запоминается. Дается следущий тест #2.
2 минуты ограничение, то что успел ввести запоминается.
По сумме 8 тестов, будет общий бал.
Не нужно меня учить в плане построения работы теста.
И как вы назвали избавить от проблем? Это не проблема, а очень важный момент теста.
Повторяю еще раз, без которого этот тест не был бы актуальным.
И причем тут Попов?

  Ответить  
Rambler's Top100
вверх

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