php代码点火器在视图中生成数据库数据

时间:2011-05-27 17:23:36

标签: php codeigniter

我正在生成一个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>

我希望尽可能多地保留我的观点中的数据库数据。

REVISED:

MODEL:

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>';
        }
        ?>

4 个答案:

答案 0 :(得分:2)

您的视图应该从包含数据的控制器接收一个数组,然后循环遍历数组以填充选择。

答案 1 :(得分:2)

为什么查询未包含在模型中?

所有数据库表都应具有某种形式的关联模型。在这种情况下,您可能希望在这些行中有Tree_Model或其他内容。控制器应负责将模型设置为正确状态(即如果where中有select谓词,控制器将负责将该数据提供给模型。

从那里开始,关于谁应该查询模型 - 控制器或视图,更多的是宗教辩论。我通常将模型查询放在视图中,因为模型已经处于正确的状态(由控制器设置)以保持控制器代码的亮度。

在一天结束时, 控制器视图应该直接查询数据库。

答案 2 :(得分:1)

查询应该进入控制器,然后传递给要显示的视图。

答案 3 :(得分:1)

查询进入树模型,其中你有一个类似get_trees()的函数,你可以从控制器中调用它,例如$ trees = $ this- &GT;树形&GT; get_trees();

然后将其传递给视图并循环播放。那是MVC的方式。

对于您的REVISED代码,您还应该在模型中添加“return $ query-&gt; result_array();”