You need to enable JavaScript to run this app. Codeigniter下拉列表重复问题及按中心分组批量创建学校数据实现
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter下拉列表重复问题及按中心分组批量创建学校数据实现

问题修复方案

1. 修复下拉列表重复问题

代码核心错误是将group_by语法错误写入了get_where的查询条件参数中,导致分组去重逻辑未生效,查询返回所有未去重的学校记录,最终出现下拉选项重复的问题。
修正后的Controller代码:

// 调用独立的group_by方法实现按centre字段分组去重
$this->centre = $this->db->group_by('centre')
    ->get('schools')
    ->result();

修改后查询返回的每个centre仅对应一条记录,下拉遍历后不会再出现重复选项。

2. 实现按中心批量同步创建数据功能

在表单提交对应的Controller处理方法中,新增如下逻辑即可:

// 1. 接收表单提交的选中中心ID
$selected_centre_id = $this->input->post('centre_id');
// 2. 查询该中心下所有关联的学校列表
$related_schools = $this->db->get_where('schools', ['centre' => $selected_centre_id])->result_array();
// 3. 组装批量插入的数据集,请根据实际业务替换字段
$insert_batch_data = [];
foreach ($related_schools as $school) {
    $insert_batch_data[] = [
        'school_id' => $school['id'],
        // 替换为实际需要存储的表单字段、公共字段
        'data_name' => $this->input->post('data_name'),
        'created_at' => date('Y-m-d H:i:s')
    ];
}
// 4. 执行批量插入
if (!empty($insert_batch_data)) {
    // 替换为实际业务表名
    $this->db->insert_batch('your_business_table', $insert_batch_data);
}

可选优化:下拉列表按中心分组展示

如果需要下拉按中心分组显示关联学校,可以修改View代码使用<optgroup>标签实现:

<select name="centre_id">
    <?php foreach ($centre as $c) { ?>
    <optgroup label="<?php echo $c->centre; ?>">
        <option 
            value="<?php echo $c->id; ?>" 
            <?php if(isset($school_id) && $school_id == $c->id) echo 'selected'; ?>
        >
            <?php echo $c->school_name; ?>
        </option>
    </optgroup>
    <?php } ?>
</select>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 05:15:03