2010-12-03 84 views
2

我有这个数据库,我必须捕获很多是/否的问题,并且用户的首选方法是复选框。一切工作都应该如此,除非涉及到检索和展示价值。未选中框返回值“0”未选中Codeigniter复选框value = blank?

反正是有要么忽略,并在报告中不显示“0”或从“0”到空白”

回答

2

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

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

它返回0,因为这是改变默认值false,这就是不检查时返回的复选框,只需在你的CI处理方法中添加一个if,如果复选框的值为0,就返回你想要的任何值。

编辑:只是为了澄清,这没有任何东西我的意思是返回0就是表单本身返回的内容 - 复选框的行为。要更改该值,将快速检查您的CI代码,将0更改为你的价值吨。我假设你正在访问某处的值来创建你的电子邮件。

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

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

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

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

5
result = $this->input->post('checkbox',TRUE)==null ? 0 : 1 
1

以来的复选框返回空值选中时,你会不会同时发布得到的值。下面是从复选框返回选中值的简单快捷的解决方案,

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

这正是我一直在寻找,但我发现它有助于使具有值为-1隐藏的输入为0,FALSE在铸造成INT后造成了问题。 – kchason 2017-07-27 17:20:29