【发布时间】:2010-12-03 15:14:24
【问题描述】:
我有这个数据库,我必须在其中捕获很多是/否问题,用户首选的方法是复选框。一切都在正常工作,除了检索和显示值时。未选中的框返回值“0”
是否有忽略而不在报告中显示“0”或将默认值从“0”更改为空白”
【问题讨论】:
标签: php codeigniter filter checkbox
我有这个数据库,我必须在其中捕获很多是/否问题,用户首选的方法是复选框。一切都在正常工作,除了检索和显示值时。未选中的框返回值“0”
是否有忽略而不在报告中显示“0”或将默认值从“0”更改为空白”
【问题讨论】:
标签: php codeigniter filter checkbox
result = $this->input->post('checkbox',TRUE)==null ? 0 : 1
【讨论】:
这与 CodeIgniter 无关。 :) 这个怎么样?
if($_POST['checkbox']==0)
$_POST['checkbox'] = '';
【讨论】:
它返回 0 因为那是错误的,这就是复选框在未选中时返回的内容。只需在您的 CI 处理方法中添加一个 if,如果复选框 value==0,则返回您想要的任何值。
编辑:澄清一下,这与您的 CI 无关。我的意思是返回 0 是表单本身返回的内容 - 复选框的行为。要更改该值,需要快速检查您的 CI 代码以将 0 更改为您想要的值。我假设您正在某个地方访问该值来创建您的电子邮件。
【讨论】:
由于复选框在未选中时返回空值,因此您在发布时不会得到值。这是一个简单的快速解决方案,用于从复选框返回未选中的值,
<input type="hidden" name="cbox" value="0" />
<input type="checkbox" name="cbox" value="1" />
【讨论】:
if( ! $_POST['checkbox']) $_POST['checkbox'] = '';
【讨论】:
如果未选中复选框,则不会发送任何数据。 (如果选中,则发送 value 属性)。尝试读取 $_POST['checkbox'] 将导致 PHP 错误(除非您使用 empty() 或 isset(),它们是特殊的语言结构)。
this->input->post('checkbox') 将返回 FALSE 如果未设置复选框数据,即未选中。恐怕没有办法改变这个值。如果您想要不同的值,则需要手动比较 FALSE 并使用不同的值。
最后,当您使用 CodeIgniter 的 DB 访问 API 向数据库提交 FALSE 时,它会被转换为“0”。这适用于数据库中的布尔列。当你读出一个布尔列时,无论你最初提交的是什么,你都会得到你的数据库首选的 TRUE 代码。 (sqlite 可能是个例外,它是弱类型的,有点像 PHP)。
【讨论】: