I have a php code where it uses a a switch statement to find any of the values from the textbox and output the correct 'optionId' which matches the $selected_option which matches the value from the textbox.
The problem I have though is that lets say there are 4 questions, 3 questions with different options and 1 which has the same optionId as another question. When I insert them in the database it is suppose to look like below:
Question OptionId
What is my gender O17 //case '19'
What is my name O3 //case '5'
What is my address O17 //case '19'
What is my age O7 //case '9'
But instead it is showing only the latest OptionId for both questions like below which is incorrect.
Question OptionId
What is my gender O7
What is my name O7
What is my address O7
What is my age O7
So what I want to know is why is it displaying only the latest OptionId for all questions? Do I need to loop the switch statement or is there something wrong with the way I loop the $insertQuestion[] as that goes through each Question?
$insertquestion = array();
$options = $_POST['gridValues'];
switch ($options){
case "3":
$selected_option = "A-C";
break;
case "4":
$selected_option = "A-D";
break;
case "5":
$selected_option = "A-E";
break;
default:
$selected_option = "";
break;
}
$optionquery = "SELECT OptionId FROM Option_Table WHERE (OptionType = '". mysql_real_escape_string($selected_option)."')";
$optionrs = mysql_query($optionquery);
while($optionrecord = mysql_fetch_array($optionrs)){
$optionid[] = $optionrecord['OptionId'];
}
foreach($_POST['questionText'] as $question)
{
$insertquestion[] = "'". mysql_real_escape_string( $_SESSION['id'] ) . ($_SESSION['initial_count'] > 1 ? $_SESSION['sessionCount'] : '') ."' ,'". mysql_real_escape_string( $_POST['num_questions'] ) ."','". mysql_real_escape_string( $question ) ."','". mysql_real_escape_string( $optionid[] ) ."'";
}
$questionsql = "INSERT INTO Question (SessionId, QuestionId, QuestionContent, OptionId)
VALUES (" . implode('), (', $insertquestion) . ")";
echo($questionsql)
UPDATE:
Below is the form code. How it works is the user types in a question in the textarea ('name='questionText')
and types in an option (name='gridValues')
and then they append them two in a table row (table in the form which id='qandatbl'
). This is the question 1. Then they do the same again for second question, then third and etc. Please look at this carefully, it is easy to follow :)
<script>
function insertQuestion(form) {
var context = $('#optionAndAnswer');
var $tbody = $('#qandatbl > tbody');
var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
var $question = $("<td class='question'></td>");
var $options = $("<td class='option'></td>");
var $questionType = '';
$('#questionTextArea').each( function() {
var $this = $(this);
var $questionText = $("<textarea class='textAreaQuestion'></textarea>").attr('name',$this.attr('name')+"[]")
.attr('value',$this.val())
$question.append($questionText);
});
$('.gridTxt', context).each( function() {
var $this = $(this);
var $optionsText = $("<input type='text' class='gridTxtRow maxRow' />").attr('name',$this.attr('name'))
.attr('value',$this.val())
$options.append($optionsText);
$questionType = $this.val();
});
$tr.append($question);
$tr.append($options);
$tbody.append($tr);
}
</script>
<form id="QandA" action="insertQuestion.php" method="post" >
<table>
<tr>
<td rowspan="3">Question:</td>
<td rowspan="3">
<textarea id="questionTextArea" rows="5" cols="40" name="questionText"></textarea>
</td>
</tr>
</table>
<table id="optionAndAnswer" class="optionAndAnswer">
<tr class="option">
<td>Option Type:</td>
<td>
<div>
<input type="text" name="gridValues" class="gridTxt maxRow" readonly="readonly" />
</div>
</td>
</tr>
</table>
<table id="qandatbl" align="center">
<thead>
<tr>
<th class="question">Question</th>
<th class="option">Option Type</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>