2011-05-27 78 views
0

我正在生成一個html下拉菜單,我目前有代碼從數據庫中選擇數據並在視圖中生成結果?這是好的,或者我應該把它放在控制器中。如果是這樣,我該如何從視圖中調用這些數據?這是我的代碼:php代碼點火器在視圖中生成數據庫數據

<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(); 
} 

CONTROLLER:

$data['trees'] = $this->Model_form->get_tree(); 

    if ($this->form_validation->run() == FALSE) 
    { 
     $this->load->view('view_form_group', $data); 
    } 

VIEW:

<?php 
     foreach($trees as $tree){ 
      echo '<option value="' . $tree->id . '">' . $tree->tree_name . '</option>'; 
     } 
     ?> 

回答

1

查詢會在你有一個功能類似get_trees()樹模式,你從控制器的東西,如$樹木= $這個 - >樹形> get_trees稱之爲();

然後你將它傳遞給查看並循環遍歷它。這是MVC的方式。

對於您的REVISED代碼,您還應該添加模型「return $ query-> result_array();」

+0

請參閱修訂後的代碼。我想我幾乎擁有它。 – mheavers 2011-05-27 17:41:01

+0

啊 - 那麼爲什麼樹未定義?或者說,我需要做些什麼才能定義它。我得到的錯誤是:消息:未定義的屬性:Control_form :: $樹。我只是想從控制器鏈接到模型 – mheavers 2011-05-27 17:46:16

+0

中從數據庫檢索到的數據。您的模型應該被稱爲樹,並在控制器中加載:$ this-> load-> model('Trees'); – Alex 2011-05-27 17:48:27

2

你的視圖應該從包含該數據的控制器接收一個數組,然後廁所通過數組填充選擇。

+0

行 - 所以我試圖按照這個例子:http://stackoverflow.com/questions/3041616/creating-foreach-loops-using-code-igniter-controller-and-view我有一個錯誤。我修改了上面的代碼。我不知道我應該如何在控制器中引用來自模型的數據庫查詢。任何幫助,將不勝感激 – mheavers 2011-05-27 17:37:31

1

查詢應該放在控制器中,然後傳遞給要顯示的視圖。

+0

@Corey分貝查詢不應該直接進入控制器。他們應該在模型或DA層。 – martynthewolf 2011-05-27 17:53:30

+1

我沒有看到他正在寫整個數據庫查詢,我認爲他正在做$ this-> Tree-> find()或其他東西,應該放在控制器中,而不是模型中,但是如果他正在寫客戶查詢(這不應該是那麼簡單),那麼它應該作爲模型中的一種方法,是正確的。 – 2011-05-27 17:56:43

+0

所以,如果我不應該寫自定義查詢,我該怎麼做呢?只是試圖得到最佳實踐的想法,因爲我是新來的 – mheavers 2011-05-27 18:02:42

2

爲什麼查詢不包含在模型中?

所有數據庫表應該有一些形式的關聯模型。在這種情況下,你可能想要有一個Tree_Model或其他的東西。控制器應負責將模型設置爲正確的狀態(即,如果select中存在where謂詞,則控制器將負責將該數據提供給模型)。

從那裏,更多的是關於誰應該查詢模型 - 控制器或視圖的宗教辯論。我通常會將模型查詢放在視圖中,因爲模型已經處於正確的狀態(由控制器設置)以保持我的控制器代碼亮度。

在一天結束時,既不控制器視圖應直接查詢數據庫。

+0

對於誰降低了這一點,它已被編輯,所以你可能想再看一下(我沒有在第一個答案之前徹底讀過這個問題) – 2011-05-27 17:33:13

+0

請參閱修訂後的代碼 – mheavers 2011-05-27 17:41:18

相關問題