【问题标题】:CodeIgniter: How to check either one of the fields is not empty from the required fieldsCodeIgniter:如何从必填字段中检查任一字段是否为空
【发布时间】:2013-07-02 00:09:55
【问题描述】:

必须填写表单字段“room_number”、“pos_token”、“banquet_token”之一才能继续。这是要求,我编写了这段代码,结果与代码的其他部分发生冲突,它根本不起作用。

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

【问题讨论】:

    标签: php forms codeigniter input


    【解决方案1】:

    你需要在条件失败时返回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))
      ) {
    

    【讨论】:

      【解决方案2】:

      只需在 if 语句中使用 || OR 运算符即可。如果测试失败则返回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;
      

      【讨论】:

      • @saucecord 我们不会在 codeigniter 中这样做,而是使用 codeigniter 的 formvalidation 库。
      • @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
        }
      

      【讨论】:

      • 嗨,我已经使用了 CodeIgniter 表单验证,但它需要填写所有 3 个输入。但我需要检索 3 个必填字段之一。并非所有 3 项都是必填项,但至少应填写一个字段。当前代码:paste.ubuntu.com/5842556
      • @saucecord 你可以根据条件设置规则,但我的意思是说我们应该最大限度地使用 Codeigniter 框架的库和 pre_build 功能。
      【解决方案4】:
      $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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-18
        • 2012-12-06
        • 1970-01-01
        • 2014-06-30
        • 1970-01-01
        • 2014-04-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多