Получить данные overal feedback

Получить данные overal feedback

от Daniel Morgan -
Количество ответов: 6

Добрый день, делаю попытки получить данные из таблицы mdl_quiz_feedback

SELECT DISTINCT
  u.id AS userid,
  gs.heading AS heading,
  gi.itemname AS itemname,
  ROUND( g.finalgrade) AS finalgrade,
  f.feedbacktext AS feedbacktext
  FROM mdl_user u
  JOIN mdl_grade_grades g ON g.userid = u.id
  JOIN mdl_grade_items gi ON g.itemid =  gi.id
  JOIN mdl_course c ON c.id = gi.courseid
  JOIN mdl_quiz_sections gs ON gs.id = u.id
  JOIN mdl_quiz_feedback f ON f.id = ?
  WHERE u.id = 12 AND finalgrade AND itemname is not null


если я принудительно ставлю  JOIN mdl_quiz_feedback f ON f.id = 149 - где 149 это ID в таблице с feedback, но это решение не верное, как правильно мне отобразить Feedback для quiz?
Спасибо



В ответ на Daniel Morgan

Re: Получить данные overal feedback

от Vadim Tabunshchik -
Изображение пользователя Developers
JOIN mdl_quiz_sections gs ON gs.id = u.id

Это косяк улыбаюсь

В таблице quiz_sections нет никаких полей пользователя, а вы gs.id приравниваете к id таблицы mdl_user

как правильно мне отобразить Feedback для quiz?

Вы же не только Feedback выводите, а и пользователя, оценку и т. п.

Вид нужной таблицы покажите.

В ответ на Vadim Tabunshchik

Re: Получить данные overal feedback

от Daniel Morgan -

с косяком я согласен =)

дело в том что когда юзер проходит quiz мне надо получать его itemname, finalgrade и feedbacktext для текущего пользователя, сейчас я имею вот такое: http://prntscr.com/hmxg80 вот это я и хочу отобразить на отдельной странице



В ответ на Daniel Morgan

Re: Получить данные overal feedback

от Vadim Tabunshchik -
Изображение пользователя Developers

Ещё замечание: feedbacktext должен выводиться в зависимости от полученной оценки, а где это в запросе?

Я вот тут «на коленке» набросал запрос, пробуйте

SELECT
     CONCAT(u.lastname,' ',u.firstname) ФИО
    ,gg.itemid
    ,gi.itemname Тест
    ,gg.finalgrade Оценка
    ,qf.feedbacktext Отзыв
FROM
    mdl_user u
    JOIN mdl_grade_grades gg ON gg.userid = u.id
    JOIN mdl_grade_items gi ON gi.id = gg.itemid
    JOIN mdl_quiz_feedback qf ON qf.quizid = gi.iteminstance
WHERE
    gi.itemmodule = 'quiz'
    AND gg.finalgrade IS NOT NULL
    AND gg.finalgrade BETWEEN qf.mingrade
    AND qf.maxgrade
    AND qf.feedbacktext <> ''
ORDER BY
    u.lastname ASC

Он выводит все попытки всех студентов по всем тестам, если есть оценка и внесены отзывы в тестах. Условия можете добавить сами (конкретный пользователь, тест и т. п.)

В ответ на Vadim Tabunshchik

Re: Получить данные overal feedback

от Daniel Morgan -

Ещё замечание: feedbacktext должен выводиться в зависимости от полученной оценки, а где это в запросе?

да, желательно, т.е. после получения оценки мы видим Feedbacktext

и еще момент, как мне сюда подцепить юзера по ID?



P.S. Все шикарно! Спасибо - теперь осталось оформить все красиво в PHP

В ответ на Daniel Morgan

Re: Получить данные overal feedback

от Vadim Tabunshchik -
Изображение пользователя Developers
теперь осталось оформить все красиво в PHP

С этого нужно было начинать. улыбаюсь Я же думал, что это нужно просто для вывода на странице, как отчет в блоке «Настраиваемые отчеты» или т. п.

А для вывода в PHP все эти запросы уже есть в Мудл и оформлены в виде функций. Подключить нужные файлы и использовать стандартные библиотеки проще и безопаснее, чем ваять что-то своё

function quiz_feedback_for_grade - Get the feedback text that should be show to a student who got this grade on this quiz. The feedback is processed ready for diplay.