我无法找到更新表格中一行的正确方法。
我的观点:
...
<?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
这是一个空白(白色)页面。而不是在表格中编辑行。
答案 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通过验证和加载视图。
再次感谢,对不起我的英语......