首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >它没有在回显中显示正确的数字。

它没有在回显中显示正确的数字。
EN

Stack Overflow用户
提问于 2012-04-05 13:18:26
回答 2查看 106关注 0票数 0

插入值有问题。问题是当我尝试插入问号时。假设我尝试插入两个问题。对于第一个问题,问题号(QuestionId)应该是1,而对于第二个问题,应该是2。

但问题是,当我插入值时,这两个问题都会显示第3号问题。所以,对于每个问题,它所做的就是插入下一个问题号,在这个例子中,所有问题都是'3‘。

下面的例子说明了当我在$questionsql上回答两个问题时,它正在显示什么:

代码语言:javascript
复制
INSERT INTO Question (QuestionId, QuestionContent) VALUES ('3','what is my name'), ('3','what is my age') 

以上内容是不正确的。以下是它应该附和的内容:

代码语言:javascript
复制
INSERT INTO Question (QuestionId, QuestionContent) VALUES ('1','what is my name'), ('2','what is my age') 

所以我想知道的是如何显示每个问题的正确的问号,它应该按照问题1、2、3等的正确顺序添加正确的问号。

下面是javascript代码和表单代码,它将一个问题附加到表行中。用户将一个问题附加到表行中。当用户添加第一个问题时,它会附加问题1和问题,当用户附加第二个问题时,它会附加问题2和问题等等。

代码语言:javascript
复制
<script>

    function insertQuestion(form) {   

    var $tbody = $('#qandatbl > tbody'); 
    var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
    var $qid = $("<td class='qid'>" + qnum + "</td>");
    var $question = $("<td class='question'></td>");


    $('.questionTextArea').each( function() {

    var $this = $(this);
    var $questionText = $("<textarea class='textAreaQuestion'></textarea>").attr('name',$this.attr('name')+"[]")
                   .attr('value',$this.val())

    $question.append($questionText);

    });

    $tr.append($qid); 
    $tr.append($question);   
    $tbody.append($tr); 

    }

    ++qnum;
    $(".questionNum").text(qnum);
    $(".num_questions").val(qnum);

</script>


<form id="QandA" action="insertQuestion.php" method="post" >

<table id="question">
<tr>
    <th colspan="2">
        Question Number <span class="questionNum">1</span>
        <input type="hidden" class="num_questions" value="" name="numQuestion">
    </th>
</tr>
<tr>
    <td rowspan="3">Question:</td> 
    <td rowspan="3">
        <textarea class="questionTextArea" rows="5" cols="40" name="questionText"></textarea>
    </td>
</tr>
</table>

</form>

下面是它插入值的php代码。如何让它正确地显示numQuestion。我不能做一个简单的计数循环,因为我可能有两个考试,所以在为第一次考试创建问题之后,在第二次考试中,我需要问题号再次从'1‘开始,所以我认为正确地显示’数字问题‘更好。

代码语言:javascript
复制
    $i = 0;
$c = count($_POST['gridValues']);

$insertquestion = array();

for($i = 0;  $i < $c; $i++ ){

    switch ($_POST['gridValues'][$i]){

    case "3": 
    $selected_option = "A-C";
    break;

    case "4": 
    $selected_option = "A-D";
    break;

    default:
    $selected_option = "";
    break;

    }      

    $optionquery = "SELECT OptionId FROM Option_Table WHERE (OptionType = '". mysql_real_escape_string($selected_option)."')";
    $optionrs = mysql_query($optionquery);
    $optionrecord = mysql_fetch_array($optionrs);
    $optionid = $optionrecord['OptionId']; 

    $insertquestion[] = "'". 
                    mysql_real_escape_string( $_POST['numQuestion'] ) ."','".  
                    mysql_real_escape_string( $_POST['questionText'][$i] ) ."','".  
                    mysql_real_escape_string( $optionid ) ."'";

}

 $questionsql = "INSERT INTO Question (SessionId, QuestionId, QuestionContent, QuestionMarks, OptionId) 
    VALUES (" . implode('), (', $insertquestion) . ")";

echo($questionsql);


mysql_close();
EN

回答 2

Stack Overflow用户

发布于 2012-04-05 13:32:22

你不必生成这些问号。尝试在数据库中使用自动增量序列。你把这里的一些事情弄糊涂了。您需要数据库中的唯一标识符,这与前面表的编号不同。此外,如果您有不同的考试与不同的问题,您应该有两个表,一个举行您的考试,和一个持有您的问题的自动增量id和一个外键,以引用它属于的考试。在这种情况下,您不必提交问题Id,而只需查询问题名(以及考试引用),数据库将生成您的Id。表中的问题计数值需要独立于数据库Id。

票数 0
EN

Stack Overflow用户

发布于 2012-04-05 13:36:19

如果它是主键,则按如下方式离开该字段

代码语言:javascript
复制
INSERT INTO Question (QuestionContent) VALUES ('what is my name'), ('what is my age')

它将自动将id分配给问题。当您获得要显示的数据时,您可以简单地使用一个变量来生成问号。您必须避免使用id作为问号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10029375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档