Урок 8. Получение правильных ответов
Дата публикации: 17-11-2014

От автора: Итак, мы с вами подошли уже к проблеме получения результатов тестирования. На будущее нашими задачами будут: показ пользователю всего теста с отметками его ответов и правильных ответов, визуальное выделение верных и неверных ответов, формирование статистики по результатам тестирования с указанием процента верных ответов и т.д. Задачей же текущего урока будет получение массива верных ответов с тем, чтобы в дальнейшем мы могли сравнивать 2 имеющихся массива: массив ответов пользователя и массив верных ответов.
Все уроки курса:
Метки: система тестирования, тестирование
я присвоил каждому ответу вес в колонке под названием weight_answer от 5 до 1. в выборке SELECT я ввел a.weight_answer, так как мне нужно выводить весь массив, ведь нет неправильных ответов, а потом сравнить ответы, выбранные пользователем с их весом и дать результат. Ответы пользователя выводятся корректно, теперь мне нужно, я так понял, привязать при выводе результатов номер ответа к весу ответа. Это должна быть новая функция или function get_correct_answers, в которой в выборке нужно добавить какую-то еще связь? (условие a.correct_answer = ’1′ я убрал, т.к. у меня все правильные). Пока у меня почему-то везде 1 в результатах
Это, скорее, должна быть новая функция, поскольку функция get_correct_answers возвращает только пары вопрос-правильный ответ. Вам же нужен вопрос и все ответы с их весом. Теоретически это все логичнее сделать в функции get_test_data, где мы получаем вопрос и ответы, там же можно держать и бал каждого ответа. Ну, конечно же, придется менять функцию get_test_data, точнее структуру массива, который она возвращает. Как вариант, я бы сделал примерно такую структуру:
'id вопроса' => array(
'question' => 'Текст вопроса',
'answers' => array(
'id ответа' => array(
'текст ответа',
'бал'
),
)
)
мне немного неловко чувствовать себя как студент-двоечник, но я исправлюсь (закрою этот вопрос и буду писать уже на форуме и без лирики)
ваш код я понял так:
‘q.id’ => array( ‘question’ => ‘q.question, ‘answers’ => array( ‘a.id => array( ‘a.answer,
‘a.weight.answer’ ), ))
куда его вставлять (между какими операторами) в функции function get_test_data($test_id)?
в $query = «SELECT я добавил a.weight.answer
при прогонке в MYSQL MANAGER мне вывелись нужные данные, но a.weight.answer (вес вопроса) выводится другим цветом (коричневым), хотя остальные — синим жирным
и еще: мне в index.php выводить отредактированную функцию get_test_data вместо get_correct_answers уже в таком виде
$result = get_test_data ($test);?
пока при нажатии на кнопку «завершить» у меня в print_r($result); выводятся номера вопросов и возле каждого какая-то [1]
я просто на этих баллах засел, а все остальное пока ПОЛУЧАЕТСЯ
Вы не совсем верно поняли, это не код, это формат массива, который я бы использовал для реализации Вашей задачи.
записал пока по-другому, т.к. с этим не разобрался, удалось получить при выведении
result например, на третий вопрос
[3] => Array
(
[5] => 11
[4] => 12
[3] => 13
[2] => 14
[1] => 15
т.е. я присвоил соответсвенный вес каждому из ответов вот по такому циклу
while($row = mysqli_fetch_assoc($res)){
$data[$row['question_id']][$row['weight_answer']] = $row['answer_id'];
но эти все манипуляции я проделал в видоизмененной функции
function get_correct_answers($test)
Здравствуйте. Подскажите пожалуйста как сделать что бы вопрос имел несколько вариантов ответа?
Здравствуйте. Придется работать не с одним ответом, а с массивом ответов и хранить ответы во вложенном массиве.