2013-03-22 9 views
0

我無法找到正確的方式更新表中的一行。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

這是一個空白頁面。而不是在表格中編輯行。

+0

歡迎來到StackOverflow!請回復我的帖子回覆你的問題。考慮投票承認爲查看代碼所做的努力,並在評論幫助您解決問題(直接或間接)時接受答案。謝謝。 – 2013-03-22 11:49:16

回答

0

基本調試策略

(1)您所創建的所有視圖文件?

(2)您是否獨立測試edit_phonebook($id)

(3)redirect(site_url().'ImenikController/', 'refresh');是什麼顯示? 您是否定義了ImenikController的索引函數?

(4)當您說'該解決方案無效'時,您使用了什麼網址。 ?

(5)如果您的網址是:「本地主機/ 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,因此,你不要在你的if語句需要isset($id)。我會寫$id = $this->uri->segment(3,0);將默認設置爲0而不是FALSE以保持邏輯更清晰。

+0

感謝您的回答,但我以某種方式解決了我的問題。 我在我的觀點中提出了一個鏈接: – 2013-03-25 08:00:34

+0

我很高興聽到您找到了解決方案。我希望我的回答能夠投票,我確實花時間瀏覽了代碼,並確定了問題的原因。謝謝。 – 2013-03-25 10:43:50

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通過槽驗證和加載視圖。

再次感謝併爲我的英語感到遺憾...