CodeIgniter 3下拉框提交状态为空,如何传递选中值至数据库?
问题解决方法
你的下拉框提交空值的核心问题出在视图代码的select标签上,具体修正点如下:
1. 给select标签添加name属性
表单提交时,是通过select标签的name属性传递选中值的,你现在把name="t-status"加在了option上,这完全无效。必须把name属性移到select标签上,和id保持一致,这样控制器才能通过$this->input->post('t-status')拿到值。
2. 修复重复的状态选项
你当前硬写了一个带selected的option来显示工单当前状态,这会导致下拉框出现重复选项(比如当前状态是Open时,下拉框会有两个Open选项)。正确做法是对每个选项动态判断是否和工单当前状态匹配,匹配时才添加selected属性。
3. 优化默认提示选项
第一个提示选项Status的value是空的,建议明确设为value="",且不要设置selected,避免用户误选后提交空值。
修正后的视图代码
<?php echo form_open('helpdesk_controller/update_status_post'); ?> <input type="hidden" name="id" value="<?php echo $ticket->id; ?>"> <tr> <td class="fw-medium">Status:</td> <td> <!-- 给select添加name="t-status" --> <select class="form-select" id="t-status" name="t-status" data-choices data-choices-search-false aria-label="Default select example"> <option value="">Status</option> <!-- 动态判断每个选项是否需要选中 --> <option value="Open" <?php echo ($ticket->status == 'Open') ? 'selected' : ''; ?>>Open</option> <option value="Inprogress" <?php echo ($ticket->status == 'Inprogress') ? 'selected' : ''; ?>>Inprogress</option> <option value="Closed" <?php echo ($ticket->status == 'Closed') ? 'selected' : ''; ?>>Closed</option> </select> <button type="submit">Save</button> </td> </tr> <?php echo form_close(); ?>
控制器代码无需修改
你的input_status_values()方法是正确的,只要select标签有了正确的name属性,就能正常获取到选中的状态值,提交到数据库就不会是空值了。
内容的提问来源于stack exchange,提问作者user20508390
相关产品推荐
相关产品推荐

