Codeigniter - 使用复选框编辑表单

时间:2015-01-06 12:14:11

标签: php codeigniter checkbox

我正在使用codeigniter并在复选框中遇到编辑表单问题。该复选框有2个值1和0,如果选中则值为1,如果未选中,则值为0.

这是我的控制器:

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”;

我的问题是如果取消选中复选框,如何获得价值?

非常感谢答案..

2 个答案:

答案 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);
}

答案 1 :(得分: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;