2015-01-06 54 views
1

我正在使用codeigniter,并在复选框中的编辑窗体有问题。复选框具有2个值1和0,如果选择了,那么该值是1,并且如果未选中则该值为0。Codeigniter - 编辑窗体与复选框

这是我的控制器:

function updatepost($id=0){ 
    $data = $_POST; 
    $this->db->where('id_post',$id); 
    $outp = $this->db->update('post',$data); 
} 

这是我的视图

sport <input type="checkbox" name="sport" value="1" <?php if($data['sport'] == '1'){echo 'checked';}?> /> 

tekno <input type="checkbox" name="tekno" value="1" <?php if($data['tekno'] == '1'){echo 'checked';}?>/> 

game <input type="checkbox" name="game" value="1" <?php if($data['game'] == '1'){echo 'checked';}?>/> 

如果我取消选中复选框,值应为'0';

我的问题是如何获得价值,如果复选框未检查?

非常感谢您的回答。

回答

0

在您的控制器文件中替换$ data = $ _POST;线通过下面的代码

$data['sport'] = (array_key_exists('sport',$_POST)) ? $_POST['sport'] : 0; 
$data['tekno'] = (array_key_exists('tekno',$_POST)) ? $_POST['tekno'] : 0; 
$data['game'] = (array_key_exists('game',$_POST)) ? $_POST['game'] : 0; 
+0

谢谢它人工作很好.. –

1

复选框仅在被选中时才会发布。

在你的控制,检查,如果他们张贴,

如果公布,数值为1,否则为0

示例代码:

$sport = 0; 
if (! empty($_POST['sport']) { 
    $sport = 1; 
} 

如果你想使用三元的运营商,使用:

$sport = (! empty($_POST['sport']) ? 1 : 0; 

所以,最终代码:

function updatepost($id=0){ 
    // Assign default values in view that they are not getting 
    // posted if they are not checked. 
    // If they are posted, they will be overriden in $data. 
    $data['sport'] = $data['tekno'] = $data['tekno'] = 0; 
    $data = $_POST; 
    $this->db->where('id_post',$id); 
    $outp = $this->db->update('post',$data); 
} 
+0

我试试你的代码,但没有成功......让说我有运动值是1,那么在编辑表单其已被选中,但我想改变数值为0,则我取消了它。并且体育价值仍然是1 –