Урок 8. Получение правильных ответов

Чтобы иметь доступ к просмотру всех уроков этого курса, оформите подписку в премиум раздел
создание системы тестирования

От автора: Итак, мы с вами подошли уже к проблеме получения результатов тестирования. На будущее нашими задачами будут: показ пользователю всего теста с отметками его ответов и правильных ответов, визуальное выделение верных и неверных ответов, формирование статистики по результатам тестирования с указанием процента верных ответов и т.д. Задачей же текущего урока будет получение массива верных ответов с тем, чтобы в дальнейшем мы могли сравнивать 2 имеющихся массива: массив ответов пользователя и массив верных ответов.

lesson

Все уроки курса:

Метки: ,

Комментарии (5)

  1. librus

    я присвоил каждому ответу вес в колонке под названием 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(
      'текст ответа',
      'бал'
      ),
      )
      )

      • librus

        мне немного неловко чувствовать себя как студент-двоечник, но я исправлюсь (закрою этот вопрос и буду писать уже на форуме и без лирики)
        ваш код я понял так:
        ‘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]

        я просто на этих баллах засел, а все остальное пока ПОЛУЧАЕТСЯ

        • Андрей Кудлай

          Вы не совсем верно поняли, это не код, это формат массива, который я бы использовал для реализации Вашей задачи.

  2. librus

    записал пока по-другому, т.к. с этим не разобрался, удалось получить при выведении
    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)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree