2017-06-04 72 views
1

是否有笨表單驗證庫的方式來確定一個人的數據的重複錄入,如果我認爲像這樣的情況很多條件: 名字,中間名,姓,出生日期是在db中匹配。名,中間名,姓和生日:笨表單驗證在檢查重複

例如,我需要檢查,如果這個人已經是如果數據匹配來自DB認爲,同樣存在。

在這種情況下,我不能使用每種輸入類型的is_unique,因爲如果此人具有相同的名字,姓氏和中間名,但生日是不同的。我如何在codeigniter中做這樣的表單驗證?

事情是這樣的查詢:

SELECT COUNT(patient_id) AS patient_id FROM patients WHERE patients.firstname = "" AND patients.middlename = "" AND patients.lastname = "" AND patients.birthdate = "" 

如果查詢結果大於1,那麼它被認爲是一個重複的條目。我怎麼能在codeigniter表單驗證中做到這一點?

這是我在控制器代碼:

public function addpatient() { 

     $this->form_validation->set_rules('pafname', 'pafname', 'trim|required', 
      array('required' => 'First name is required') 
      ); 

      $this->form_validation->set_rules('pamname', 'pamname', 'trim|required', 
      array('required' => 'Middle name is required') 
      ); 

      $this->form_validation->set_rules('palname', 'palname', 'trim|required', 
      array('required' => 'Last name is required') 
      ); 

      $this->form_validation->set_rules('paaddress', 'paaddress', 'trim|required', 
      array('required' => 'Address is required') 
      ); 

      $this->form_validation->set_rules('pacontact', 'pacontact', 'trim|required', 
      array('required' => 'Contact # is required') 
      ); 

      $this->form_validation->set_rules('pabdate', 'pabdate', 'trim|required', 
      array('required' => 'Birthdate is required') 
      ); 

      $this->form_validation->set_rules('psex', 'psex', 'trim|required', 
      array('required' => 'Gender is required') 
      ); 

      $this->form_validation->set_rules('pmartialstat', 'pmartialstat', 'trim|required', 
      array('required' => 'Martial status is required') 
      ); 

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

        $result['status'] = true; 
        $result['message'] = "This patient has no duplicate"; 
      }else { 
       $result['status'] = false; 

       $result['message'] = $this->form_validation->error_array(); 
      } 
      echo json_encode($result); 
    } 

回答

0

創建您自己的custom validation method。在自定義驗證方法中,調用SQL以查看是否存在所有字段匹配的記錄,並根據匹配返回TRUE/FALSE。

喜歡的東西:

$this->form_validation->set_rules('pafname', 'pafname', 'trim|required|callback__duplicate_validation', 
     array('required' => 'First name is required', 
       'callback__duplicate_validation' => 'Duplicate record') 
     ); 

function _duplicate_validation($pafname) { 
    // Get _POST data for all fields since only pafname is passed in 
    // Call SQL to see if duplicate 
    // if duplicate, return FALSE 
    // else return TRUE 
} 
+0

謝謝您的回覆,先生,你已經回答是隻爲姓,如果認爲我需要FNAME,中間名,姓氏和生日我的病情? .. –

+0

Codeigniter表單驗證一次只傳入一個參數。由於您的驗證需要所有字段,因此您需要從自定義驗證中的$ _POST數據中提取所有字段 –