I have two drop-down menus in which the user can use the drop-down menus to filter students and questions that they want to see. Possible types of filters:
- Select all students and all questions
- Select all students and one question.
- Select all questions and one student
- Choose one student and one question.
Below are the drop down menus:
<p> <strong>Student:</strong> <select name="student" id="studentsDrop"> <option value="All">All</option> <?php while ( $currentstudentstmt->fetch() ) { $stu = $dbStudentId; if(isset($_POST["student"]) && $stu == $_POST["student"]) echo "<option selected='selected' value='$stu'>" . $dbStudentAlias . " - " . $dbStudentForename . " " . $dbStudentSurname . "</option>" . PHP_EOL; else echo "<option value='$stu'>" . $dbStudentAlias . " - " . $dbStudentForename . " " . $dbStudentSurname . "</option>" . PHP_EOL; } ?> </select> </p> <p> <strong>Question:</strong> <select name="question" id="questionsDrop"> <option value="All">All</option> <?php while ( $questionsstmt->fetch() ) { $ques = $dbQuestionId; if(isset($_POST["question"]) && $ques == $_POST["question"]) echo "<option selected='selected' value='$ques'>" . $dbQuestionNo . "</option>" . PHP_EOL; else echo "<option value='$ques'>" . $dbQuestionNo . "</option>" . PHP_EOL; } ?> </select> </p>
Now I want to configure a mysqli query that identifies students and questions selected from the drop-down menu.
My question is simply that I need to configure 4 queries, checking the 4 possibilities that I mentioned in the drop-down menus, or is there a shorter way?
Should I use:
if ($_POST['question'] == 'All' && if ($_POST['student'] == 'All'){){ //NO WHERE CLAUSE if ($_POST['question'] == 'All' && if ($_POST['student'] != 'All'){){ //WHERE CLAUSE FOR FINDING SELECTED STUDENT if ($_POST['question'] != 'All' && if ($_POST['student'] == 'All'){){ //WHERE CLAUSE FOR FINDING SELECTED QUESTION if ($_POST['question'] != 'All' && if ($_POST['student'] != 'All'){){ //WHERE CLAUSE FOR FINDING SELECTED QUESTION AND SELECTED STUDENT
UPDATE:
What I have at the moment:
function AssessmentIsSubbmitted() { if(isset($_POST['answerSubmit'])) // we have subbmited the first form { //QUERY 1: Student details depending on selected student(s) if ($_POST['student'] == 'All'){ $selectedstudentqry = " SELECT StudentAlias, StudentForename, StudentSurname FROM Student s INNER JOIN Student_Session ss ON s.StudentId = ss.StudentId WHERE SessionId = ? ORDER BY StudentAlias "; global $mysqli; $selectedstudentstmt=$mysqli->prepare($selectedstudentqry); // You only need to call bind_param once $selectedstudentstmt->bind_param("i",$_POST["session"]); // get result and assign variables (prefix with db) $selectedstudentstmt->execute(); $selectedstudentstmt->bind_result($detailsStudentAlias,$detailsStudentForename,$detailsStudentSurname); $selectedstudentstmt->store_result(); $selectedstudentnum = $selectedstudentstmt->num_rows(); }else{ $selectedstudentqry = " SELECT StudentAlias, StudentForename, StudentSurname FROM Student WHERE (StudentId = ?) ORDER BY StudentAlias "; global $mysqli; $selectedstudentstmt=$mysqli->prepare($selectedstudentqry); // You only need to call bind_param once $selectedstudentstmt->bind_param("i",$_POST["student"]); // get result and assign variables (prefix with db) $selectedstudentstmt->execute(); $selectedstudentstmt->bind_result($detailsStudentAlias,$detailsStudentForename,$detailsStudentSurname); $selectedstudentstmt->store_result(); $selectedstudentnum = $selectedstudentstmt->num_rows(); } //QUERY 2: Question details depending on selected question(s) if ($_POST['question'] == 'All'){ $selectedquestionqry = " SELECT q.QuestionNo, q.QuestionContent, o.OptionType, q.NoofAnswers, GROUP_CONCAT( DISTINCT Answer ORDER BY Answer SEPARATOR ',' ) AS Answer, r.ReplyType, q.QuestionMarks FROM Question q LEFT 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 q.QuestionId ORDER BY q.QuestionId"; "; global $mysqli; $selectedquestionstmt=$mysqli->prepare($selectedquestionqry); // You only need to call bind_param once $selectedstudentstmt->bind_param("i",$_POST["session"]); // get result and assign variables (prefix with db) $selectedquestionstmt->execute(); $selectedquestionstmt->bind_result($detailsQuestionNo,$detailsQuestionContent,$detailsOptionType,$detailsNoofAnswers, $detailsAnswer,$detailsReplyType,$detailsQuestionMarks); $selectedquestionstmt->store_result(); $selectedquestionnum = $selectedquestionstmt->num_rows(); }else{ $selectedquestionqry = " SELECT q.QuestionNo, q.QuestionContent, o.OptionType, q.NoofAnswers, GROUP_CONCAT( DISTINCT Answer ORDER BY Answer SEPARATOR ',' ) AS Answer, r.ReplyType, q.QuestionMarks FROM Question q LEFT 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 QuestionId = ? GROUP BY q.QuestionId ORDER BY q.QuestionId "; global $mysqli; $selectedquestionstmt=$mysqli->prepare($selectedquestionqry); // You only need to call bind_param once $selectedquestionstmt->bind_param("i",$_POST["question"]); // get result and assign variables (prefix with db) $selectedquestionstmt->execute(); $selectedquestionstmt->bind_result($detailsQuestionNo,$detailsQuestionContent,$detailsOptionType,$detailsNoofAnswers, $detailsAnswer,$detailsReplyType,$detailsQuestionMarks); $selectedquestionstmt->store_result(); $selectedquestionnum = $selectedquestionstmt->num_rows(); } //QUERY 3: Student Answers depending on selected student(s) and selected question(s) $studentanswerqry = " SELECT sa.StudentId, sa.QuestionId, GROUP_CONCAT(DISTINCT StudentAnswer ORDER BY StudentAnswer SEPARATOR ',') AS StudentAnswer, ResponseTime, MouseClick, StudentMark FROM Student_Answer sa INNER JOIN Student_Response sr ON sa.StudentId = sr.StudentId WHERE (sa.StudentId = ? AND sa.QuestionId = ?) GROUP BY sa.StudentId, sa.QuestionId "; global $mysqli; $studentanswerstmt=$mysqli->prepare($studentanswerqry); // You only need to call bind_param once $studentanswerstmt->bind_param("ii",$_POST["student"], $_POST["question"]); // get result and assign variables (prefix with db) $studentanswerstmt->execute(); $studentanswerstmt->bind_result($detailsStudentAnswer,$detailsResponseTime,$detailsMouseClick,$detailsStudentMark); $studentanswerstmt->store_result(); $studentanswernum = $studentanswerstmt->num_rows(); } ?>