首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codeigniter表单验证检查重复时的许多条件

问Codeigniter表单验证检查重复时的许多条件
EN

Stack Overflow用户
提问于 2017-06-04 11:31:26
回答 1查看 1K关注 0票数 1

如果我考虑这样的条件:名字,中间名,姓氏,出生日期在数据库中匹配,那么在codeigniter表单验证库中是否有方法来确定人员数据的重复条目。

例如,我需要检查这个人是否已经存在,如果数据与数据库中的-same:名字、中间名、姓氏和出生日期匹配。

我不能在这种情况下使用is_unique的每一个输入类型,因为如果一个人有相同的名字,姓氏和中间名,但出生日期不同怎么办。如何在codeigniter中进行这样的表单验证?

类似这样的查询:

代码语言:javascript
复制
SELECT COUNT(patient_id) AS patient_id FROM patients WHERE patients.firstname = "" AND patients.middlename = "" AND patients.lastname = "" AND patients.birthdate = ""

如果查询结果大于1,则将其视为重复条目。我如何在codeigniter表单验证中做到这一点?

以下是我在Controller中的代码:

代码语言:javascript
复制
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);
    }
EN

回答 1

Stack Overflow用户

发布于 2017-06-04 15:00:57

创建您自己的custom validation method。在自定义验证方法中,调用SQL以查看是否存在所有字段都匹配的记录,并根据匹配返回TRUE/FALSE。

类似于:

代码语言:javascript
复制
$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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44350520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档