我是CI的新手,今天一直试图创建一个更新表单类,但我正陷入死胡同。我设置了我的函数来创建表单并将数据发布到数据库,我现在需要能够更新它。
我的编辑表单功能如下:
public function edit_event()
{
$vars = array();
$data['form_url'] = $this->form_url;
if ($form_id = $this->EE->input->get('form_id'))
{
$data['form_id'] = $form_id;
}
return $this->EE->load->view('edit_event', $data, TRUE);
}
并且函数中加载的edit_event文件是:
<?php
$this->EE=& get_instance();
$this->load->helper('form');
$attributes = array('class' => 'event_form', 'id' => 'my_event_form');
echo form_open($form_url.AMP.'method=update_form', $attributes);
$this->EE->load->library('table');
$this->EE->table->set_heading(
'Preference',
'Setting'
);
$query = $this->EE->db->query("SELECT * FROM exp_events WHERE id = '$form_id'");
foreach($query->result_array() as $row)
{
$this->EE->table->add_row(
form_label('Application Key', 'app_key'),
form_input('app_key',$row['app_key'])
);
$this->EE->table->add_row(
form_label('Access Token', 'access_token'),
form_input('access_token',$row['access_token'])
);
$this->EE->table->add_row(
form_label('User Key', 'user_key'),
form_input('user_key',$row['user_key'])
);
}
echo $this->EE->table->generate();
echo form_reset('reset', 'Clear Form');
echo form_submit('mysubmit', 'Submit Post!');
echo form_close();
?>
然后我有更新表单功能:
public function update_form()
{
$form_id = $this->EE->input->get('form_id');
$data['form_id'] = $form_id;
$form_data = array(
'app_key' => $this->EE->input->post('app_key'),
'access_token' => $this->EE->input->post('access_token'),
'user_key' => $this->EE->input->post('user_key')
);
$this->EE->db->where('id', $form_id);
$this->EE->db->update('exp_events', $form_data);
$this->EE->functions->redirect($this->base_url);
}
当删除$ form_if选项时,我可以获取要更新的数据,但它会更新数据库中的每个项目。我显然需要这个只用正在编辑的表单的表单id更新数据。
按照目前的情况,当我提交更新表单时,我会被重定向到我的$ base_url,这是正确的,但没有数据更新,因此我在定义表单ID时显然做错了吗?
正如我所说,我是新手,所以如果有人注意到任何首选方法,请随时告诉我:)。
任何指示赞赏。
提前致谢。
本
答案 0 :(得分:0)
您需要在表单中包含一个“隐藏”字段,并使用form_id。目前你的'form_id'不是你输入的一部分,所以当你去获取form_id时它就失败了。
变化
echo $this->EE->table->generate();
echo form_reset('reset', 'Clear Form');
echo form_submit('mysubmit', 'Submit Post!');
到
echo $this->EE->table->generate();
echo form_hidden('form_id', $form_id);
echo form_reset('reset', 'Clear Form');
echo form_submit('mysubmit', 'Submit Post!');