我想将选择选项更改为单选按钮,但是更改为单选按钮后,我的更新将不再起作用。
我想将选择选项更改为单选按钮
更改为嵌入式和脱机单选按钮后,值未传递到数据库。我应该是一样的,我只是不明白,为什么使用select选项可以将值传递到数据库,但单选按钮不能。 这是单选按钮的代码
<span>In:</span>
<input type="radio" name="inline" value="IN" <?php echo set_radio('inline', 'IN'); ?> />
<span>Out:</span>
<input type="radio" name="offline" value="OUT" <?php echo set_radio('offline', 'OUT'); ?> />
查看
<div class="col-md-8">
<span>In:</span>
<select name="online">
<option value="IN">Yes</option>
<option value="">No</option>
</select>
<span>Out:</span>
<select name="offline">
<option value="OUT">Yes</option>
<option value="">No</option>
</select>
</div>
控制器
public function updateStatu(){
$this->load->model('Status_Board_Model');
$value = $this->Status_Board_Model->updateStatu();
$msg['success']=false;
$msg['type']='update';
if($value){
$msg['success'] = true;
}
echo json_encode($value);
}
模型
public function updateStatu()
{
$statuid = $this->input->post('statuid');
$data = array(
'online' => $this->input->post('online'),
'offline' => $this->input->post('offline'),
'comment' => $this->input->post('comment')
);
$this->db->where('statuid', $statuid);
$this->db->update('core.status', $data);
if ($this->db->affected_rows() > 0) {
return true;
} else {
return false;
}
}
js
--------------save button for edit-----------------------------------------------------------------------
$('#saveBtn').click(function(e){
//alert('hello');
e.preventDefault();
window.location.reload();
var url = $('#myForm').attr('action');
//var data = $('#myForm').serialize();
if(true){
$.ajax({
type: 'ajax',
method: 'post',
url: url,
data: $('#myForm').serialize(),
datatype: 'json',
success: function(){
$('#modal_form').modal('hide');
$('#myForm').get[0].reset();
getStatu();
},
error: function(){
alert('Error');
}
});
}else{
alert('error');
}
});
$('#info').on('click','.edit',function(){
var statuid = $(this).attr('data');
$('#modal_form').modal('show');
$('#modal_form').find('.modal-title').text('Edit');
$('#myForm').attr('action', '<?php echo base_url("../Status_Board_Controller/updateStatu") ?>');
$.ajax({
type: 'ajax',
method: 'get',
url: '<?php echo base_url("../Status_Board_Controller/editStatu") ?>',
data: {statuid: statuid},
dataType: 'json',
success: function(data){
$('input[name=firstName]').val(data.firstName);
$('input[name=online]').val(data.online);
$('input[name=offline]').val(data.offline);
$('input[name=comment]').val(data.comment);
$('input[name=statuid]').val(data.statuid);
},
error: function(){
alert('Fail to get data');
}
});
});
答案 0 :(得分:0)
如果您包含了可以使用的HTML,不能使用的HTML以及该视图的任何相关JavaScript,那么这将有所帮助。照原样,如果这些选择位于表单中,而您提交表单,则将为选择提交一些组合:
online=IN&offline=OUT
online=IN&offline=
online=&offline=OUT
online=&offline=
不清楚您正在做什么,或者只是在选择选项之一发生更改时才提交更改?您需要解释一下。听起来,您需要两组名称为online(2)和offline(2)的单选按钮来模拟您的描述。
答案 1 :(得分:0)
您的表单输入名称错误,应为online
而不是inline
:
<span>In:</span>
<input type="radio" name="online" value="IN" <?php echo set_radio('online', 'IN'); ?> />
<span>Out:</span>
<input type="radio" name="offline" value="OUT" <?php echo set_radio('offline', 'OUT'); ?> />
此外,由于您已将选择更改为单选,因此应添加一个空的条件验证,以防止在updateStatu
模型上出现未定义的在线/离线帖子数组索引:
public function updateStatu()
{
$statuid = $this->input->post('statuid');
$data = array(
'online' => !empty($this->input->post('online')) ? $this->input->post('online') : '',
'offline' => !empty($this->input->post('offline')) ? $this->input->post('offline') : '',
'comment' => $this->input->post('comment')
);
$this->db->where('statuid', $statuid);
$this->db->update('core.status', $data);
if ($this->db->affected_rows() > 0) {
return true;
} else {
return false;
}
}