Welcome Guest, Not a member yet? Register   Sign In
form_validation callback, it runs but fails to check?
#1

[eluser]atno[/eluser]
The controller
Code:
<?php
class Members extends Controller
{
    function Members()
    {
        parent::Controller();
    }

    function index()
    {
        
        $this->load->library('form_validation');
            
        $this->form_validation->set_rules('first_name', 'First Name', 'trim|required|xss_clean');
        $this->form_validation->set_rules('last_name', 'Last Name', 'trim|required|xss_clean');
        $this->form_validation->set_rules('company', 'Company', 'trim|required|xss_clean');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email|callback_email_check');
        
        
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->model('Membermodel');
            $data['members'] = $this->Membermodel->members();
            $this->load->model('Groupmodel');
            $data['groups'] = $this->Groupmodel->groups();
            $this->load->view('member/add_member.html',$data);
        }
        else
        {

                $member['first_name'] = $this->input->post('first_name');
                $member['last_name'] = $this->input->post('last_name');
                $member['company'] = $this->input->post('company');
                $member['email'] = $this->input->post('email');
                
                $this->load->model('Membermodel');
                $this->Membermodel->member_add($member);
                
                redirect('members/');
        }
        
    }//index()

    function email_check($str)
    {
        $this->load->model('Membermodel');
        if ($this->Membermodel->member_unique($str) == TRUE)
        {
            $this->form_validation->set_message('email_check', 'Member already exists to your database.');
        }
            
    }//email_check()

The model
Code:
function member_unique($memberEmail)
    {
          $query = $this->db->get_where('m_member',array('user_id' => '30','email' => $memberEmail));
          if ($query->num_rows() > 0 )
          {
              return TRUE;
          }
          return FALSE;
    }

And it simply bypass setting the
Code:
set_message

So it never display "Member already exists to your database." even if it does.
If I add an
Code:
echo "Being called";
under
Code:
$this->form_validation->set_message('email_check', 'Member already exists to your database.');
i see it's running ONLY if it finds a match to the database but never FAIL the
Code:
form_validation->run()

Im going mad here, any help appreciated.

atno
#2

[eluser]flaky[/eluser]
Code:
function email_check($str)
    {
        $this->load->model('Membermodel');
        if ($this->Membermodel->member_unique($str) == TRUE)
        {
            $this->form_validation->set_message('email_check', 'Member already exists to your database.');
            return false;
        }
        else
            return true;
            
    }//email_check()
#3

[eluser]atno[/eluser]
DAMN! thanks a lot mate.




Theme © iAndrew 2016 - Forum software by © MyBB