2013-07-04 44 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;