Model view controller Codeigniter更新批的问题
我有一个视图文件,其中基于数据库get操作生成一些输入字段。我正在努力为参加考试的学生取得分数。这些学生是动态填充的,下面是视图文件的代码 查看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
<?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');
}
}
还需要一个改变。查看codeforeach($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[]" ...