我正在使用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”;
我的问题是如果取消选中复选框,如何获得价值?
非常感谢答案..
答案 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;