如何在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
相关产品推荐
相关产品推荐

