Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将控制器和视图与多个查询分开?_Php_Codeigniter - Fatal编程技术网

Php 将控制器和视图与多个查询分开?

Php 将控制器和视图与多个查询分开?,php,codeigniter,Php,Codeigniter,我有多个MySQL查询,我需要将它们分为控制器和视图(CodeIgniter框架),这怎么可能?请参见下面的代码示例: 例如: $SQL_Cat = mysql_query("SELECT * FROM categories WHERE restaurant_id = '$restaurantID'"); while ($category = mysql_fetch_array($SQL_Cat)) { $CategoryID = $category['id']; echo

我有多个MySQL查询,我需要将它们分为控制器和视图(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;
           }
       }
   }
}
$SQL\u Cat=mysql\u query(“从类别中选择*FROM restaurant\u id='$restaurantID'”);
而($category=mysql\u fetch\u数组($SQL\u Cat))
{
$CategoryID=$category['id'];
echo$category['name'];
如果($category['description']!=“”){
echo$category['description'];
}
$q=mysql_查询(“从类别_id='“$CategoryID.”的项目中选择*”;
而($item=mysql\u fetch\u数组($q))
{          
$item_name=$item['name'];
echo$item_name;
$item_des=$item['description'];
$sq=mysql_查询(“从项_选项中选择*,其中项_id=””。$item['id'].“”);
$item_id=$item['id'];
如果(mysql_num_行($sq)>0)
{
而($item\u option=mysql\u fetch\u数组($sq))
{
回声“-----------
”; $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\u option\u name; } } } }

echo的部件应在视图中(MVC)

嗯。。。最简单的方法就是这样

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

只需在浏览器中键入(当然,数据库中应该有en条目)


有点简化,但编写代码时没有乐趣:)

查看用户指南。它真的帮助我理解了MVC


  • 一旦你对使用这种模式有了很好的理解,分解你所拥有的应该不会太难。

    我理解你的概念,但这并不能回答我的问题。为什么不呢?在控制器中收集所需的所有数据并将其传递给视图。这段代码与我的示例中的代码没有太大区别,只是多了一点代码。如果您希望它与专业框架完全相同,您需要阅读一些关于反射、回调的文档,并构建自己的mvc结构。实际上,有很多方法可以实现mvc架构。