Codeigniter回调阻止添加重复的名字和姓氏

时间:2015-10-22 05:47:04

标签: php codeigniter callback

我需要有关如何检查数据库中是否已存在firstname和lastname然后使用codeiginiter调用回调的帮助。我现在完全陷入了困境。 顺便说一下,Firstname和Lastname是两个不同的字段。感谢

public function check_duplicate($str,$col) 
        {
            $res = $this->db->get_where("patients",array(
                'firstname' => 'Firstname',
                'lastname' => 'Lastname'
                ));
            if($res->num_rows()){
                 $this->form_validation->set_message('check_duplicate', 'The %s field already exists.');
                 return false;
            }  else {
                 return true;
            }
        }

2 个答案:

答案 0 :(得分:1)

不需要回调。您可以改为使用is_unique

$this->form_validation->set_rules("firstname","First Name"."required|is_unique[tablename.columnname]");
$this->form_validation->set_rules("lastname","last Name"."required|is_unique[tablename.columnname]");

或者如果您想使用回调,请使用此

$this->form_validation->set_rules("firstname","First Name"."required|callback_check_name");

public function check_name($str)
{
    $res = $this->db->get_where("users",array("fname" => $str));
    if($res->num_rows()){
         $this->form_validation->set_message('check_name', 'The %s field already exists.');
         return false;
    }  else {
         return true;
    }
}

所以现在你必须编写2个回调函数来处理表单验证。你可以将它作为这样的回调。

$this->form_validation->set_rules("firstname","First Name"."required|callback_check_name[firstname]");

$this->form_validation->set_rules("firstname","First Name"."required|callback_check_name[lastname]");

public function check_name($str,$col)//passing one more parameter.
{
    $res = $this->db->get_where("users",array($col => $str));
    if($res->num_rows()){
         $this->form_validation->set_message('check_name', 'The %s field already exists.');
         return false;
    }  else {
         return true;
    }
}

答案 1 :(得分:0)

你可以使用ajax和jquery这里是一个如何实现

的链接

http://tutsforweb.blogspot.com/2012/05/jquery-ajax-form-validation-in.html