Ich habe einen PHP-Code, wo es eine switch-Anweisung verwendet, um einen der Werte aus dem Textfeld zu finden und die richtige 'optionId', die die $ selected_option, die den Wert aus dem Textfeld entspricht entspricht.Es ist nur Anzeige der Option korrekt in der Datenbank
Das Problem, das ich habe, ist, dass wir sagen, es gibt 4 Fragen, 3 Fragen mit verschiedenen Optionen und 1, die die gleiche Option wie eine andere Frage hat. Als ich sie in der Datenbank einfügen wird es annehmen, wie unten aussehen:
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'
sondern es ist nur die neueste OptionID für beiden Fragen zeigt, wie unter der falsch ist.
Also was ich wissen möchte ist, warum zeigt es nur die neueste OptionId für alle Fragen? Muss ich die switch-Anweisung wiederholen oder ist etwas nicht in Ordnung mit der Art und Weise, wie ich $ insertQuestion [] als Schleife durch die einzelnen Fragen durchführe?
$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:
Unten ist die Form Code. Wie es funktioniert, ist der Benutzer Typen in einer Frage in der Textbereich ('name='questionText')
und Typen in einer Option (name='gridValues')
und dann fügen sie sie zwei in einer Tabellenzeile (Tabelle in der Form, die id='qandatbl'
). Das ist die Frage 1. Dann haben sie das gleiche tun wieder für die zweite Frage, dann dritte und etc. Blick auf diese Bitte sorgfältig, ist es leicht zu folgen :)
<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>
ist es nicht, weil Sie nur eine Arbeit kann OptionID haben : '$ optionid = $ optionrecord ['OptionId'];'? – Elen
Wie viele Ergebnisse erwarten Sie von '$ optionquery'? – Elen
Sie müssen die richtige opion ID für jede Frage erhalten, so dass der gesamte Code so aussieht, als sollte er in der 'foreach()' Anweisung verschachtelt sein. –