Welcome Guest, Not a member yet? Register   Sign In
Form validation is doing both TRUE and FALSE actions (weird bug!)
#1

[eluser]deebarizo[/eluser]
I have a weird bug. Form validation is doing both TRUE and FALSE actions.

For TRUE, the database model (scrape_url_model) runs so the database is updated, but then the views are run as though form validation is FALSE.

The FALSE view (scrape_url/index) is shown instead of the view associated with a successful validation (scrape_url/form_success).

I'm getting the validation error message "The URL is already in the database" from the callback function.

Any thoughts on what I'm doing wrong?

Code:
public function index()
    {
            $this->load->helper('form');
            $this->load->library('form_validation');
            $this->form_validation->set_error_delimiters('', '');

            $data['pageTitle'] = 'URL Scraping Tool';

            $this->form_validation->set_rules('event_url', 'URL', 'trim|required|callback_url_check');

            if ($this->form_validation->run() == FALSE)
            {
                    $this->load->view('templates/header', $data);  
                    $this->load->view('scrape_url/index', $data);
                    $this->load->view('templates/footer');
            }
            else
            {
                    $this->load->library('Db_queries');
                    $this->load->library('session');
                    $this->load->helper('url');

                    list($session_data['alert'],
                            $session_data['alert_type'],
                            $session_data['countUncategorizedDecks'],
                            $session_data['event_id'],
                            $session_data['eventDate']) = $this->scrape_url_model->insert_decks_and_cards();

                    if ($this->input->post('last_url') == 'yes')
                    {
                            $this->scrape_url_model->insert_md_percentage($session_data['eventDate']);
                    }

                    $this->session->set_userdata($session_data);

                    $this->load->view('templates/header', $data);  
                    $this->load->view('scrape_url/form_success', $data);
                    $this->load->view('templates/footer_ajax');    
            }
    }                      

    public function url_check($event_url)
    {
            $url_regex = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";

            if (preg_match($url_regex, $event_url) == FALSE)
            {
                    // check to see if input is a URL
                    $this->form_validation->set_message('url_check', 'Please enter a URL including "http://".');
                    return FALSE;
            }

            $this->load->database();

            $sql = 'SELECT url FROM event';
            $s = $this->db->conn_id->query($sql);

            $used_urls = $s->fetchAll(PDO::FETCH_COLUMN, 0);              

            if (in_array($event_url, $used_urls))
            {
                    $this->form_validation->set_message('url_check', 'The URL is already in the database.');
                    return FALSE;
            }
            return TRUE;
    }


Messages In This Thread
Form validation is doing both TRUE and FALSE actions (weird bug!) - by El Forum - 03-22-2013, 08:40 PM



Theme © iAndrew 2016 - Forum software by © MyBB