CodeIgniter 更新数据库
CodeIgniter update database
我无法更新输入字段中的数据。下面是我的例子。
当我将新数据放入该输入字段并按编辑时,数据库中的数据应该会更新。到目前为止我分析的主要问题在Model
。我无法指定 $this->db->where( 'id', $id);
应指定每一行的 ID。
查看文件:
<?php if(isset($records)) : foreach($records as $row): ?>
<tr>
<?php echo form_open('main/update') ?>
<td> <input type="hidden" name="id" value="<?php echo $row->id ;?>" /></td>
<td> <input type="text" name="edit_tname" value="<?php echo $row->tname ;?>"/> </td>
<td><input type="text" name="edit_time" value="<?php echo $row->time; ?>" /</td>
<td>
<?php
$bttn = '<input type="submit" value="Update" class="btn btn-default "/>';
echo anchor("main/update/$row->id", $bttn);
echo form_close();
?>
控制器:
public function update()
{
$updated_data = array(
'tname' => $this->input->post('edit_tname'),
'time' => $this->input->post('edit_time')
);
$this->model_users->updateM($updated_data);
redirect('main');
}
型号:
public function updateM($updated_data)
{
$this->db->where('id', $this->uri->segment(3));
$this->db->update('tasks',$updated_data);
}
您查看的文件应如下所示:
<?php if(isset($records)) : foreach($records as $row): ?>
<tr>
<?php echo form_open('main/update/' . $row->id) ?>
<td> <input type="hidden" name="id" value="<?php echo $row->id ;?>" /></td>
<td><input type="text" name="edit_tname" value="<?php echo $row->tname ;?>"/></td>
<td><input type="text" name="edit_time" value="<?php echo $row->time; ?>" /></td>
<td><input type="submit" value="Update" class="btn btn-default "/></td>
</form>
</tr>
解释:
- 锚元素不提交表单(删除锚元素并使用提交输入提交表单)
- 如果你检查
form_open
生成的 URL 那么你会看到之前生成的 URL 看起来像 main/update
但事实上我们需要 post/get 将建议的更改 中的值转换为 main/update/XX
- 封闭式标签
您已经在表单的隐藏输入中传递 id
那么为什么要使用 $this->uri->segment()
而不是 $this->input->post('id')
以及为什么在传递 [= 的地方使用锚点13=] 按钮而不是 link 您在表单的 action
属性中的控制器,直接使用 <input type="submit">
按钮以及不关闭 </form>
按钮不是好的做法</from>
或 echo from_close()
关闭表单。
由于您正在使用 loop
创建多个表单,因此您没有关闭表单,所有多个表单都被视为单个表单。最后关闭表格即可解决问题。
希望这能帮助您解决问题
试试这个:
控制器:
public function update()
{
$updated_data = array(
'tname' => $this->input->post('edit_tname'),
'time' => $this->input->post('edit_time')
);
$this->model_users->updateM($updated_data, $this->input->post('id'));
redirect('main');
}
型号:
public function updateM($updated_data, $id)
{
$this->db->where('id', $id);
$this->db->update('tasks',$updated_data);
}
我无法更新输入字段中的数据。下面是我的例子。
当我将新数据放入该输入字段并按编辑时,数据库中的数据应该会更新。到目前为止我分析的主要问题在Model
。我无法指定 $this->db->where( 'id', $id);
应指定每一行的 ID。
查看文件:
<?php if(isset($records)) : foreach($records as $row): ?>
<tr>
<?php echo form_open('main/update') ?>
<td> <input type="hidden" name="id" value="<?php echo $row->id ;?>" /></td>
<td> <input type="text" name="edit_tname" value="<?php echo $row->tname ;?>"/> </td>
<td><input type="text" name="edit_time" value="<?php echo $row->time; ?>" /</td>
<td>
<?php
$bttn = '<input type="submit" value="Update" class="btn btn-default "/>';
echo anchor("main/update/$row->id", $bttn);
echo form_close();
?>
控制器:
public function update()
{
$updated_data = array(
'tname' => $this->input->post('edit_tname'),
'time' => $this->input->post('edit_time')
);
$this->model_users->updateM($updated_data);
redirect('main');
}
型号:
public function updateM($updated_data)
{
$this->db->where('id', $this->uri->segment(3));
$this->db->update('tasks',$updated_data);
}
您查看的文件应如下所示:
<?php if(isset($records)) : foreach($records as $row): ?>
<tr>
<?php echo form_open('main/update/' . $row->id) ?>
<td> <input type="hidden" name="id" value="<?php echo $row->id ;?>" /></td>
<td><input type="text" name="edit_tname" value="<?php echo $row->tname ;?>"/></td>
<td><input type="text" name="edit_time" value="<?php echo $row->time; ?>" /></td>
<td><input type="submit" value="Update" class="btn btn-default "/></td>
</form>
</tr>
解释:
- 锚元素不提交表单(删除锚元素并使用提交输入提交表单)
- 如果你检查
form_open
生成的 URL 那么你会看到之前生成的 URL 看起来像main/update
但事实上我们需要 post/get 将建议的更改 中的值转换为 - 封闭式标签
main/update/XX
您已经在表单的隐藏输入中传递 id
那么为什么要使用 $this->uri->segment()
而不是 $this->input->post('id')
以及为什么在传递 [= 的地方使用锚点13=] 按钮而不是 link 您在表单的 action
属性中的控制器,直接使用 <input type="submit">
按钮以及不关闭 </form>
按钮不是好的做法</from>
或 echo from_close()
关闭表单。
由于您正在使用 loop
创建多个表单,因此您没有关闭表单,所有多个表单都被视为单个表单。最后关闭表格即可解决问题。
希望这能帮助您解决问题
试试这个:
控制器:
public function update()
{
$updated_data = array(
'tname' => $this->input->post('edit_tname'),
'time' => $this->input->post('edit_time')
);
$this->model_users->updateM($updated_data, $this->input->post('id'));
redirect('main');
}
型号:
public function updateM($updated_data, $id)
{
$this->db->where('id', $id);
$this->db->update('tasks',$updated_data);
}