2017-07-04 13 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()) { 

Aは、私はあなたの親切な努力を必要とするエラー

enter image description here

にスナップされます。このような感謝

+0

可能な複製(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.')); 

に合格する必要があり、この ファイルパスシステム/ライブラリ/ Form_validationようForm_validation.php上の一つの機能edit_uniqueを開発しました。 ph

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

私たちは2人のユーザーを持っていて、それぞれのIDは異なります。 1人のユーザの「生徒」という名前のカテゴリがある場合。 2番目のユーザーは "student"という名前のカテゴリを編集できません。どうして ? ユーザーIDは常にna –

1

チェックカテゴリ名はデータベース内のalredyです。

$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); 
[CodeIgniterは(PHP)で、ライブラリからフォームの\ _Validationルールを設定する]の
+0

userIDが異なる場合は動作しません。 –

+0

あなたは私の質問を理解しているかどうか? –

+0

私はコードを編集しました。新しいカテゴリ名を変数に投稿し、テーブル –

関連する問題