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

如何从数据库取数并在HTML下拉框展示?CodeIgniter代码问题排查

解决CodeIgniter动态下拉框无内容的问题

我帮你排查了代码里的几个关键问题,这些应该就是下拉框没显示内容的原因,咱们一步步来修正:

1. 控制器传递数据的方式错误

CodeIgniter中给视图传数据需要把变量放到关联数组里,你直接传递$getcity的话,视图无法正确识别$getcity这个变量名。

修正后的控制器代码:

public function city() {
    $this->load->model('dropdownM');
    $data['getcity'] = $this->dropdownM->get_city(); // 将结果存入关联数组
    $this->load->view('form1city', $data); // 传递整个数组到视图
}

2. 模型查询的字段不匹配

你的模型里只查询了fname字段,但视图里需要用到c_id和C_name,这会导致返回的结果里没有这两个字段,自然无法渲染选项。另外,建议查询无结果时返回空数组,避免视图里的count判断出错。

修正后的模型代码:

<?php
class DropdownM extends CI_Model {
    public function get_city() {
        $this->db->select('c_id, C_name'); // 选择视图需要的字段
        $this->db->from('city');
        $query = $this->db->get();
        if($query->num_rows()>0) {
            return $query->result();
        }
        return []; // 无结果时返回空数组
    }
}

3. 视图里的变量错误与语法问题

  • 循环里误用了$village1变量,应该用循环定义的$city
  • 表单闭合标签写错成了<form>,应该是</form>
  • 可以加上isset($getcity)判断,避免变量未定义报错

修正后的视图代码:

<form action="<?php echo base_url(); ?>index.php/Rec/user" method="post">
    <select class="form-control" id="city" name="city">
        <option value="">Select </option>
        <?php if(isset($getcity) && count($getcity)):?>
            <?php foreach($getcity as $city):?>
                <option value="<?php echo $city->c_id;?>"><?php echo $city->C_name;?></option>
            <?php endforeach;?>
        <?php else:?>
            <option value="">No cities available</option>
        <?php endif;?>
    </select>
    <center>
        <input type="submit" value="Submit" class="btn btn-bricky" id="subbtn" name="submit1">
    </center>
</form> <!-- 修正表单闭合标签 -->

做完这些修改后,下拉框应该就能正常显示城市选项了。如果还是有问题,可以检查数据库里city表是否有数据,以及字段名是否和代码里的完全一致(注意大小写敏感)。

内容的提问来源于stack exchange,提问作者Nisha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:48:58