我想列出我店里最畅销的印刷品。我有一个表格(print_for_sale(,上面有fk_sale_id和fk_print_id,我可以看到已经购买了多少印刷品。
我想出了这个代码来打印出一个有组织的列表,从购买最多到最少(不确定它是否完全正确(:
<?php
$sql = "SELECT fk_print_id as printId, COUNT(print_for_sale_id) as saleCount
FROM print_for_sale
GROUP BY fk_print_id
ORDER BY saleCount DESC";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
echo $row['printId']; echo $row['saleCount']; }
?>
我正在尝试将其过渡到我的模型,控制器和视图(mvc(,但是我遇到了很多麻烦。我是新手,我尝试了很多不同的方法,但似乎都没有奏效。我迷路了。现在我有这样的(它什么也没打印出来(,或者当我在我的视图中发出回声时,它打印出的唯一内容是"注意未定义的变量 arr">
型号.php
function getBestSelling() {
$sql = "SELECT fk_print_id as printId, COUNT(print_for_sale_id) as saleCount
FROM print_for_sale
GROUP BY fk_print_id
ORDER BY saleCount DESC";
$result = $this->conn->query($sql);
return $this->buildArr($result);
}
控制器.php
function bestselling() {
$arr = $this->model->getBestSelling();
print_r($arr);
include 'view.php';
}
查看.php
<?php echo $arr['printId'] ?>
我想打印出查询结果,但没有任何效果。如果这不是一个合适的问题,我很抱歉,但我真的可以使用一些帮助来理解这一点。
我没有使用任何框架。
在我的模型中,我确实有一个class model { }
,一个function __construct()
和一个function __destruct()
。我还有一个构建数组的函数。
function buildArr($result) {
$arr = array();
while ($row = $result->fetch_assoc()) {
array_push($arr, $row);
}
return $arr;
}
在我的控制器中,我include 'model.php';
并有一个class Controller {}
和function __construct() { $this->model = new model();}
.
我还有一个索引.php我从中开始会话并define("BASE_URL", 'http://' . $_SERVER['SERVER_NAME'] . '/printstore/index.php/');
该应用程序正在运行。我已经可以注册用户,登录并进行购买。我似乎无法正确理解这部分代码。将不胜感激!很抱歉这篇文章很长,提前感谢您。
包含的文件没有按预期运行。要做到这一点,你必须从变量中创建一个全局变量(但不要这样做!您可以在控制器中print_r()
数组,因为您是从模型中获取数组的。但在那之后,你包括视图。当您将该数组放在包含的文件中时,而不在文件本身中定义它,您将不会得到结果,因为只有包含文件可以访问任何定义的变量。反之则不然。
因此,如果您希望此功能正常工作,则必须将变量$arr
全局(不推荐(,或者将控制器包含在view.php
中。(请注意,这不是MVC!如果希望这是 MVC,则必须为控制器使用类并在视图中使用这些对象。要找到更好的解释,请参阅下面的链接。
我个人喜欢使用模板引擎(也不与 MVC 相关(。我很喜欢Smarty,但我也听说过关于小胡子的好故事。
这些模板引擎为您提供了一种将变量传递到模板的方法,而无需包含控制器文件。例如在 Smarty 中:
.PHP:
$variable = 'Hello World!';
$smarty->assign('variable', $variable);
$smarty->display('helloworld.tpl');
聪明,你好世界.tpl:
{$variable}
输出: Hello World!
我还建议您阅读这些内容,它们可能会比我无法解释的更能帮助您。
- 在 PHP 中设置 MVC:http://www.sitepoint.com/the-mvc-pattern-and-php-1/
- 在 PHP 中包含文件:将变量从一个 php 包含文件传递到另一个:全局与非
编辑
Teresko 是对的,你不应该使用全局变量。我只是在这里指定了它们,因为可以使用它们(绝对不推荐(。阅读这个问题以了解几个原因:停止在PHP中使用"global">