编辑和更新CodeIgniter

时间:2016-11-24 19:29:34

标签: php codeigniter

我在第一个CodeIgniter项目中编辑和更新项目时遇到了问题。当我单击编辑按钮时,首先,它会加载视图,其中输入填充了数据库中该项的信息,但它不会加载我正在使用的引导程序。

然后,当我点击“编辑”按钮时,会返回许多错误,说明:

  • 我在控制器上的函数缺少一个参数,变量未定义,

  • 我的视图有一个未定义的偏移量,并试图获取非对象的属性。

除此之外,CRUD的所有其他命令都正常工作。

我正在使用的CodeIgniter版本是2.2.6

代码:

  • 型号:

    function edit($id)
    {
        $this->db->where('id', $id);
        $query = $this->db->get('products');
        return $query->result();
    }
    
    function update($data)
    {
        $this->db->where('id', $data['id']);
        $this->db->set($data);
        return $this->db->update('products');
    }
    
  • 控制器:

    function edit($id)
    {
        $data['title'] = "Edit Product";
        $data['product_data'] = $this->model->edit($id);
        $this->load->view('productEdit', $data);
    }
    
    function update()
    {
        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters('<span>', '</span>');
        $validations = array(
            array(
                'field' => 'name',
                'label' => 'Name',
                'rules' => 'trim|required|max_length[255]'
            ),
            array(
                'field' => 'price',
                'label' => 'Price',
                'rules' => 'trim|required|max_length[255]'
            ),
            array(
                'field' => 'stock_quantity',
                'label' => 'In Stock',
                'rules' => 'trim|required|max_length[255]'
            )
        );
        $this->form_validation->set_rules($validations);
        if ($this->form_validation->run() === FALSE) {
            $this->edit($this->input->post('id'));
        } else {
            $data['id'] = $this->input->post('id');
            $data['name'] = $this->input->post('name');
            $data['price'] = $this->input->post('price');
            $data['stock_quantity'] = $this->input->post('stock_quantity');
            if ($this->model->update($data)) {
                redirect('products');
            } else {
                log_message('error', 'Error');
            }
        }
    }
    
  • 查看:

    <?php echo form_open('products/edit/', 'id="form-products"'); ?>
    
    <input type="hidden" name="id" value="<?php echo $product_data[0]->id; ?>"/>
    
    <label for="nome">Product Name:</label><br/>
    <input type="text" name="name" value="<?php echo $product_data[0]->name; ?>"/>
    <div class="error"><?php echo form_error('name'); ?></div>
    
    <label for="email">Price:</label><br/>
    <input type="text" name="price" value="<?php echo $product_data[0]->price; ?>"/>
    <div class="error"><?php echo form_error('price'); ?></div>
    
    <label for="email">In Stock:</label><br/>
    <input type="text" name="stock_quantity" value="<?php echo $product_data[0]->stock_quantity; ?>"/>
    <div class="error"><?php echo form_error('stock_quantity'); ?></div>
    
    <input type="submit" name="update" value="Update" />
    
    <?php echo form_close(); ?>
    

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

  • 试试这个 更新您的模型 function edit($id) { $this->db->where('id', $id); $query = $this->db->get('products'); return $query->row(0); }

然后在你看来。

<input type="hidden" name="id" value="<?php echo $product_data->id; ?>"/>

也会更改您的表单操作

products/update/