2009-07-21 4 views
0

Dies ist wahrscheinlich wirklich offensichtlich und einfach - aber es ist mir nicht mit meinen rudimentären Kenntnissen :)Gruppierung Ergebnisse unter einer Überschrift

ich zwei Tabellen habe:

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

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

Jedes Element kann haben Null bis ziemlich unbegrenzte Unterpunkte und sind durch die Felder item_id verwandt.

Ich möchte die Unterpunkte nach Artikel gruppiert ausdrucken.

ich dies derzeit mit einer Abfrage machte die Subitems wählt wo table_items.item_id = table_subitems.item_id und dann mit einer while-Schleife zeigt sie, die so weit in Ordnung ist, wie es geht, bekomme ich so etwas wie diese:

Item One 
======== 
Subitem 0ne 

Item One 
======== 
Subitem two 

Item One 
======== 
Subitem three 

Item Two 
======== 
Subitem one 

Item Three 
========== 
Subitem one 

Item Three 
========== 

Subitem two 

Aber ich wollen

ITEM ONE 
-------- 
Subitem one 
Subitem two 
Subitem three 

ITEM TWO 
-------- 
Subitem one 

ITEM THREE 
---------- 
Subitem one 
Subitem two 

Wie mache ich das? Ist es eine Funktion der Abfrage oder wie ich die Ergebnisse zeige?

Meine PHP-Kenntnisse wachsen, aber immer noch begrenzt, und ich mache das auf prozedurale Weise (dh es ist nicht OOP, die ich zu erfassen versuche, aber nicht vollständig), also rede mit mir, wie ich bin blöd.

Antwort

1

eine Variable verwenden, der die letzte Position hält und den aktuellen Druck Überschrift nur, wenn es von der letzten unterscheidet:

$last = null; 
while (/* … */) { 
    if ($row['item_id'] != $last) { 
     echo '<hx>'.$row['item_name'].'</hx>'; 
     $last = $row['item_id']; 
    } 
    echo $row['subitem_name']; 
} 
+0

Danke, hat perfekt funktioniert! – Katherine

1

Sie könnten etwas tun, den Druck ein neues Objekt Name jedes Mal ändert:

$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"; 
}