Codeigniter更新表格

时间:2012-11-25 23:26:51

标签: php codeigniter expressionengine

我是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时显然做错了吗?

正如我所说,我是新手,所以如果有人注意到任何首选方法,请随时告诉我:)。

任何指示赞赏。

提前致谢。

1 个答案:

答案 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!');