2011-04-04 34 views
0

我有多個MySQL查詢,我需要將它們分離成Controller和View(CodeIgniter框架),這怎麼可能?參見下面的示例代碼:獨立的控制器和查看多個查詢?

例如:

$SQL_Cat = mysql_query("SELECT * FROM categories WHERE restaurant_id = '$restaurantID'"); 

while ($category = mysql_fetch_array($SQL_Cat)) 
{ 

    $CategoryID = $category['id']; 

    echo $category['name']; 
    if ($category['description'] != "") { 
     echo $category['description']; 
    } 

    $q = mysql_query("SELECT * FROM items WHERE category_id = '" . $CategoryID . "'"); 
    while($item = mysql_fetch_array($q)) 
    {   
     $item_name = $item['name']; 
     echo $item_name; 
     $item_des = $item['description']; 
     $sq = mysql_query("SELECT * FROM item_options WHERE item_id = '" . $item['id'] . "'"); 
     $item_id = $item['id']; 
     if(mysql_num_rows($sq) > 0) 
     { 
      while($item_option = mysql_fetch_array($sq)) 
      { 
       echo "---------<br />"; 
       $item_option_name = $item_option['option_value']; 
       $item_option_price = $item_option['price']; 
       $item_option_id = $item_option['id']; 

       echo $item_name; 
       echo $item_des; 
       echo $item_option_name; 
      } 
     } 
    } 
} 

回波的部分應該是在視圖(MVC)。

回答

1

嗯......最簡單的方法是這樣的

Controller.php這樣

$id = $_GET[ 'id' ] ; 
include_once 'model.php' ; 
$content = getPage($id) ; 
include 'view.php' ; 

model.php

function getPage($id) { 
    $result = mysql_query('SELECT content FROM pages WHERE id = ' . intval($id)) ; 
    $c = mysql_fetch_assoc($result) ; 
    return $c[ 'content' ] ; 
} 

view.php

<?= $content; ?> 

只需鍵入http://site/controller.php?id=1在你的瀏覽R(應該有恩於你進入DB當然)

簡化了一點,但沒有什麼好玩的書面代碼滾動:)

+0

我理解你的概念,但這並不能回答我的問題。 – user622378 2011-04-04 19:06:30

+0

爲什麼不呢?收集您的控制器中需要的所有數據,並將其傳遞到視圖。此代碼與我的示例中的代碼沒有多大區別,只是多一點代碼。如果你想讓它和專業框架一模一樣,你需要閱讀關於Reflection的一些文檔,回調並建立你自己的mvc結構。實際上有很多方法來實現mvc架構。 – kos 2011-04-04 19:49:14