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

如何在CodeIgniter视图页展示两个无关数据表的独立内容

解决CodeIgniter单视图展示两个独立数据表的问题

核心问题分析

你当前的Controller代码中,第二次赋值$data = [...]完全覆盖了第一次的数组,导致只有动物数据被传递到视图;同时视图中两个表格都使用同一个$finaldata变量,无法区分不同数据集。

修正步骤

1. 修正Controller代码

不要重复赋值$data数组,而是添加两个不同的键来分别存储植物和动物的数据,同时注意调用Model方法的正确方式(原代码错误地用$this->db->showPlants(),应该调用你的Model类实例,比如假设Model类名为DataModel,则用$this->data_model->showPlants()):

public function plantsandanimals() {
    // 先加载Model(如果未在构造方法中加载)
    $this->load->model('DataModel');
    
    $data['plants'] = $this->data_model->showPlants()->result();
    $data['animals'] = $this->data_model->showAnimals()->result();
    
    $this->load->view('viewplantsandanimal', $data);
}

2. 调整Model方法(可选优化)

可以直接在Model方法中返回查询结果集,减少Controller的代码量:

public function showPlants(){
    return $this->db->get('plantsdata')->result();
}

public function showAnimals(){
    return $this->db->get('animalsdata')->result();
}

优化后Controller可简化为:

public function plantsandanimals() {
    $this->load->model('DataModel');
    
    $data['plants'] = $this->data_model->showPlants();
    $data['animals'] = $this->data_model->showAnimals();
    
    $this->load->view('viewplantsandanimal', $data);
}

3. 修改View代码

在视图中分别使用$plants和$animals变量渲染两个独立表格:

<!-- 动物数据表 -->
<table>
    <?php foreach ($animals as $animal) { ?>
    <tr>
        <td><?= $animal->animalsname ?></td>
    </tr>
    <?php }; ?>
</table>

<!-- 植物数据表 -->
<table>
    <?php foreach ($plants as $plant) { ?>
    <tr>
        <td><?= $plant->plantsname ?></td>
    </tr>
    <?php }; ?>
</table>

关键注意点

  • 确保Model类名与你实际定义的一致,加载时注意小写规则(CodeIgniter默认将类名首字母大写,加载时用小写蛇形命名)。
  • 两个数据集使用不同的数组键名,避免覆盖,视图中对应使用不同变量名循环渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:05:26