这可能是非常明显和简单的 - 但对我而言,我的基本知识并非如此:)
我有两张桌子:
table_items
-----------
item_id ¦ item_name ¦ item_describtion ¦ more item stuff.....
table_subitems
-----------------
subitem_id ¦ item_id ¦ subitem_name ¦ More subitem stuff
每个项目可以包含0到几乎无限的子项目,并且与item_id字段相关。
我想打印出按项目分组的子项目。
我目前正在使用一个查询来选择子项table_items.item_id = table_subitems.item_id
,然后用while循环显示它们,这样就可以了,我得到这样的结果:
Item One
========
Subitem 0ne
Item One
========
Subitem two
Item One
========
Subitem three
Item Two
========
Subitem one
Item Three
==========
Subitem one
Item Three
==========
Subitem two
但我想要
ITEM ONE
--------
Subitem one
Subitem two
Subitem three
ITEM TWO
--------
Subitem one
ITEM THREE
----------
Subitem one
Subitem two
我该怎么做?它是查询的函数还是我如何显示结果?
我对PHP的了解正在增长,但仍然有限,而且我是以程序的方式做到这一点(即它不是OOP,我试图抓住但还没有完全)所以跟我说话就好像我是傻瓜
答案 0 :(得分:1)
您可以执行以下操作,每次更改时都会打印一个新的ITEM NAME:
$last_item_id = null;
foreach ($rows as $row) {
if ($row->item_id != $last_item_id) {
echo "<h2>{$row->item_name}</h2>\n";
$last_item_id = $row->item_id;
}
echo "{$row->subitem_name}<br />\n";
}
答案 1 :(得分:1)
使用包含最后一个标题的变量,只有当它与上一个标题不同时才打印当前标题:
$last = null;
while ( /* … */ ) {
if ($row['item_id'] != $last) {
echo '<hx>'.$row['item_name'].'</hx>';
$last = $row['item_id'];
}
echo $row['subitem_name'];
}