Здравствуйте, Александр!
Вы писали 30 апреля 2009 г., 11:12:06:
e> Написал тест, в котором зарегистрированный пользователь отвечает
e> последовательно на вопросы,
e> Мне очень сложно при необходимости редактировать вопросы теста- велика
e> вероятность ошибки даже при моей внимательности.
Не думаю, что смогу ответить на поставленные Вами вопросы, но рискну
предложить своё простое решение задачи, которое, как мне кажется,
избавит Вас от проблем редактирования вопросов теста.
Все вопросы Вы можете поместить в один файл, например
questions.txt, и забирать их в массив, используя функцию file().
Каждая строка файла - отдельный вопрос теста. Разрывов строк в тексте
вопроса быть не должно.
Для передачи текущего номера вопроса и уже полученных ответов используются скрытые
поля и метод POST html-формы. Предлагаемый способ не требует использования базы
данных и работы с сессиями, что упрощает программирование.
Все ответы записываются в одну строку с разделителем, которую легко
преобразовать в массив для обработки результатов.
Вот текст скрипта:
<?php
$questions = file("questions.txt");
$lim = count($questions) + 1;
$i = $_REQUEST['index'];
if (isset($_REQUEST['answer']))
{
if ($_REQUEST['str_answers'] == null)
{
$str_answers = $_REQUEST['answer'];
}
else {
$str_answers = $_REQUEST['str_answers'] . "*" . $_REQUEST['answer'];
}}
switch ($i){
case null:
$i = 0;
echo $questions[$i];
?>
<form id="mform" action="test.php" method="POST">
Ответ:
<input type="text" id="answer" name="answer" value="" size="20">
<input type="hidden" id="index" name="index" value="<?php echo $i + 1; ?>">
<input type="hidden" id="str_answers" name="str_answers" value="<?php echo $str_answers;
?>">
<input type="submit" name="go" value="Отправить">
</form>
<?php
break;
case $i == $lim:
echo "Спасибо!<br>";
$answers = explode("*", $str_answers);
//Получаем массив ответов из строки.
//Здесь производим обработку результатов теста.
break;
default: $i = $_REQUEST['index']; echo $questions[$i];
?>
<form id="mform" action="test.php" method="POST">
Ответ:
<input type="text" id="answer" name="answer" value="" size="20">
<input type="hidden" id="index" name="index" value="<?php echo $i + 1; ?>">
<input type="hidden" id="str_answers" name="str_answers" value="<?php echo $str_answers;
?>">
<input type="submit" name="go" value="Отправить">
</form>
<?php
}
?>