Model view controller Codeigniter更新批的问题

Model view controller Codeigniter更新批的问题,model-view-controller,codeigniter-3,crud,Model View Controller,Codeigniter 3,Crud,我有一个视图文件,其中基于数据库get操作生成一些输入字段。我正在努力为参加考试的学生取得分数。这些学生是动态填充的,下面是视图文件的代码 查看 <?php if($this->session->flashdata('info')) { ?> <div class="alert alert-info"> <?php echo $this->session->flashdata('info

我有一个视图文件,其中基于数据库get操作生成一些输入字段。我正在努力为参加考试的学生取得分数。这些学生是动态填充的,下面是视图文件的代码

查看

<?php if($this->session->flashdata('info')) { ?>
            <div class="alert alert-info">
                <?php echo $this->session->flashdata('info'); ?>
            </div>
            <?php } ?>

            <?php echo form_open('dashboard/insert_marks'); ?>
            <?php foreach($entries as $ent) { ?>
            <div class="row">
                <div class="col-2">
                    <div class="form-group">
                        <label><?php echo ($ent->id); ?></label>
                        <input type="text" name="id" class="form-control" placeholder="N/A" disabled>
                    </div>
                </div>
                <div class="col-10">
                    <div class="form-group">
                        <label><?php echo ($ent->student_name); ?></label>
                        <input type="text" name="marks" class="form-control">
                    </div>
                </div>
            </div>
            <?php } ?>
            <button type="submit" name="save" value="Save Data" class="btn btn-primary">Submit</button>

            <?php echo form_close(); ?>
错误

我有一个错误“提交用于批量更新的一个或多个行缺少指定的索引。”


我不知道出了什么问题。非常感谢您的帮助。

输入已经是数组,因此请使用
$idlist=
而不是
$idlist[]=
,与
$marklist
相同。这可能是“缺少指定索引”错误的原因

$marks\u data
应该只是一个数组,而不是数组中的数组。这也可能是错误的原因

使用
foreach
循环来创建
$marks\u数据
稍微容易一些

把这些放在一起,你就会得到这个

public function insert_marks()
{
    $this->load->model('Marks_Model');

    if($this->input->post('save'))
    {
        $idlist = $this->input->post('id');
        $marklist = $this->input->post('marks');

        $marks_data = array();

        foreach($idlist as $key => $id)
        {
            // we are filling an array with arrays here
            $marks_data[] = array('id' => $id, 'marks' => $marklist[$key]);
        }

        $this->Marks_Model->update_marks($marks_data);
        $this->session->set_flashdata('info', 'Marks Updated Successfully');
        redirect($_SERVER['HTTP_REFERER'], 'refresh');
    }
}
还需要一个改变。查看code
foreach($entries as$ent)
告诉我们可能有多对
id
/
标记
输入。这意味着输入名称必须是数组,以便进行如下所示的更改

// Change this
<input type="text" name="id" ...
// to this
<input type="text" name="id[]" ...
//更改此设置

我试过这个。获取错误“为foreach()提供的参数无效”,即使在更新后也出现相同错误。我还尝试了使用它进行for循环。没有给出错误,但数据库中没有写入任何内容。我可能不得不改变为每个学生打分的策略。我想是一个接一个。
$marks\u data
是什么样子的?尝试
var\u转储($marks\u data);退出发送到模型之前。我这样做了,idlist[0]中没有任何内容。不知怎的,我们在这个数组中没有任何东西。没有。Marklist包含所有数据,但没有id
public function insert_marks()
{
    $this->load->model('Marks_Model');

    if($this->input->post('save'))
    {
        $idlist = $this->input->post('id');
        $marklist = $this->input->post('marks');

        $marks_data = array();

        foreach($idlist as $key => $id)
        {
            // we are filling an array with arrays here
            $marks_data[] = array('id' => $id, 'marks' => $marklist[$key]);
        }

        $this->Marks_Model->update_marks($marks_data);
        $this->session->set_flashdata('info', 'Marks Updated Successfully');
        redirect($_SERVER['HTTP_REFERER'], 'refresh');
    }
}
// Change this
<input type="text" name="id" ...
// to this
<input type="text" name="id[]" ...