2017-04-06 87 views
0

我已經嘗試了谷歌搜索,但沒有解決,我的代碼下面是插入前檢查重複,當「tagnumber」字段已存在將去特定的頁面,並沒有插入到表,它的工作原理,但問題是雖然沒有插入表格,但它不會去我想要的特定頁面。下面Codeigniter - 表單驗證不起作用

是我的條件語句問題:
如果數據上表單驗證存在將執行不插入數據。
如果數據不存在表單驗證將執行插入數據,但轉到錯誤的頁面(與存在數據頁面相同的頁面)。

我controoler:

function tambahSubmit() 
{ 

$tagnumber = $this->input->post("tagnumber"); 
$this->myigniter_model->addData($tagnumber); 
$this->load->helper(array('form', 'url')); 
$this->load->library('form_validation'); 

// field name, error message, validation rules 
$this->form_validation->set_rules('tagnumber', 'tagnumber', 'trim|required|is_unique[inventorytag.tagnumber]'); 
$this->form_validation->set_rules('date', 'date', 'trim|required'); 
$this->form_validation->set_rules('employee', 'employee', 'trim|required'); 
$this->form_validation->set_rules('semnumber', 'semnumber', 'trim|required'); 
$this->form_validation->set_rules('quantity', 'quantity', 'required'); 
$this->form_validation->set_rules('area', 'area', 'trim|required'); 



if($this->form_validation->run() == false) 
{ 

    $this->load->view('YearEndStock/tampilan_input_gagal'); 
} 
else 
{ 

    $this->myigniter_model->addData($tagnumber); 

    $this->load->view('YearEndStock/tampilan_input_sukses'); 


} 
} 

我的模型:

function addData($tagnumber) 
{ 
    // Added $this->db->escape() and limit 1 for Performance 
$query = $this->db->query("SELECT tagnumber FROM inventorytag WHERE tagnumber = ".$this->db->escape($tagnumber)." limit 1"); 

$data = array(  
'tagnumber' => $this->input->post('tagnumber'), 
'date'=> date('Y-m-d H:i:s'), 
'employee' => $this->input->post('employee'), 
'semnumber' => $this->input->post('semnumber'), 
'quantity' => $this->input->post('quantity'), 
'area' => $this->input->post('area') 
); 

return $query->num_rows() == 0 ? $this->db->insert('inventorytag', $data) : false; 
} 
+0

你有什麼做的,你已經添加的代碼在其他部分 $這個 - > myigniter_model-> addData($ tagnumber); 之前的表單驗證 $ this-> myigniter_model-> addData($ tagnumber); – Nobita

+0

如果插入已經完成,那麼is_unique [inventorytag.tagnumber]驗證失敗,不會得到成功頁面 – Nobita

+0

我在else部分添加了代碼$ this-> myigniter_model-> addData($ tagnumber);在表單驗證之前$ this-> myigniter_model-> addData($ tagnumber)因爲tagnumber先檢查是否已經存在或不存在,如果存在將不會插入 – rio

回答

0

然後你只需要單獨您真實的陳述。刪除你的is_unique驗證。

if($this->form_validation->run() == false) 
{ 
    SHOW ERRORS 
    $this->load->view('YearEndStock/tampilan_input_gagal'); 
} 
else 
{ 
    $row = $this->db->get_where('inventorytag', array('tagnumber' => $tagnumber))->row(); 

    if (empty($row)) { 
    //insert 
    $this->myigniter_model->addData($tagnumber); 
    } else { 
    //row exists 
    } 

    $this->load->view('YearEndStock/tampilan_input_sukses'); 


} 
+0

對不起,它仍然不會出現成功的頁面,我的「tagnumber」字段的表結構是作爲首字母鍵而不是唯一的,是嗎? – rio

+0

與.htaccess文件有關係嗎?因爲一些文章是審查,我已經嘗試改變.htaccess但它仍然無法正常工作 – rio