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
谓词,则控制器应负责将数据提供给模型)。 从那里开始,关于谁应该查询模型(控制器或视图)的争论更多。我通常会将模型查询放在视图中,因为模型已经处于正确的状态(由控制器设置),以使控制器代码保持明亮状态。 归根结底,控制器或视图都不应直接查询数据库。     ,        该查询应进入控制器,然后传递到要显示的视图。