0

我真的是 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 时显然做错了什么?

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

任何指针表示赞赏。

提前致谢。

4

1 回答 1

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!');
于 2012-11-26T03:00:24.023 回答