0

正如答案中指出的那样,我不是要组织结果,而是要过滤它们。我很抱歉造成混乱!:D

我已经尽力用谷歌搜索解决这个问题,但我很难找到解决方案..

我有一个具有这种结构的 SQL 数据库,因为我正在尝试制作一个基本的 CMS:

页码 | 标题 | 页文 | 菜单栏

我想做的是在页面上做一个导航,循环所有的行,让它们看起来像链接,几个月前我的老师帮助我:

$query_MenuItems = "SELECT pageid,title,menu_par FROM v2 ORDER BY menu_par ASC";
$MenuItems = $mysqli->query($query_MenuItems);
$row_MenuItem = $MenuItems->fetch_assoc();
$totalRows_MenuItems = $MenuItems->num_rows;    

do { echo 
"<a href=\"?page={$row_MenuItem['pageid']}\">{$row_MenuItem['title']}</a><br/>";
} 
while ($row_MenuItem = $MenuItems->fetch_assoc());
}

这很好用,但是我的问题是我不知道如何根据它们的 menu_par 值对不同的链接进行排序。

我觉得我已经尽我所能来解决这个问题,这让我感到压力很大

有什么办法可以像上面那样制作一个类似的循环,但是通过使用多个循环对其进行排序?:

while ($row_MenuItem = $MenuItems->fetch_assoc())
{
if ("{$row_MenuItem['menu_par']}" == '1') echo
"<a href=\"?page={$row_MenuItem['id']}\">{$row_MenuItem['title']}</a><br/>";
}

我希望你们能帮助我:)

4

3 回答 3

2

首先,我没有阅读整个问题,而是加载了所有数据,然后将其排序到 PHP 中似乎不是一个好主意。DBMS 就是为此而设计的,由于您对检索数据的查询,您应该通过执行类似操作来直接订购它们

SELECT pageid,title,menu_par FROM v2 order by menu_par
于 2012-05-11T12:43:39.903 回答
2

为什么不在ORDER BY您的 SQL 查询中使用?

SELECT pageid,title,menu_par FROM v2 ORDER BY menu_par ASC

通过此查询(和 ORDER BY x ASC 子句),记录按 menu_par 值升序排列...

您可以在此处阅读有关此内容的更多信息:http: //dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html

如果您想根据menu_par值过滤结果(例如,您只想选择那些具有 的链接menu_par == 1)您将使用一个WHERE子句:

SELECT pageid,title,menu_par FROM v2 WHERE menu_par = 1
于 2012-05-11T12:45:12.337 回答
0

您应该使用WHERE子句在数据库中执行此操作。

SELECT pageid,title,menu_par FROM v2
WHERE menu_par = 1
于 2012-05-11T12:45:16.113 回答