0

我有一个用于进行在线测试的 php 脚本。在参加考试时,我使用 post 方法在操作页面中获取答案。答案作为带有问题 ID 和所选选项值的数组传递(真或假/候选人输入的答案)。然后我有将候选人标记的答案插入数据库中。代码如下所示:

$student_id=$_POST['name'];
$survey_id=$_POST['survey_id'];

$store = array();
    if (isset($_POST['question_id'])) {
        foreach ($_POST['question_id'] as $key => $option) {

            $option1 = array_filter($option);
            print_r($option1);


            if (count($option1) > 1) {
                $option2 = implode("^", $option1);
                $store[] = $option2;

            } else {
                $value = $option1;

                $i = implode(null, $option1);

                $store[] = $i;
            }

        }
           print_r($store);
    }

    $t = new DateTime();
    $t->setTimestamp($time = time());
    $t->setTimeZone(new DateTimeZone("Asia/Singapore"));
    $date = $t->format(DateTime::RFC850);

     $SQL = "INSERT INTO answer_table(student_id ,survey_id, ans_1, ans_2, ans_3, ans_4, ans_5, ans_6, ans_7, ans_8, ans_9, ans_10, timestamp) VALUES ('$student_id','$survey_id', '$store[0]', '$store[1]', '$store[2]', '$store[3]', '$store[4]', '$store[5]', '$store[6]', '$store[7]', '$store[8]', '$store[9]', '$date')";

     $result = mysql_query($SQL);

如果学生按顺序(从问题编号 1 到 10)回答测试,则代码可以正常工作。但是当候选人以随机方式回答时(前10个然后5个这样),名为ans_1的表字段将插入问题编号10的答案。我需要插入具有相应答案的字段,(ans_1与问题1的答案类似那)无论哪种模式,候选人都会参加考试。

谁能帮我解决这个问题。提前致谢。

4

3 回答 3

0

如果$key变量中有问题 id,则可以使用

$store[$key] = $option2;

代替

$store[] = $option2;

第一个问题是数组中的第一个条目,而不管帖子数组中答案的顺序如何。

于 2013-09-30T09:11:58.870 回答
0

为了实现你的目标。你应该存储 question_id 和答案或创建另一个表来存储 question_id 和相应的答案,以及答案表的 id。

于 2013-09-30T09:11:04.710 回答
0

您可以替换 $store[] = $option2;为:

$store[$_POST['question_id']] = $option2;
于 2013-10-01T11:31:39.943 回答