PHP код воспламенитель, генерирующий данные базы данных в представлении - PullRequest
0 голосов
/ 27 мая 2011

Я генерирую 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:

Модель:

function get_tree(){
    $query = $this->db->query('SELECT id, tree_name FROM trees');
    return $query->result_array();
}

CONTROLLER:

$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 ]

2 голосов
/ 27 мая 2011

Почему запрос не содержится в модели?

Все таблицы базы данных должны иметь некоторую форму связанной модели. В этом случае вы можете захотеть иметь Tree_Model или что-то в этом роде. Контроллер должен отвечать за настройку модели в ее правильном состоянии (т. Е. Если бы в вашем select был предикат where, контроллер должен был бы передать эти данные модели).

Оттуда, это больше религиозные дебаты о том, кто должен запросить модель - контроллер или представление. Обычно я помещаю запрос модели в представление, так как модель уже находится в правильном состоянии (установленном контроллером), чтобы код моего контроллера светился.

В конце дня ни контроллер или представление не должно запрашивать базу данных напрямую.

2 голосов
/ 27 мая 2011

Ваше представление должно получить массив от контроллера, содержащий данные, а затем перебрать массив, чтобы заполнить выбор.

1 голос
/ 27 мая 2011

Запрос идет в дереве модель , где у вас есть функция, похожая на get_trees (), и вы вызываете ее из контроллера с чем-то вроде $ trees = $ this-> Tree-> get_trees ();

Затем вы передаете его в представление и просматриваете его.Это путь MVC.

Для вашего ПЕРЕСМОТРЕННОГО кода вы также должны добавить в модель "return $ query-> result_array ();"

1 голос
/ 27 мая 2011

Запрос должен идти в контроллер, а затем передаваться в представление для отображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...