2013-03-23 14 views
0

我有一個奇怪的錯誤。Codeigniter表單驗證正在執行TRUE和FALSE操作(奇怪的錯誤!)

表單驗證正在執行TRUE和FALSE操作。

爲TRUE,數據庫模型(scrape_url_model)運行,這樣的數據庫進行更新,但隨後的視圖運行,就好像表單驗證爲假。 顯示的是FALSE視圖(scrape_url/index),而不是與成功驗證(scrape_url/form_success)關聯的視圖。

我收到來自回調函數的驗證錯誤消息The URL is already in the database

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; 
} 

回答

0

嘗試使用的語句:

$this->form_validation->run() == true 

,然後相應地編寫你的條件。它會起作用並且也容易理解。

+0

這沒有奏效。我得到了同樣的錯誤。 – 2013-03-23 04:44:29