【问题标题】:Codeigniter unchecked checkbox value = blank?Codeigniter 未选中复选框值 = 空白?
【发布时间】:2010-12-03 15:14:24
【问题描述】:

我有这个数据库,我必须在其中捕获很多是/否问题,用户首选的方法是复选框。一切都在正常工作,除了检索和显示值时。未选中的框返回值“0”

是否有忽略而不在报告中显示“0”或将默认值从“0”更改为空白”

【问题讨论】:

    标签: php codeigniter filter checkbox


    【解决方案1】:
    result = $this->input->post('checkbox',TRUE)==null ? 0 : 1
    

    【讨论】:

      【解决方案2】:

      这与 CodeIgniter 无关。 :) 这个怎么样?

      if($_POST['checkbox']==0) 
          $_POST['checkbox'] = '';
      

      【讨论】:

        【解决方案3】:

        它返回 0 因为那是错误的,这就是复选框在未选中时返回的内容。只需在您的 CI 处理方法中添加一个 if,如果复选框 value==0,则返回您想要的任何值。

        编辑:澄清一下,这与您的 CI 无关。我的意思是返回 0 是表单本身返回的内容 - 复选框的行为。要更改该值,需要快速检查您的 CI 代码以将 0 更改为您想要的值。我假设您正在某个地方访问该值来创建您的电子邮件。

        【讨论】:

          【解决方案4】:

          由于复选框在未选中时返回空值,因此您在发布时不会得到值。这是一个简单的快速解决方案,用于从复选框返回未选中的值

          <input type="hidden" name="cbox" value="0" />
          <input type="checkbox" name="cbox" value="1" /> 
          

          【讨论】:

          【解决方案5】:
          if( ! $_POST['checkbox']) $_POST['checkbox'] = '';
          

          【讨论】:

            【解决方案6】:

            如果未选中复选框,则不会发送任何数据。 (如果选中,则发送 value 属性)。尝试读取 $_POST['checkbox'] 将导致 PHP 错误(除非您使用 empty()isset(),它们是特殊的语言结构)。

            this-&gt;input-&gt;post('checkbox') 将返回 FALSE 如果未设置复选框数据,即未选中。恐怕没有办法改变这个值。如果您想要不同的值,则需要手动比较 FALSE 并使用不同的值。

            最后,当您使用 CodeIgniter 的 DB 访问 API 向数据库提交 FALSE 时,它会被转换为“0”。这适用于数据库中的布尔列。当你读出一个布尔列时,无论你最初提交的是什么,你都会得到你的数据库首选的 TRUE 代码。 (sqlite 可能是个例外,它是弱类型的,有点像 PHP)。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-12-13
              • 1970-01-01
              • 2013-11-14
              • 1970-01-01
              • 1970-01-01
              • 2018-09-18
              • 2013-09-30
              相关资源
              最近更新 更多