2017-07-04 46 views
2

這裏我有一個類別列表,用戶可以添加一個新類別以及編輯它們。無法通過codeIgniter驗證在編輯時更改值

現在編輯時我使用codeigniter進行服務器端驗證以減少冗餘。但問題是,無論何時編輯現有類別,都無法更新它,因爲它與原始值相比,這是錯誤的。我試圖很多時間,但無法解決這個問題。

這裏是我的代碼

public function category_upd() 
{ 
    extract($_POST); 
    $userId = $this->session->userdata('id'); 
    $original_value = $this->db->query("SELECT cat_name FROM category WHERE user_id=".$userId." and cat_name ='".$_POST['cat_name']."'") ; 

    $original_value = $original_value->result_array(); 
    $original_value = $original_value[0]['cat_name']; 

    $original_value2 = $this->db->query("SELECT cat_name FROM category WHERE user_id=".$userId." and cat_name ='".$_POST['cat_name']."'") ; 

    $original_value2 = $original_value2->result_array(); 

    $original_value2 = $original_value2[0]['cat_name']; 

    if(ucwords($_POST['cat_name']) != $original_value) { 
     $this->session->set_flashdata('cat_failed','Category must be unique.'); 
     $is_unique = '|is_unique[category.cat_name]'; 
    } else if(ucwords($original_value2 == "")){ 

     echo "go"; 
     exit; 

     $this->session->set_flashdata('cat_failed','Category must be unique.'); 
     $is_unique = '|is_unique[category.cat_name]'; 
    } else { 
     $is_unique = ''; 
    } 
    $this->form_validation->set_rules('cat_name','Category','trim|required'.$is_unique); 
    if($this->form_validation->run()) { 

的搭扣,用錯誤

enter image description here

我需要你的一種努力。由於

+0

的[從庫中的CodeIgniter(PHP)設置窗體\ _Validation規則]可能的複製(https://stackoverflow.com/questions/18813779/set-a-form-validation-rule-from- a-library-in-codeigniter-php) –

回答

1

這樣設置驗證規則,你需要通過價值類ID

$this->form_validation->set_rules('cat_name', 'cat_name', 'required|trim|edit_unique[category.category_name.' . $_POST['category_id'].'.'.$_POST['user_id']. ']', array('edit_unique' => 'Category must be unique.')); 

而開發的一個功能edit_unique上Form_validation.php這樣 文件路徑系統/庫/ Form_validation。 php

public function edit_unique($str, $field) 
    { 

     sscanf($field, '%[^.].%[^.].%[^.].%[^.]', $table, $field,$id, $field2); 
     return isset($this->CI->db) 
      ? ($this->CI->db->limit(1)->get_where($table, array($field => $str, 'id !=' => $id,'user_id'=>$field2))->num_rows() === 0) 
      : FALSE; 

    } 
+0

還有一個查詢給你,請 –

+0

是的請...... ...... –

+0

假設,我們有兩個用戶,他們有不同的id(s)。以及是否有一個用戶名爲「學生」的類別。那麼第二個用戶不能編輯任何具有「學生」名稱的類別。爲什麼? 用戶ID永遠是不同的na –

1

檢查數據庫中的類別名稱是否存在。

$newcategoryName=$this->input->post('category'); 
    $query = $this->db->get_where('category', array('cat_name' => $newcategoryName,'user_id' => $userId)); 
    $val=$query->result_array(); 
    $original_value = $val[0]['cat_name']; 
      if($newcategoryName != $original_value) { 
       $is_unique = '|is_unique[users.EMAIL]'; 
      } else { 
       $is_unique = ''; 
      } 
    $this->form_validation->set_rules('cat_name', 'Category', 'required|trim|xss_clean'.$is_unique); 
+0

它不工作時userID是不同的。 –

+0

你明白我的問題嗎? –

+0

我編輯了代碼。將您的新類別名稱發佈到變量並檢查您的表 –