在CodeIgniter中检查重复数据,尝试做一个回调函数 [英] Check duplicate data in CodeIgniter try to make a callback function

查看:88
本文介绍了在CodeIgniter中检查重复数据,尝试做一个回调函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一张注册表.在这里,我可以通过我的自定义独特的回叫功能检查重复的电子邮件(不要尝试使用is_unique).但是它不返回任何东西.这是我的代码.

I have a registration form. Here I'm able to check duplicate email by my custom is unique call back function (Don't try to use is_unique). But it doesn't returns anything. Here is my code.

控制器-

public function add_member () {

    $this->load->library('form_validation');

    $post_email = $this->input->post('email_id');
    $this->form_validation->set_rules('email_id', 'Email ID/ Username', 'required|trim|xss_clean|valid_email|callback_check_duplicate_email[' . $post_email . ']');
    $this->form_validation->set_rules('password', 'Your password', 'required|min_length[5]|max_length[12]|matches[confirm_password');
    $this->form_validation->set_rules('confirm_password', 'Password Confirmation', 'required');

    $this->form_validation->set_message('check_duplicate_email', 'This email is already exist. Please write a new email.');

    if ($this->form_validation->run() == FALSE) {
        // validation failed then do that

        $this->load->view('member/reg_form');

    } else {

        $data['email_id'] = $post_email;
        $data['password'] = MD5($this->input->post('password'));

        $insert = $this->Model_member->insert_data_to_db($data);

        if ($insert) {
            $success = "Wao ! You are successfully added to our community.";
            $this->session->set_flashdata('message_success', $success);
            $this->load->view('member/success_page');
        } else {
            $error = "Hey this email is already exists in our community.";
            $this->session->set_flashdata('message_error', $error);
            $this->load->view('member/reg_form');
        }
    }

}

// My callback function
public function check_duplicate_email($post_email) {

    return $this->Model_member->checkDuplicateEmail($post_email);

}

模型-

 //for checking email existance
 public function checkDuplicateEmail($post_email) {

    $this->db->where('email_id', $email_id);

    $query = $this->db->get('my_registration_table');

    $count_row = $query->num_rows();

    if ($count_row > 0) {
        return TRUE;
    } else {
        return FALSE;
    }
}

// insert data to DB
public function insert_data_to_db($data) {
    return $this->db->insert('my_registration_table', $data);
}

当我尝试使用已经存在的电子邮件提交表单时.此功能不会阻止我,也不会显示验证错误消息.有人在这里看看有什么问题吗?等待您的帮助.

When I try to submit form with email which is already exists. This function doesn't stop me and doesn't show the validation error message. Would anyone here to see what's the problem? Waiting for your help.

推荐答案

您的问题出在模型函数中.看下面的模型函数.

Your problem is in the model function. Look at the following model function.

public function checkDuplicateEmail($post_email) {

    $this->db->where('email_id', $email_id);

    $query = $this->db->get('my_registration_table');

    $count_row = $query->num_rows();

    if ($count_row > 0) {
      //if count row return any row; that means you have already this email address in the database. so you must set false in this sense.
        return FALSE; // here I change TRUE to false.
     } else {
      // doesn't return any row means database doesn't have this email
        return TRUE; // And here false to TRUE
     }
}

尝试一下.希望有效.

Try this. Hope works.

这篇关于在CodeIgniter中检查重复数据,尝试做一个回调函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