У меня есть приложение здесь: Приложение
Приложение должно показать вам два раскрывающихся меню, которые я хочу использовать в качестве фильтра, чтобы получить ответы учеников на выбранные ученики, и вопрос (ы) выбраны из соответствующих выпадающих меню.
Чтобы увидеть выпадающие меню, в приложении выберите раскрывающееся меню « Assessment
из Assessment
и отправьте, вы увидите, как внизу отображаются меню и выпадающие меню учеников и вопросов.
Теперь я хочу создать динамическое предложение WHERE в зависимости от параметров, выбранных из раскрывающихся меню учеников (ов) и вопросов (ов), когда пользователь нажал кнопку « Get Student Answers
.
Ниже приведен текущий запрос. Запрос должен иметь предложение по умолчанию SessionId = ?
всегда в предложении WHERE. Другие предложения studentId = ?
и questionId = ?
зависит от параметров, которые пользователь выбрал из обоих выпадающих списков.
$selectedstudentanswerqry = " SELECT StudentAlias, q.SessionId, QuestionNo, QuestionContent, o.OptionType, GROUP_CONCAT( DISTINCT Answer ORDER BY Answer SEPARATOR ',' ) AS Answer, r.ReplyType, GROUP_CONCAT(DISTINCT StudentAnswer ORDER BY StudentAnswer SEPARATOR ',') AS StudentAnswer, ResponseTime FROM Student s INNER JOIN Student_Answer sa ON (s.StudentId = sa.StudentId) INNER JOIN Student_Response sr ON (sa.StudentId = sr.StudentId) INNER JOIN Question q ON (sa.QuestionId = q.QuestionId) INNER JOIN Answer an ON q.QuestionId = an.QuestionId LEFT JOIN Reply r ON q.ReplyId = r.ReplyId LEFT JOIN Option_Table o ON q.OptionId = o.OptionId WHERE (SessionId = ?) GROUP BY sa.StudentId, q.QuestionId ORDER BY StudentAlias, q.SessionId, QuestionNo "; global $mysqli; $selectedstudentanswerstmt=$mysqli->prepare($selectedstudentanswerqry); // You only need to call bind_param once $selectedstudentanswerstmt->bind_param("i",$_POST["session"]); // get result and assign variables (prefix with db) $selectedstudentanswerstmt->execute(); $selectedstudentanswerstmt->bind_result($detailsStudentAlias,$detailsSessionId,$detailsQuestionNo, $detailsQuestonContent,$detailsOptionType,$detailsAnswer,$detailsReplyType,$detailsStudentAnswer,$detailsResponseTime); $selectedstudentanswerstmt->store_result(); $selectedstudentanswernum = $selectedstudentanswerstmt->num_rows();
Ниже раскрываются меню «Студенты и вопросы» в виде образца html:
Студенты выпадающего меню:
<select name="student" id="studentsDrop"> <option value="All">All</option> <option value="3">u0499220 - Jack Briggs</option> <option value="7">u0093220 - Mary Kay</option> </form>
Выпадающее меню:
<select name="question" id="questionsDrop"> <option value="All">All</option> <option value="34">1</option> <option value="35">2</option> <option value="36">3</option> </form>
Я думаю о чем-то вроде, если выбран конкретный ученик, а затем включить StudentId = ?
в предложении WHERE, если выбран конкретный номер вопроса, включите QuestionId = ?
в предложении WHERE. Но если в раскрывающемся меню «Студент» выбрано значение « All
удалите StudentId = ?
из предложения WHERE, поскольку мы ищем всех учеников, а не сокращаемся для конкретного ученика. Это то же самое, если значение All
выбрано из раскрывающегося меню Question, но, очевидно, имеет дело с QuestionId = ?