Ferdinand Posted April 30, 2013 Share Posted April 30, 2013 In the following code, When I try to pass questions together with the answers, only the answers are Posted as $_POST, How do $_POST the questions to from the form together with the answers? <html> <head> 03 <style> 04 #text_disabled{ 05 border:0; 06 font-size:10pt; 07 color:black; 08 } 09 </style> 10 <title>Question and Answer Read From Text File</title> 11 </head> 12 <body> 13 <form action="processor.php" method="POST" align="center"> 14 <b><u> QUESTIONS AND ANSWERS QUIZ</u></b> <br /><br /> 15 <?php 16 $openFile = fopen("questionandanswers.txt", "r") or exit ("unable to open the text file"); 17 $string = fread($openFile, filesize("questionandanswers.txt")); 18 19 20 //Regex to get from the first number to the string's end, so we ignore the Number Question... bit; 21 preg_match('/\d.*/', $string, $match); 22 23 //We get all the strings starting with a number until it finds another number (which will be the beginning of another question; 24 preg_match_all('/\d\D*/', $match[0], $results); 25 26 $qas = array(); // We prepare an array that will store the questions/answers 27 foreach($results[0] as $result) 28 { 29 //Separating the question from the string with all the answers. 30 list($question, $all_answers) = explode(':', $result); 31 32 //Separating the different answers 33 34 $answers_array = explode('.', $all_answers); 35 36 //removes unnecesary spaces in the questions 37 38 $answers_array_trimmed = array_map('trim', $answers_array); 39 40 //Storing the question and the array with all the answers into the previously prepared array; 41 42 $qas[] = array('question' => $question, 'answers' => $answers_array); 43 } 44 45 //Looping through the array and outputting all the info into a form; 46 foreach($qas as $k=>$v) 47 { 48 echo "<input id='text_disabled' style='width:40%' type='text' value='".$v['question']."' name='questions[]' disabled>"; 49 echo "<select name='selected_answers[]'>"; 50 foreach($v['answers'] as $answer){ 51 echo "<option value='".$answer."'>".$answer."</option>"; 52 } 53 echo "</select>"; 54 echo "<br/><br/>"; 55 } 56 ?> 57 <input name= "submit" type="submit" value="Submit Answers">  <input type="reset" value ="Clear Answers"> 58 </form> 59 </body> 60 </html> such that after $_POST I can do the following: if(isset($_POST['submit'])) {print_r($_POST['questions'])} and it prints the questions. Quote Link to comment https://forums.phpfreaks.com/topic/277458-passing-form-content/ Share on other sites More sharing options...
requinix Posted April 30, 2013 Share Posted April 30, 2013 Disabled inputs are not submitted with forms. Quote Link to comment https://forums.phpfreaks.com/topic/277458-passing-form-content/#findComment-1427323 Share on other sites More sharing options...
Ferdinand Posted April 30, 2013 Author Share Posted April 30, 2013 When is remove the disabled input and tries to print the $_POST questions this is the error i get: Notice: Undefined index: questions Quote Link to comment https://forums.phpfreaks.com/topic/277458-passing-form-content/#findComment-1427334 Share on other sites More sharing options...
Ferdinand Posted April 30, 2013 Author Share Posted April 30, 2013 Thank you requinix I have sorted it out, but how do I separate the questions and answers such that for each questions the respective multiple answers are displayed together? Currently the output is as follows: 1) The most important feature of spiral model is 2) The worst type of coupling is 3) One of the fault base testing techniques is 4) A fault simulation testing technique is 5) RS is also known as specification of 6) Which of these terms is a level name in the Capability Maturity Model?7) FP-based estimation techniques require problem decomposition based on? What types of models are created during software requirements analysis?9) Which of the following is not an attribute of software engineering Quote Link to comment https://forums.phpfreaks.com/topic/277458-passing-form-content/#findComment-1427338 Share on other sites More sharing options...
requinix Posted April 30, 2013 Share Posted April 30, 2013 Displayed... when showing the form? Aren't they already in a ? Displayed when showing the submitted form? You haven't posted the code for that. Quote Link to comment https://forums.phpfreaks.com/topic/277458-passing-form-content/#findComment-1427344 Share on other sites More sharing options...
Ferdinand Posted May 1, 2013 Author Share Posted May 1, 2013 I have managed to pass the form submission with the questions. What I'm trying to accomplish is to for each question, its subsequent answer chosen follows. This is what I have so far: These are the questions: 1) The most important feature of spiral model is2) The worst type of coupling is3) One of the fault base testing techniques is4) A fault simulation testing technique is5) RS is also known as specification of6) Which of these terms is a level name in the Capability Maturity Model?7) FP-based estimation techniques require problem decomposition based on? What types of models are created during software requirements analysis?9) Which of the following is not an attribute of software engineering These are the answers: THE ANSWERS YOU HAVE CHOSEN ARE: Data coupling Unit testing Mutation testing White box testing Ad hoc Information domain values Functional and behavioral Efficiency You Total Score is : 8 Now What I am trying to achieve is something like this: foreach ($question as quiz) { echo "echo $answers[]"; } Without interfearing with my codes. These are the codes that I have on the same so far: <html> <head> <title>Chosen Answers</title> <style > <!-- body { background-color: #00FFFF; } --> </style> </head> <body> <pre> <?php error_reporting(E_ALL); ini_set('display_errors', '1'); //Posting of the chosen answers if(isset($_POST['submit'])) { $question = $_POST['questions']; $answers = $_POST['selected_answers']; echo '<b><u>THE ANSWERS YOU HAVE CHOSEN ARE:</u></b><br /><br />'; $answers_trimmed = array_map('trim', $answers); } foreach($question as $quiz) { echo ($answers_trimmed); } //Opening of the answers file, reading and printing it $openFile = fopen("answers.txt", "r") or exit ("unable to open the answers file"); $fileContents = fread($openFile, filesize("answers.txt")); trim($fileContents); fclose($openFile); $delimiter = " "; $myArray = explode($delimiter, $fileContents); //Deletes unnecessary spaces in the read text files. $myArray_trimmed = array_map('trim', $myArray); //Computation of marks scored for the answered questions $score = 0; $no_questions = 9; for ($x = 0; $x < $no_questions; $x++) { if ($answers_trimmed [$x]== $myArray_trimmed[$x]) { echo "$answers_trimmed[$x]"; echo '<br />'; $score++; } } echo '<br />'; echo "<b>You Total Score is : <u>$score</u></b>"; ?> </pre> </body> </html> Quote Link to comment https://forums.phpfreaks.com/topic/277458-passing-form-content/#findComment-1427446 Share on other sites More sharing options...
Solution requinix Posted May 1, 2013 Solution Share Posted May 1, 2013 Now What I am trying to achieve is something like this: foreach ($question as quiz) { echo "echo $answers[]"; } Sure, but that doesn't really explain what it's supposed to do. Are you trying to output the answers along with the questions? Every question has a matching answer, right? From the form. Question #23 has a corresponding answer #23. Get that #number using the key of that $question array you're looping over, then look up the answer to match. Quote Link to comment https://forums.phpfreaks.com/topic/277458-passing-form-content/#findComment-1427450 Share on other sites More sharing options...
Ferdinand Posted May 1, 2013 Author Share Posted May 1, 2013 Exactly, That's what I am trying to do. Thank you. Quote Link to comment https://forums.phpfreaks.com/topic/277458-passing-form-content/#findComment-1427452 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.