0

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

我的观点:

...
<?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

这是一个空白(白色)页面。并且不编辑表格中的行。

4

2 回答 2

0

基本调试策略

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

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

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

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

(5) 如果您的 URL 是:“localhost/imenik114/ImenikController/verify_editing_phonebook”,您没有在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);将设置$ididnumber 或FALSE,因此,您的 if 语句中不需要isset($id)。我会写$id = $this->uri->segment(3,0);将默认设置为0而不是FALSE让逻辑更清晰。

于 2013-03-22T11:34:35.577 回答
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 通过了验证和加载视图。

再次感谢并为我的英语感到抱歉...

于 2013-03-25T08:07:04.713 回答