我有这个数据库,我必须捕获很多是/否的问题,并且用户的首选方法是复选框。一切工作都应该如此,除非涉及到检索和展示价值。未选中框返回值“0”未选中Codeigniter复选框value = blank?
反正是有要么忽略,并在报告中不显示“0”或从“0”到空白”
我有这个数据库,我必须捕获很多是/否的问题,并且用户的首选方法是复选框。一切工作都应该如此,除非涉及到检索和展示价值。未选中框返回值“0”未选中Codeigniter复选框value = blank?
反正是有要么忽略,并在报告中不显示“0”或从“0”到空白”
这与CodeIgniter无关。 :) 这个怎么样?
if($_POST['checkbox']==0)
$_POST['checkbox'] = '';
它返回0,因为这是改变默认值false,这就是不检查时返回的复选框,只需在你的CI处理方法中添加一个if,如果复选框的值为0,就返回你想要的任何值。
编辑:只是为了澄清,这没有任何东西我的意思是返回0就是表单本身返回的内容 - 复选框的行为。要更改该值,将快速检查您的CI代码,将0更改为你的价值吨。我假设你正在访问某处的值来创建你的电子邮件。
if(! $_POST['checkbox']) $_POST['checkbox'] = '';
如果未勾选复选框,则不会发送任何数据。 (如果选中,则发送值属性)。试图阅读$_POST['checkbox']
将导致PHP错误(除非您使用empty()
或isset()
,这是特殊的语言结构)。
this->input->post('checkbox')
将返回FALSE
如果复选框数据未设置,即未检查。恐怕没有办法改变这个价值。如果您需要不同的值,则需要手动比较FALSE并使用不同的值。
最后,当您使用CodeIgniter的DB访问API向数据库提交FALSE时,它将被转换为'0'。这对数据库中的布尔列很有效。当你读出一个布尔列时,无论你最初提交什么,你都会得到你的数据库的首选代码为TRUE。 (可能的例外是sqlite,这是弱类型的,有点像PHP)。
result = $this->input->post('checkbox',TRUE)==null ? 0 : 1
以来的复选框返回空值选中时,你会不会同时发布得到的值。下面是从复选框返回选中值的简单快捷的解决方案,
<input type="hidden" name="cbox" value="0" />
<input type="checkbox" name="cbox" value="1" />
这正是我一直在寻找,但我发现它有助于使具有值为-1隐藏的输入为0,FALSE在铸造成INT后造成了问题。 – kchason 2017-07-27 17:20:29