Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在我的测验id上循环,得到每个答案并插入到答案表中_Php_Mysql - Fatal编程技术网

Php 在我的测验id上循环,得到每个答案并插入到答案表中

Php 在我的测验id上循环,得到每个答案并插入到答案表中,php,mysql,Php,Mysql,每次$qid插入数据库1 这是我的db表看起来像 ┌──┬───┬─────┬───┬────────┐ │id│uid│ad_id│qid│answer │ ├──┼───┼─────┼───┼────────┤ │1 │2 │15 │1 │Answer 1│ ├──┼───┼─────┼───┼────────┤ │2 │2 │15 │1 │Answer 2│ ├──┼───┼─────┼───┼────────┤ │3 │2 │15 │1 │Answer 3│ ├

每次
$qid
插入数据库
1

这是我的db表看起来像

┌──┬───┬─────┬───┬────────┐
│id│uid│ad_id│qid│answer  │
├──┼───┼─────┼───┼────────┤
│1 │2  │15   │1  │Answer 1│
├──┼───┼─────┼───┼────────┤
│2 │2  │15   │1  │Answer 2│
├──┼───┼─────┼───┼────────┤
│3 │2  │15   │1  │Answer 3│
├──┼───┼─────┼───┼────────┤
│4 │2  │15   │1  │Answer 4│
└──┴───┴─────┴───┴────────┘
现在,列
qid
应该是来自问题表的问题id,但它不像您看到的那样总是插入
1

这是我的PHP代码

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" id="quiz" class="container width_648">

<?php
            $getTheQuiz = $db->prepare("SELECT * FROM rec_employer_quiz WHERE ad_id=?");
            $getTheQuiz->bind_param('i', $ad);
            if ($getTheQuiz->execute()) {
                $res = $getTheQuiz->get_result();
                $i = 0;
                while ($q = $res->fetch_array()) {
                    ?>
                    <div class="oneLine">
                        <div class="question">
                            <h3><?php printf("%s", $q['question']) ?></h3>
                            <input type="hidden" value="<?php printf("%s", $q['id']) ?>" name="qid" id="qid">
                        </div>
                        <div class="answer">
                            <input type="hidden" name="qid" id="qid" value="<?php printf("%s", $q['id']) ?>">
                            <textarea name="answer[]" rows="3" maxlength="200" class="message1 width_640"></textarea>
                        </div>
                    </div>
                <?php
                }
                ?>
                <div class=" oneLine">
                    <input type="submit" name="ans" id="ans" value="I'm Finished" class=" MainBtn">
                </div>

                <?php
                $dateApplied = date(date_default_timezone_get());
                if (isset($_POST['ans'])) {
                    //$questionId=$_POST['qid'];
                    foreach ($_POST["answer"] as $key => $answer) {
                        $questionId=$_POST['qid'];
                        $answer = $_POST["answer"][$key];
                        $putData = $db->prepare("INSERT INTO rec_employer_quiz_results (id, uid, ad_id, qid, answer, exam_date)VALUE(?, ?, ?, ?, ?, FROM_UNIXTIME(?))");
                        $putData->bind_param('iiiiss', $id, $uid, $ad, $questionId, $answer, $dateApplied);
                        if ($putData->execute()) {
                            echo "done";
                        } else {
                            printf("Error: %s\n", $db->error);
                        }
                    }
                }
            }
            ?>
        </form>
我是在
print\r($\u POST)上得到这个消息的


< >在我的数据库中检查插入的<代码> QID>代码>,它只为所有行插入<代码> 1 >代码>

,让我们考虑您的代码:

<div class="question">
    <input type="hidden" value="<?php printf("%s", $q['id']) ?>" name="qid" id="qid">
 </div>
 <div class="answer">
    <input type="hidden" name="qid" id="qid" value="<?php printf("%s", $q['id']) ?>">
    <textarea name="answer[]" rows="3" maxlength="200" class="message1 width_640"></textarea>
</div>
Print\r
您将
$\u发布
值,然后查看它们是如何排列的

更进一步,您可以使用当前的
$q['id']
作为字段名的一部分:

<input type="hidden" name="qid[<?php printf("%s", $q['id']) ?>]" id="qid" value="<?php printf("%s", $q['id']) ?>">

您有许多字段具有相同的名称
qid
。你怎么想-是吗?是的,我理解的和
答案
一样,我问的是如何将
qid
添加到循环中,就像
答案
一样,我从每个
文本区域
中获取
答案
值,并将其插入数据库列中的
答案
,我不能对
qid
对于每个问题。$\u POST['qid']不会被设置。@syslogic您能告诉我为什么它永远不会被设置关于两个名为qid的字段我错了,我忘了删除另一个字段,我按照您所说的更新了代码,但我仍然得到了相同的结果一个
qid
对于所有答案,这不是我想要的,我想为每个答案设置问题id我将编辑问题供您查看。它来自
print\r($questionId)
我不需要
questionid
,我需要
print\r($\u POST)
。检查表单的代码和html,如果您进行了编辑,那么
qid
键应该是数组,而不是像现在这样的字符串。这里再次出现一些奇怪的问题。如果使用
name=“qid[]”生成html字段,则不会有零键,因为id不能为零。如果您的
打印无效,请再次检查键,或从
name=“qid[]”中删除
部分
<div class="question">
    <input type="hidden" value="<?php printf("%s", $q['id']) ?>" name="qid" id="qid">
 </div>
 <div class="answer">
    <input type="hidden" name="qid" id="qid" value="<?php printf("%s", $q['id']) ?>">
    <textarea name="answer[]" rows="3" maxlength="200" class="message1 width_640"></textarea>
</div>
<input type="hidden" name="qid[]" id="qid" value="<?php printf("%s", $q['id']) ?>">
<input type="hidden" name="qid[<?php printf("%s", $q['id']) ?>]" id="qid" value="<?php printf("%s", $q['id']) ?>">
<textarea name="answer[<?php printf("%s", $q['id']) ?>]" rows="3" maxlength="200" class="message1 width_640"></textarea>
foreach ($_POST["answer"] as $key => $answer) {
    $answer = $_POST["answer"][$key];
    $questionId = $_POST['qid'][$key];
    // do insert
}