There were problems with the structure of functions that are not appropriate (PHP)

<?php PickModule(); // Show the thing to pick module if(ModuleIsSubmitted()) // When module is picked { PickSession(); // Show the thing to pick session if(SessionIsSubmitted()) // When session is picked { ShowAssessment(); // Show students and questions information if(StudentAnswersIsSubmitted()) // Student Answers button is submitted { StudentAnswers(); } } } ?> 

I am trying to follow a page structure that looks like this:

  • PickModule() displayed

  • When the user is sent to the PickModule() function, he performs a check in if(ModuleIsSubmitted()) , and then displays the results of the PickSession() check

  • PickSession() displayed

  • When a user is sent to the PickSession() function, he performs an if(SessionIsSubmitted()) check and then displays the ShowAssessment() check results

  • ShowAssessment() displayed

  • When the user is sent to the ShowAssessment() function, he will perform an if(StudentAnswersIsSubmitted()) check to verify that the submit button is pressed, and then display the results in StudentAnswers()

  • StudentAnswers() displayed

I have a problem with the last two points when the answerSubmit button answerSubmit pressed and answerSubmit in if(StudentAnswersIsSubmitted()) , and then instead of displaying the results in StudentAnswers() it returns directly to the PickModule() value. What am I doing wrong?

Below is the code where it goes through each function:

HERE DEMO FOR THE CODE BELOW: DEMO

 function PickModule() { ?> <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> <?php $moduleactive = 1; $sql = "SELECT ModuleId, ModuleNo, ModuleName FROM Module WHERE ModuleActive = ? ORDER BY ModuleNo"; //mysqli code for modules drop down menu ?> <strong>Module:</strong> <select name="module" id="modulesDrop"> <option value="">Please Select</option> <?php while($sqlstmt->fetch()) { $ov = $dbModuleNo . "_" . $dbModuleName . "_" . $dbModuleId; if(isset($_POST["module"]) && $ov == $_POST["module"]) echo "<option selected='selected' value='$ov'>$dbModuleNo - $dbModuleName</option>" . PHP_EOL; else echo "<option value='$ov'>$dbModuleNo - $dbModuleName</option>" . PHP_EOL; } ?> </select> <br> <input id="moduleSubmit" type="submit" value="Submit Module" name="moduleSubmit" /> </form> <?php } function ModuleIsSubmitted() { if(isset($_POST["module"]) && empty($_POST["module"])) // We picked the "Please select" option { ?> Please Select a Module <?php return false; } else if(!isset($_POST["module"])) { return false; } else // All is ok { return true; } return false; } function PickSession() { $dataTransfered = explode( "_" , $_POST["module"] ); $moduleNo = $dataTransfered[0]; $moduleName = $dataTransfered[1]; $moduleId = $dataTransfered[2]; //Get data from database $sessionquery = " SELECT s.SessionId, SessionName, SessionDate, SessionTime, ModuleId, SessionActive, Complete FROM Session s INNER JOIN Session_Complete sc ON sc.SessionId = s.SessionId WHERE (ModuleId = ? AND Complete = ?) ORDER BY SessionName "; $complete = 1; //mysqli code for assessments drop down menu ?> <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> <input type="hidden" name="module" value="<?php echo $_POST['module']; ?>"> <p> <strong>Selected Module: </strong><?php echo $moduleNo ." - ". $moduleName; ?> </p> <?php if ($sessionnum == 0 ){ ?> <div class="red"> Sorry, You have No Assessments under this Module </div> <?php } else { ?> <p> <strong>Asessments:</strong> <select name="session" id="sessionsDrop"> <option value="">Please Select</option> <?php while ( $sessionqrystmt->fetch() ) { $sv = $dbSessionId; if($dbSessionActive == 0){ $class = 'red'; }else{ $class = 'green'; } if(isset($_POST["session"]) && $sv == $_POST["session"]) echo "<option selected='selected' value='$sv' class='$class'>" . $dbSessionName . " - " . date('dm-Y',strtotime($dbSessionDate)) . " - " . date('H:i',strtotime($dbSessionTime)) . "</option>" . PHP_EOL; else echo "<option value='$sv' class='$class'>" . $dbSessionName . " - " . date('dm-Y',strtotime($dbSessionDate)) . " - " . date('H:i',strtotime($dbSessionTime)) . "</option>" . PHP_EOL; } ?> </select> </p> <input id="sessionSubmit" type="submit" value="Submit Assessments" name="sessionSubmit" /> </form> <?php } } function SessionIsSubmitted() { if(isset($_POST["session"]) && empty($_POST["session"])) // We picked the "Please select" option { ?> <div class="red"> Please Select an Assessment </div> <?php return false; } else if(!isset($_POST["session"])) { return false; } else // All is ok { return true; } return false; } function ShowAssessment() { $studentactive = 1; $currentstudentqry = " SELECT st.StudentId, st.StudentAlias, st.StudentForename, st.StudentSurname FROM Student_Session ss INNER JOIN Student st ON ss.StudentId = st.StudentId WHERE (ss.SessionId = ? AND st.Active = ?) ORDER BY st.StudentAlias "; //mysqli code for students drop down menu if($studentnum == 0){ ?> <div class="red"> There are no Students who have currently taken this Assessment </div> <?php } else { $questionsqry = " SELECT QuestionId, QuestionNo FROM Question WHERE (SessionId = ?) ORDER BY QuestionNo "; //mysqli code for questions drop down menu ?> <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> <p> <input type="text" name="session" value="<?php echo $_POST['session']; ?>"> <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> <input id="answerSubmit" type="submit" value="Get Student Answers" name="answerSubmit" /> </form> <?php } } function StudentAnswersIsSubmitted() { if(!isset($_POST["answerSubmit"])) { return false; } else // All is ok { return true; } return false; } function StudentAnswers() { echo "student answers"; } ?> 
+4
source share
2 answers

I think I see a mistake here. In the PickSession function, you have this line of code in the form

 <input type="hidden" name="module" value="<?php echo $_POST['module']; ?>"> 

This puts the specified module back into the script again, you miss this line under the ShowAssessment function, so when the user submits the "Get Answers to Students' Questions" form, the data is not published on the form. Please note that you will also have to republish the session variable in the form as I see what you did, but I assume that you want to make this a hidden field as such,

 function ShowAssessment() { //Sql... //Line 169 of bottom code sample <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> <p> <input type="hidden" name="module" value="<?php echo $_POST['module']; ?>"> //type="hidden" not "text" <input type="hidden" name="session" value="<?php echo $_POST['session']; ?>"> //Rest of code... } 

I believe adding this fixes your code. Please note that you will need to constantly forward all previously provided data to maintain this code structure.

+1
source

I'm not sure if submit buttons work like this.

In addition, you need to have the method = "POST" in the form, if you want it to send POST files, you had post = "", which AFAIK does nothing.

Try the following:

 function ShowAssessment() { <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST"> <input name="answerSubmit" type="hidden" value="1" /> <input id="answerSubmit" type="submit" value="Get Student Answers" /> </form> <?php } 
0
source

All Articles