You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:50:15