Консультация № 178807
01.06.2010, 20:24
42.44 руб.
0 3 1
Здравствуйте.
1) Как на php организовать простейший тест. Имеется список вопросов в виде radiobutton, checkbox, нужно подсчитать количество правильных ответов (в чекбоксе каждый правильный ответ + 1 балл).
2) В дополнение к первому вопросу: если есть список вопросов как выбрать случайным образом 15 вопросов из 30. Без организации базы данных. Как-то можно хранить в одном файле и в зависимости от случайной выборки вопросов генеририровать (оставлять) только 15 вопросов?

Приложение:
Мой вариант, не совсем представляю как лучше проверить все эти условия на php


<P> 1) При измерении размера детали штангенциркулем реализуется метод...</P>

<FORM method="post">
<INPUT type="radio" name="rb" value="option1"> нулевой<BR>
<INPUT type="radio" name="rb" value="option2"> совпадений<BR>
<INPUT type="radio" name="rb" value="option3"> дифференциальный<BR><P>
<INPUT type="radio" name="rb" value="option4"> замещения<BR><BR><P>2) При измерении активного сопротивления мостом постоянного тока при уравновешенной схеме используют метод...</P><P>
</FORM>

<FORM method="post">
<INPUT type="radio" name="rb" value="option1"> нулевой<BR>
<INPUT type="radio" name="rb" value="option2"> совпадений<BR>
<INPUT type="radio" name="rb" value="option3"> противопоставления<BR><INPUT type="radio" name="rb" value="option4"> непосредственной оценки<BR><P><BR></P><P>3) Выражение Q=q[q=], где Q - единица измерения, q - числовое значение, является...</P><P>
</FORM>
<FORM method="post">
<INPUT type="radio" name="rb" value="option1"> линейным преобразованием<BR>
<INPUT type="radio" name="rb" value="option2"> основным постулатом метрологии<BR>
<INPUT type="radio" name="rb" value="option3"> математической моделью измерений<BR><INPUT type="radio" name="rb" value="option4"> основным уравнением измерений по шкале отношений<BR><P><BR></P><P>4) При одновременном измерении нескольких однородных величин измерения называют...</P><P>
</FORM>
<FORM method="post">
<INPUT type="radio" name="rb" value="option1"> косвенными<BR>
<INPUT type="radio" name="rb" value="option2"> совместными<BR>
<INPUT type="radio" name="rb" value="option3"> совокупными<BR><P>
<INPUT type="radio" name="rb" value="option4"> многократными<BR><BR><P>5) Сила тяжести определяется измерением массы (с помощью мер) и использованием ускорения свободного падения. Такие измерения называют...</P><P></FORM><INPUT type="radio" name="rb" value="option1"> приведёнными<BR>
<INPUT type="radio" name="rb" value="option2"> относительными<BR>
<INPUT type="radio" name="rb" value="option3"> прямыми<BR><P>
<INPUT type="radio" name="rb" value="option4"> абсолютными<BR><BR><P>


<INPUT type="submit" value="Проверить"></P><P> </P><P> </P><P>

Обсуждение

Неизвестный
02.06.2010, 01:38
общий
Сформулируйте задачу чётче.
Нужно ли из веб-интерфейса загружать/удалять/редактировать вопросы и ответы?
Нужно ли формировать файл ответов пользователя или просто показывать результат и забывать?
Вам нужно написать код?
давно
Специалист
742
345
02.06.2010, 05:05
общий
Нужно ли из веб-интерфейса загружать/удалять/редактировать вопросы и ответы?
- Не нужно.
Нужно ли формировать файл ответов пользователя или просто показывать результат и забывать?
-Показывать результат и сохранять результат в файл.
Вам нужно написать код?
-Да
Неизвестный
02.06.2010, 09:45
общий
это ответ
Здравствуйте, Sager!
Вот один из вариантов вашего теста на php. Обратите внимание на тот момент, что отдельные группы элементов radio должны иметь уникальное имя в пределах формы. Возвращаемый в Post результат будет содержать значение radio, активного на момент закрытия формы.

Приложение:
<?php
# ---------------------------------------------------------
# Проверка правильности ответов
# ---------------------------------------------------------

