如何在数据库中列出最有序的项目?

时间:2015-02-25 01:18:00

标签: php mysql database list model-view-controller

我有一个像商店一样的MVC。 我想列出最多买的物品(在这种情况下是印刷品,因为它是一家印刷店)。 我特别难以找到它,因为我对php / mysql很新,特别是对于这个MVC结构......我希望这不是一个糟糕的问题。

我有一个像这样的 model.php

 <?php

class model {

private $conn;

function __construct() {
    $server = "localhost";
    $login = "root";
    $pass = "";
    $db = "printstore";

    $conn = new mysqli($server, $login, $pass, $db);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } else {
        $this->conn = $conn;
    }
}

function __destruct() {
    $this->conn->close();
}

function buildArr($result) {
    $arr = array();
    while ($row = $result->fetch_assoc()) {
        array_push($arr, $row);
    }
    return $arr;
}

}

controller.php

 <?php

 include 'model.php';

 class Controller {

 private $model;

function __construct() {
    $this->model = new model();
}


function home() {
    include 'views/home.php';
}

    }  

index.php

<?php
session_start();
include 'controller.php';

define("BASE_URL", 'http://' . $_SERVER['SERVER_NAME'] . '/printstore2/index.php/'); 

define("MAIN_BASE_URL", 'http://' . $_SERVER['SERVER_NAME'] . '/printstore2/');

$controller = new controller();


include 'views/templates/header.php';

if (isset($_SERVER['PATH_INFO'])) {  
$url = explode("/", $_SERVER['PATH_INFO']); 
$function_name = $url[1]; 
if (isset($url[1]) && $url[1] !== "") {
    if (isset($url[2])) {
        $controller->$function_name($url[2]); 
    } else {
        $controller->$function_name(); 
    }
} else {
    $controller->home();
}
} else {
include 'views/home.php';
}

include 'views/templates/footer.php';

我希望发布&#34;畅销图片的视图&#34;:

 <div>

<h2>Top Prints</h2>
    <ol>
       <li>1st print most bought</li>
       <li>2nd</li>
       <li>3rd</li>
    </ul>

现在,我的数据库有一个名为&#34; print_for_sale&#34;它有print_id和sale_id,在那里我可以看到已经购买了多少印刷品。

database

我该怎么做?我迷路了!

对不起,我很抱歉。

1 个答案:

答案 0 :(得分:1)

使用COUNT和GROUP BY 获取所有印刷品与其销售数量的列表:

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

也就是说,如果我理解你的表格。