我有一個php代碼,它使用switch語句從文本框中查找任何值,並輸出與$ selected_option匹配的正確的'optionId',它與文本框中的值匹配。它只在數據庫中正確顯示選項
我遇到的問題是可以說有4個問題,3個問題有不同的選項,1個有相同的optionId作爲另一個問題。當我在數據庫中插入他們來說,這是假設看起來象下面這樣:
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'
但相反,它是隻表示這兩個問題像下面這是不正確的最新OptionId。
Question OptionId
What is my gender O7
What is my name O7
What is my address O7
What is my age O7
所以我想知道的是爲什麼它只顯示所有問題的最新的OptionId?我是否需要循環切換語句,或者在循環每個問題時循環$ insertQuestion []的方式有問題嗎?
$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:
以下爲形式的代碼。它是如何工作的,用戶在textarea ('name='questionText')
中鍵入一個問題,並在選項(name='gridValues')
中鍵入一個問題,然後他們在表格行中添加兩個(表格形式爲id='qandatbl'
)。這是問題1。然後他們又對第二個問題做的一樣,然後第三等請在此仔細看,很容易跟隨:)
<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>
是不是因爲你只有一個optionID :'$ optionid = $ optionrecord ['OptionId'];'? – Elen 2012-04-03 15:46:03
您希望從$ optionquery獲得多少結果? – Elen 2012-04-03 15:47:44
您需要爲每個問題獲取正確的opion ID,因此幾乎整個代碼看起來應該嵌套在'foreach()'語句中。 – 2012-04-03 15:53:35