Check duplicate data in CodeIgniter try to make a callback function
codeigniter, duplicates, mysql, php
Solution
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.
Problem
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. Controller - ``` 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); } ``` Model - ``` //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.