2013-07-04 108 views
0

必須填寫表單字段'room_number','pos_token','banquet_token'才能繼續。這是要求,我編寫了這段代碼,最終與代碼的其他部分發生衝突,並且根本不起作用。CodeIgniter:如何檢查其中一個字段是否爲必填字段

$room_number = $this->input->post('room_number'); 
$pos_token = $this->input->post('pos_token'); 
$banquet_token = $this->input->post('banquet_token'); 

if(isset ($room_number) && strlen($room_number) && ($pos_token) && strlen($pos_token) && ($banquet_token) && strlen($banquet_token)) { 
    return true; 
    } 
else { 
    return true; 
    } 

回答

2

您需要在情況恢復false未能像

if(isset ($room_number) && strlen($room_number) && ($pos_token) && strlen($pos_token) && ($banquet_token) && strlen($banquet_token)) { 
    return true; 
} 
else { 
    return false; 
} 

,併爲您的病情需要用OR條件檢查像

if((isset ($room_number) && strlen($room_number)) || 
    (isset ($pos_token) && strlen($pos_token)) || 
    (isset ($banquet_token) && strlen($banquet_token)) 
) { 
+0

這工作就像一個魅力也是如此。謝謝! :) –

1

只需使用在|| OR操作你的if語句。如果測試失敗,則返回false

$room_number = $this->input->post('room_number'); 
$pos_token = $this->input->post('pos_token'); 
$banquet_token = $this->input->post('banquet_token'); 

if(!empty($room_number) || !empty($pos_token) || !empty($banquet_token)) 
    return true; 
else 
    return false; 
+0

我試過這個,它實際上工作!謝謝。 :) –

+1

@saucecord我們不在codeigniter中這樣做,而是使用codeigniter的formvalidation庫。 –

+0

@Rajeev Ranjan:您介意告訴我們如何從CodeIgniter表單驗證中的代碼中檢索結果嗎?當然,由於我必須同時使用(CI和常規方法),所以代碼現在看起來很分散。 –

3

你需要設置規則輸入字段

$this->form_validation->set_rules('username', 'Username', 'required'); 
if ($this->form_validation->run() == FALSE) 
    { 
    //run your code on success here 
    } 
else 
    { 
    //run your code on failure here 
    } 
+0

嗨,我已經使用CodeIgniter表單驗證,但它然後需要填寫所有3個輸入。但我的需要是檢索3個必填字段中的任意一個。並非所有3個都是強制性的,但至少應有一個字段填充。目前的代碼:http://paste.ubuntu.com/5842556 –

+1

@saucecord你可以設置規則的條件,但我的意思是說我們應該最大限度地使用Codeigniter框架的庫和pre_build函數。 –

0
$room_number = $this->input->post('room_number'); 
$pos_token = $this->input->post('pos_token'); 
$banquet_token = $this->input->post('banquet_token'); 

if($room_number=="" || $pos_token=="" || $banquet_token=="") 
    return true; 
else 
    return false;