КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Страница выбора теста
Рисунок 2.4 - Страница выбора теста
На этой странице выводятся все тесты, которые есть в базе данных. При входе на эту страницу из СЕССИИ выясняется, какой тестируемый будет проходить тесты: $pid = $_SESSION['pid']; Затем подключаемся к БД $db = mysql_connect("localhost","w0rt","qwerty"); mysql_select_db("imi-test",$db); Делаем выборку регистрационных данных, по PID $result = mysql_query("SELECT * FROM registr WHERE pid='$pid'",$db); $myrow = mysql_fetch_array($result); Вытаскиваем данные тестируемого для отображения на сайте, что-бы если произошла ошибка было наглядно, что вход произошёл под другими данными тестируемого: $name = $myrow['name']; $last_name = $myrow['last_name']; $otchestvo = $myrow['otchestvo']; echo " $name $last_name $otchestvo"; Делаем выборку из БД описания к тестам: $result_test = mysql_query("SELECT * FROM test_string",$db); $myrow_test = mysql_fetch_array($result_test); Вывод тестов реализован при помощи цикла DO-WHILE, при помощи этого цикла выводится описание теста, и кнопка перехода к тесту. В каждом блоке описания теста своя форма, со скрытыми полями, что бы передать странице test.php идентификатор выбранного теста на вывод. do { echo "<form method=\"post\" action=\"test.php\"> echo $myrow_test['text_test'] . "<input type=\"hidden\" name=\"test\" value=\"" . $myrow_test['num_test'] . "\"> <input type=\"submit\" value=\"Перейти к Тесту " . $myrow_test['num_test'] ."\"> </form>"; } while ($myrow_test = mysql_fetch_array($result_test)); При нажатии кнопки с выбранным тестом, все данные формы отправляются методом POST на страницу вывода тестов (test.php) На этой странице есть дополнительные проверки присутствия персонального идентификатора для правильной работы системы. Если пройдя тестирование, тестируемый нажал кнопку Выход, а потом вспомнив что не прошёл другой тест, как обычно нажмёт в браузере кнопку «Назад», то сервер выдавал выбор тестов, но персональный номер был удалён из Сессии PHP после прохода через страничку выхода из системы (exit.php) и получалось что тестируемый проходил тест, а его результаты никуда не записывались, потому что неясно серверу в какую ячейку базы данных нужно записать ответы. Для решения этой проблемы перед выводом выбора теста идёт проверка условием на присутствие идентификатора: if (isset($pid)) {код страницы} Если идентификатор отсутствует выполняется другой сценарий, сообщающий о ошибке и даюший ссылки на повторную регистрацию или повторный вход по идентификатору: else echo "<p>Отсутствует индетификатор тестируемгого <br> <a href=\"hiden_php/exit.php\">Пройдите регистрацию заного</a>или <a href=\"pid.php\">войдите по существующему ID</a></p>";
|