如何将 codeigniter 中循环内的输入的数据库记录更新为 active/inactive

How to update DB records to active/inactive for inputs inside loop in codeigniter

我正在尝试使用 select 选项标记更新表中的特定行。但它只更新最后插入的行,而不更新特定的行。 我需要解决方案。

控制器:

public function user_status()
{     
    $this->load->model('customize_model');
    $data = array("user_status" => $this->input->post('status'),
     "user_id" => $this->input->post('user_id'));
    $data1['user'] = $this->customize_model->update_status($data); 
    $this->load->view('custom/user',$data1);
}

型号:

public function update_status($data)
{
    $user_id = $this->input->post('user_id');
    $this->db->set($data);
    $this->db->where('user_id',$user_id);
    return $this->db->update('user',$data);     
}

我的看法:

                <?php
                 foreach($user->result() as $row)
                 {
                ?>
                    <tr>
                        <input type="hidden" class="form-control" 
                         value="<?php echo $row->user_id; ?>" 
                         name="user_id" />
                        <td><?php echo $row->user_id; ?></td>
                        <td><?php echo $row->user_status; ?></td>
                    <td>
                            <select class="form-control" name="status"  
                             id="user_status">
                                <option value="Active">Active</option>
                                <option 
                                value="Inactive">Inactive</option>
                            </select>
                    
                        </td>
                        <td>
                        <button class="btn btn-primary" name="submit" 
                         type="submit" value="<?php echo $row->user_id;? 
                         >"> Update<?php echo $row->user_id;?></button>   
                        </td>
                    </tr>
                <?php 
                    }
                ?>

这里的问题是相同的 name="user_id" 在您的视图中与其他名称属性一起循环。所以最后一个值被发送到控制器。

在视图中: 创建两个输入框

<input type="hidden" name="global_userId" id="global_userId" />            
<input type="hidden" name="global_status" id="global_status" />

尝试将名称和 ID 设置为

name="status-<?php echo $row->user_id; ?>" id="status-<?php echo $row->user_id; ?>" 

对于循环中的所有名称属性。 并使按钮类型按钮而不是提交并使其调用函数 onclick。 喜欢

onClick="submitForm(<?php echo $row->user_id; ?>)"

并创建 Jquery 函数来更新输入字段并提交表单:

function submitForm(userId){
  $('#global_userId').val(userId);
  var status = $('#status-'+userId).val();
  $('#global_status').val(status);   
  $('#formId').submit();                                            
}

在控制器和模型中接受 'global_userId' 和 'global_status' 作为值。

$user_id = $this->input->post('global_userId');