如何使用单选按钮更新特定行上的数据数组?点火枪

时间:2020-03-15 13:14:46

标签: php mysql codeigniter codeigniter-3

我正在制作一个后端测验应用程序,后端用户将在其中更改答案或选择。

我希望单选按钮将值更改为 1 或更新我的答案或选择,并将以前的选择替换为 0

我有answers表,这是我的输入示例

correct字段是我希望用户每次更改选择或答案时都会更新的字段 。预期的结果是,如果我更新正确的选择,则先前的选择将被0代替。并且新选择或答案将在正确字段

中更新为1
id | answers | question_id | correct
1  |   A     |     1       |   0
2  |   B     |     1       |   1
3  |   C     |     1       |   0
4  |   D     |     1       |   0
5  |  F.1    |     2       |   0
6  |  F.2    |     2       |   1

更新模型-这样我就可以更新或更改答案文本数组,但是我不熟悉更新和替换ID的值。

public function update_post(){

        $id = $this->input->post('answers_textId');

        $data = $this->input->post();

            for($i = 0; $i < (count($data['id'])); $i++){

                $batch[] = array(
                'id' => $data['id'][$i],
                'answer' => $data['answer'][$i],
                'correct' => $data['correct_id'][$i]
                );
            }

        return $this->db->update_batch('answers', $batch, 'id');
} 

视图中

这是ID

<input type="hidden" name="answers_textId" value="<?php echo $answer['question_id']; ?>" />  //For the question_id field

<input type="hidden" name="id[]" value="<?php echo $answer['id']; ?>" /> //For the id or PK

这是我的单选按钮,其元素为opt_1opt_2,依此类推。

<input type="radio" class="form-check-input" name="opt_<?php echo $answer['id']; ?>" value="1">

这是我的文本字段或文本框

<h5>Choice: </h5><input type="text" name="answer[]" class="form-control" value="<?php echo $answer['answer']; ?>" />

1 个答案:

答案 0 :(得分:0)

你是昨天的家伙:)

我假设您已经向控制器发送了数据

您需要question_id和id(来自答案表)

首先全部更新正确=假或0,其中question_id = $ id(问题的ID)

这将使所有问题的答案都正确0,例如question_id = 1的答案为4,将所有4个答案的答案都设置为正确= 0

然后更新正确= 1,其中id = answer_table_id(PK),question_id = $ id(问题ID)

这将更新您所做更改的答案以更正= 1 您不需要此问题,因为ID(答案表pk)是唯一的

现在尝试制作该功能。