Группировка результатов по заголовку - PullRequest
0 голосов
/ 21 июля 2009

Это, вероятно, действительно очевидно и просто - но это не для меня с моим элементарным знанием :) 1001 *

У меня есть две таблицы:

table_items
-----------
item_id ¦ item_name ¦ item_describtion ¦ more item stuff.....

table_subitems
-----------------
subitem_id ¦ item_id ¦ subitem_name ¦ More subitem stuff

Каждый элемент может иметь от нуля до почти неограниченных подпунктов и связан с полями 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 растут, но все еще ограничены, и я делаю это процедурным способом (т.е. это не ООП, который я пытаюсь понять, но не полностью), поэтому говорите со мной, как будто я глуп .

Ответы [ 2 ]

1 голос
/ 21 июля 2009

Используйте переменную, которая содержит последний заголовок, и печатайте текущий заголовок, только если он отличается от последнего:

$last = null;
while ( /* … */ ) {
    if ($row['item_id'] != $last) {
        echo '<hx>'.$row['item_name'].'</hx>';
        $last = $row['item_id'];
    }
    echo $row['subitem_name'];
}
1 голос
/ 21 июля 2009

Вы можете сделать что-то вроде этого, печатая новое ИМЯ ПУНКТА каждый раз, когда оно меняется:

$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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...