can*_*era 0 php list categories
有人可以帮助我按PHP分类列出项目吗?
我正在尝试按类别创建一个简单的书籍列表:
JavaScript
JavaScript模式
面向对象的JavaScript
Ajax
Ajax权威指南
防弹Ajax
jQuery
jQuery Cookbook
学习jQuery 1.3
我对数据结构或SQL查询没有任何问题:
BOOK: book_id, book_title, fk_category_id
CATEGORY: category_id, category_name
SELECT category.category_name, book.book_title
FROM category LEFT OUTER JOIN book
ON category.category_id = book.fk_category_id;
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何编写PHP脚本来列出每个类别标题下的书籍.
我知道足以将结果集合成一个数组,但后来我很难使用该数组来分组项目,如图所示.
另一个Stack问题解决了几乎相同的问题,但是响应没有解决PHP代码:按类别列出项目
谢谢!
ORDER BY category.category_name在查询中添加一个子句,以便在循环生成的行时,每个类别中的项目将组合在一起.然后,每次类别与前一个类别不同时,在打印标题之前将类别打印为标题.
$category = null;
foreach ($rows as $row) {
if ($row['category_name'] != $category) {
$category = $row['category_name'];
print "<h1>".$category."</h1>\n";
}
print $row['book_title']."<br/>\n";
}
Run Code Online (Sandbox Code Playgroud)
按类别排序结果,然后只需通过迭代,在类别名称更改时放置类别标题.
在SQL查询中最容易完成排序.你甚至不需要一个中间数组.
SELECT category.category_name, book.book_title
FROM category LEFT OUTER JOIN book
ON category.category_id = book.fk_category_id
ORDER BY category.category_name
Run Code Online (Sandbox Code Playgroud)
然后为PHP
$res = mysql_query($query);
$lastCategory = '';
while ($row = mysql_fetch_assoc($res))
{
if($row['category_name'] != $lastCategory)
{
$lastCategory = $row['category_name'];
echo "<br /><strong>$lastCategory</strong>";
}
echo $row['book_title'] . ' <br />';
}
Run Code Online (Sandbox Code Playgroud)
您不需要先将所有结果放入数组中.您可以随时取出它们.