如何将选择选项更改为单选按钮并将值传递给模型

时间:2019-07-11 20:50:02

标签: php html codeigniter

我想将选择选项更改为单选按钮,但是更改为单选按钮后,我的更新将不再起作用。

这是编辑表单的图片enter image description here

我想将选择选项更改为单选按钮

enter image description here

更改为嵌入式和脱机单选按钮后,值未传递到数据库。我应该是一样的,我只是不明白,为什么使用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');
                }
            });
        });

2 个答案:

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