Программирование с нуля - это совсем просто! 108) Курс PHP: Делаем психологический тест - 2
Школа программирования
108) Курс PHP: Делаем психологический тест - 2
Последний выпуск по PHP - был в выпуске N 105.
Завершаем психологический тест.
Теперь дополним программу средствами получения от пользователя номера ответа (с помощью кнопок-флажков) и подсчета результата.
Для этого воспользуемся уже изученным нами полем формы radio:
<input type=radio name=vopros value=1>
<input type =radio name= vopros value=2>
<input type =radio name= vopros value=3>
Соответствующее значение (1, 2 или 3) варианта ответа, который пользователь выберет в форме, будет доступен в сценарии в
виде переменной формы vopros:
print $_POST["vopros"];
Каждому полю ответа должен соответствовать свой текст вопроса. Сделать это можно в сценарии, например, так:
Недостаток такого кода в том, что выводиться тексты ответов будут вместе с их оценками в баллах (последний символ). Чтобы
этого не происходило, введем промежуточную переменную $sv, в которую запишем текст вопроса без последнего символа.
$sv = $Asks[ $vopros_no ][ $i ];
Проще всего сделать это с помощью мощной функции PHP для выделения подстроки - substr(). В качестве ее первого параметра
указывается строка для анализа, в качестве второго - начальная позиция символа (начиная с нуля), с которого будет выделяться
подстрока, и затем - длина выделяемой подстроки. Если третий параметр опущен, значит, будет вырезан весь остаток до конца.
Первый параметр может быть отрицательным, что означает, что отсчет ведется не с начала, а с конца строки. Если указывается
отрицательное значение третьего параметра, значит, надо брать не подстроку такой длины, а отбрасывать заданное число символов
с конца строки.
В нашем случае лучше всего подходит вариант с отрицательным третьим параметром:
$sv = substr( $sv, 0, -1 );
Итогом будет строка, у которой отброшен последний символ.
Остается только добавить в скрипт переменную, в которой будет храниться сумма ответов на вопросы (инициализация ее нулем
может выполняться в момент регистрации сессии), и увеличивать ее в зависимости от номера текущего вопроса и сделанного пользователем
ответа. Конкретное количество баллов, которое необходимо прибавить к сумме, хранится в массиве вопросов - в виде того последнего
символа, который мы отбросили.
В PHP нет различий между представлением числа непосредственно в виде числа, или же в виде строки в кавычках. Так, оба следующих
выражения будут корректны:
$n = 10;
$n += 15;
и
$n = 10;
$n += "15";
Поэтому мы можем просто использовать последний символ в каждом ответе как число. Выделить этот символ можно с помощью упомянутой
функции substr():
Задание. Завершите программу тестирования, выдавая в зависимости от суммы баллов одно из финальных сообщений. По завершении
теста выполните закрытие сессии.