# Определяем, была - ли нажата кнопка "Проверить" на форме, иначе ничего не делать
if ($_POST['submit'] != "") { $sum = 0;
# 1 тест
$test1 ='';
if ($_POST["rb1"] == "option1") {
$test1 = "Ответ верен";
$sum = $sum + 1;
}
else { # ответа нет вообще
if ($_POST["rb1"] == '')
$test1 = "Задание не выполнено";
}
# 2 тест
$test2 ='';
if ($_POST["rb2"] == "option1") {
$test2 = "Ответ верен";
$sum = $sum + 1;
}
else {
# ответа нет вообще
if ($_POST["rb2"] == '')
$test2 = "Задание не выполнено";
}

# 3 тест
$test3 ='';
if ($_POST["rb3"] == "option1") {
$test3 = "Ответ верен";
$sum = $sum + 1;
}
else {
# ответа нет вообще
if ($_POST["rb3"] == '')
$test3 = "Задание не выполнено";
}

# 4 тест
$test4 ='';
if ($_POST["rb4"] == "option1") {
$test4 = "Ответ верен";
$sum = $sum + 1;
}
else {
# ответа нет вообще
if ($_POST["rb4"] == '')
$test4 = "Задание не выполнено";
}
# 5 тест
$test5 ='';
if ($_POST["rb5"] == "option1") {
$test5 = "Ответ верен";
$sum = $sum + 1;
}
else {
# ответа нет вообще
if ($_POST["rb5"] == '')
$test5 = "Задание не выполнено";
}
}

?>
<!--
Все можно сделать в рамках одной фомы. При этом каждая группа radio должна иметь уникальное имя, по которому будет происходить
определение значения.
-->

<P> 1) При измерении размера детали штангенциркулем реализуется метод...</P>

<?php
# Если переменная $sum была определена выше, то отображаем ее значение,
# иначе ничего не делать

# Если есть оценка - отобразить
if (isset($sum)) echo "Ваша оценка за тест {$sum}.
";
?>

<FORM method="post">

<?php
# отобразить диагностику ответа
if (isset($test1)) echo "Результат: {$test1}.
";
?>

<INPUT type="radio" id="rb1" name="rb1" value="option1"> нулевой

<INPUT type="radio" id="rb1" name="rb1" value="option2"> совпадений

<INPUT type="radio" id="rb1" name="rb1" value="option3"> дифференциальный

<INPUT type="radio" id="rb1" name="rb1" value="option4"> замещения





<P>2) При измерении активного сопротивления мостом постоянного тока при уравновешенной схеме используют метод...</P>

<?php
# отобразить диагностику ответа
if (isset($test2)) echo "Результат: {$test2}.
";
?>

<INPUT type="radio" id="rb2" name="rb2" value="option1"> нулевой

<INPUT type="radio" id="rb2" name="rb2" value="option2"> совпадений

<INPUT type="radio" id="rb2" name="rb2" value="option3"> противопоставления

<INPUT type="radio" id="rb2" name="rb2" value="option4"> непосредственной оценки




<P>3) Выражение Q=q[q=], где Q - единица измерения, q - числовое значение, является...</P>

<?php
# отобразить диагностику ответа
if (isset($test3)) echo "Результат: {$test3}.
";
?>

<INPUT type="radio" id="rb3" name="rb3" value="option1"> линейным преобразованием

<INPUT type="radio" id="rb3" name="rb3" value="option2"> основным постулатом метрологии

<INPUT type="radio" id="rb3" name="rb3" value="option3"> математической моделью измерений

<INPUT type="radio" id="rb3" name="rb3" value="option4"> основным уравнением измерений по шкале отношений




<P>4) При одновременном измерении нескольких однородных величин измерения называют...</P>

<?php
# отобразить диагностику ответа
if (isset($test4)) echo "Результат: {$test4}.
";
?>

<INPUT type="radio" id="rb4" name="rb4" value="option1"> косвенными

<INPUT type="radio" id="rb4" name="rb4" value="option2"> совместными

<INPUT type="radio" id="rb4" name="rb4" value="option3"> совокупными

<INPUT type="radio" id="rb4" name="rb4" value="option4"> многократными




<P>5) Сила тяжести определяется измерением массы (с помощью мер) и использованием ускорения свободного падения. Такие измерения называют...</P>

<?php
# отобразить диагностику ответа
if (isset($test5)) echo "Результат: {$test5}.
";
?>

<INPUT type="radio" id="rb5" name="rb5" value="option1"> приведёнными

<INPUT type="radio" id="rb5" name="rb5" value="option2"> относительными

<INPUT type="radio" id="rb5" name="rb5" value="option3"> прямыми

<INPUT type="radio" id="rb5" name="rb5" value="option4"> абсолютными




<INPUT type="submit" name="submit" value="Проверить">
</FORM>
Форма ответа