我有这个数据库,我必须捕获很多是/否的问题,并且用户首选的方法是复选框。一切都按照预期的方式运作,除非涉及到后悔和展示价值观。未选中的框返回值“0”
无论如何要么忽略并且不在报告中显示“0”或者将默认值从“0”更改为空白“
答案 0 :(得分:5)
result = $this->input->post('checkbox',TRUE)==null ? 0 : 1
答案 1 :(得分:2)
这与CodeIgniter无关。 :) 怎么样?
if($_POST['checkbox']==0)
$_POST['checkbox'] = '';
答案 2 :(得分:1)
它返回0,因为它是错误的,这是未选中时返回的复选框。只需在CI处理方法中添加一个if,如果复选框值== 0,则返回所需的值。
编辑:只是为了澄清,这与您的CI没有任何关系。我的意思是它返回0就是表单本身返回的内容 - 复选框的行为。要更改该值,需要快速检查CI代码,将0更改为所需的值。我假设您正在访问某处创建电子邮件的价值。
答案 3 :(得分:1)
由于复选框在未选中时返回空值,因此您在发布时不会获得值。以下是从复选框
返回未选中值的简单快速解决方案<input type="hidden" name="cbox" value="0" />
<input type="checkbox" name="cbox" value="1" />
答案 4 :(得分:0)
if( ! $_POST['checkbox']) $_POST['checkbox'] = '';
答案 5 :(得分:0)
如果未选中复选框,则不会为其发送任何数据。 (如果选中,则发送value属性)。尝试阅读$_POST['checkbox']
将导致PHP错误(除非您使用empty()
或isset()
,这是特殊语言结构。)
this->input->post('checkbox')
将返回FALSE
,即如果未选中复选框数据。我担心,没有办法改变这个价值。如果你想要一个不同的值,你需要手动比较FALSE并使用不同的值。
最后,当您使用CodeIgniter的数据库访问API向数据库提交FALSE时,它将转换为“0”。这适用于数据库中的布尔列。当你读出一个布尔列时,无论你最初提交什么,你都会获得数据库的TRUE首选代码。 (可能的例外是sqlite,它是弱类型的,有点像PHP)。