如何解决php代码点火器在视图中生成数据库数据
| 我正在生成一个html下拉列表,并且当前有代码从数据库中选择数据并在视图中生成结果?可以吗,还是应该以某种方式将其放置在控制器中?如果是这样,如何从视图中调用该数据?这是我的代码:<select id=\"f_treeindex\">
<?php
$query = $this->db->query(\'SELECT id,tree_name FROM trees\');
foreach ($query->result() as $row)
{
echo \'<option value=\"\' . $row->id . \'\">\' . $row->tree_name . \'</option>\';
};
?>
</select>
我想尽可能多地保留数据库数据。
修订版:
模型:
function get_tree(){
$query = $this->db->query(\'SELECT id,tree_name FROM trees\');
return $query->result_array();
}
控制器:
$data[\'trees\'] = $this->Model_form->get_tree();
if ($this->form_validation->run() == FALSE)
{
$this->load->view(\'view_form_group\',$data);
}
视图:
<?php
foreach($trees as $tree){
echo \'<option value=\"\' . $tree->id . \'\">\' . $tree->tree_name . \'</option>\';
}
?>
解决方法
查询在树模型中进行,在树模型中,您有一个类似于get_trees()的函数,您可以从控制器中使用$ trees = $ this-> Tree-> get_trees();进行调用。
然后,将其传递到视图并循环浏览。这就是MVC方式。
对于您的REVISED代码,您还应该添加Model \“ return $ query-> result_array(); \”
, 您的视图应该从控制器接收包含数据的数组,然后遍历该数组以填充选择。
, 为什么查询不包含在模型中?
所有数据库表都应具有某种形式的关联模型。在这种情况下,您可能想让lines4ѭ或类似的东西出现。控制器应负责将模型设置为正确的状态(即,如果您的
select
中有where
谓词,则控制器应负责将数据提供给模型)。
从那里开始,关于谁应该查询模型(控制器或视图)的争论更多。我通常会将模型查询放在视图中,因为模型已经处于正确的状态(由控制器设置),以使控制器代码保持明亮状态。
归根结底,控制器或视图都不应直接查询数据库。
, 该查询应进入控制器,然后传递到要显示的视图。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。