CodeIgniter - 我无法更新表格中的行

时间:2013-03-22 10:25:43

标签: codeigniter

我无法找到更新表格中一行的正确方法。

我的观点:

...
<?php echo form_open('ImenikController/verify_editing_phonebook/'.$this->uri->segment(3)); ?>
Ime i prezime*:
<input type='text' name='ime_prezime' value=""> <br><br>
    Ulica i broj: <input type='text' name='ulica' value="">  <br><br>
    Mesto:        <input type='text' name='mesto' value="">  <br><br>
    Telefon*:     <input type='text' name='telefon' value=""> <br><br>

    <u>Napomena: Polja sa zvezdicom su obavezna.</u> <br /> <br />
    <input background:url('images/login-btn.png') no-repeat; border: none; 
      width='103' height='42' style='margin-left:90px;'  type='submit' value='Izmeni'>
<?php echo form_close(); ?>
...

我的控制器:

function verify_editing_phonebook()
{
    if ($this->session->userdata('logged_in'))
    {
        if ($this->session->userdata('admin') == 1)
        {

            $this->form_validation->set_rules('ime_prezime', 'Ime i prezime', 'trim|required|xss_clean');               
            $this->form_validation->set_rules('telefon', 'Telefon', 'trim|required|xss_clean');

            if ($this->form_validation->run() == TRUE)
            {
                $id = $this->uri->segment(3);
                if (isset($id) and $id > 0)
                {
                    $this->load->model('LoginModel');
                    $this->LoginModel->edit_phonebook($id);

                    redirect(site_url().'ImenikController/', 'refresh');
                }
            }
            else {
                $temp = $this->session->userdata('logged_in');
                $obj['id'] = $temp['id'];
                $data['records'] = $this->LoginModel->get_Username($obj);
                $this->load->view('ErrorEditing', $data);

            }
        }
        else {
            $this->load->view('restricted_admin');
        }
    }
    else {
        $this->load->view('restricted');
    }
}

我的模特:

function edit_phonebook($id)
    {
        $data = array ('ime_prezime' => $this->input->post('ime_prezime'), 
            'ulica' => $this->input->post('ulica'),
            'mesto' => $this->input->post('mesto'),
            'telefon' => $this->input->post('telefon'));

       $this->db->where('id', $id);
     $this->db->update('pregled', $data);        
    }

该解决方案不起作用。 我得到的网址是:localhost / imenik114 / ImenikController / verify_editing_phonebook

这是一个空白(白色)页面。而不是在表格中编辑行。

2 个答案:

答案 0 :(得分:0)

基本调试策略

(1)您是否创建了所有视图文件?

(2)您是否独立测试了edit_phonebook($id)

(3)redirect(site_url().'ImenikController/', 'refresh');显示什么?     您是否为ImenikController定义了索引函数?

(4)当您说“该解决方案不起作用”时,您使用了哪个URL。 ?

(5)如果你的网址是:“localhost / imenik114 / ImenikController / verify_editing_phonebook” 您未在第3段中输入id

(6)如果您尚未登录,是否看到了正确的restricted视图?

(7)如果您已登录而非管理员,您是否看到了正确的restricted_admin视图?

潜在错误

查看代码的这一部分:

        if ($this->form_validation->run() == TRUE)
        {
            $id = $this->uri->segment(3);
            if (isset($id) and $id > 0)
            {
                $this->load->model('LoginModel');
                $this->LoginModel->edit_phonebook($id);

                redirect(site_url().'ImenikController/', 'refresh');
            }
            // You need to handle the case of $id not set
            else
            {
              // load a view with error page saying $id is missing...
            }
        }

如果您的表单有效,并且您没有传递segment(3),您的控制器将无法加载视图,因此,您将获得一个空白页。

您需要检查$id不存在的情况,请参阅代码。

代码修复

还有一个细节:语句$id = $this->uri->segment(3);会将$id设置为id号码或FALSE,因此,您不需要isset($id)你的if语句。我会写$id = $this->uri->segment(3,0);将默认值设置为0而不是FALSE,以使逻辑更清晰。

答案 1 :(得分:0)

感谢您的回答但我以某种方式解决了我的问题。 我在我的观点中建立了一个链接:

<a href="<?php echo site_url(). 'Controller/edit/'.$row->id; ?>" title="">Edit</a>

为了进行编辑:

<?php echo form_open('Controller/verify_editing_phonebook/'.$this->uri->segment(3)); ?>

函数verify_editing_phonebook通过验证和加载视图。

再次感谢,对不起我的英语......