2012-05-22 59 views
1

所以,我試圖做出一種用戶市場類型的東西。有一個數據庫item_names,基本上描述了虛擬物品,然後還有另一個表market,當用戶列出他們的物品之一時,它將在用戶用戶市場上出售。在PHP中的foreach循環中分組項目

這裏我唯一的問題是我想按照item_name表中引用的項目名稱對它進行分組。我知道我可以做一堆if/else語句,但這不僅僅是因爲有很多項目,還因爲隨着時間的推移我會添加更多的項目。我想最終的結果是

--[Water for sale]---------------------+ 

[50 water for sale] [20 water for sale] 

[10 water for sale] [10 water for sale] 

--[Chips for sale]----------------------+ 

[50 chips for sale] [20 chips for sale] 

[10 chips for sale] [10 chips for sale] 

等等,動態地完成。

任何幫助?

+0

只使用SQL ... – Flukey

+0

http://www.garfieldtech.com/blog/php-group-by-with-arrays – Unixmonkey

+0

mmmmmmmm芯片和瓶裝水。 – goat

回答

3

獲取數據:

$data = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $itemName = $row["item_name"]; 
    if (!array_key_exists($itemName, $data)) { 
    $data[$itemName] = array(); 
    } 
    $data[$itemName][] = $row; 
} 

顯示數據

foreach ($data as $itemName => $rows) { 
    echo '<h1>', $itemName, '</h1>'; 
    echo '<ul>'; 
    foreach ($rows as $row) { 
    echo '<li>', $row["article_name"], '</li>'; 
    } 
    echo '</ul>'; 
} 
0

確保您爲了(不)在您的SQL查詢的結果,則循環將是非常簡單的(假定PDO,並且表item_names上的列item_name):

$sth = $dbh->query ("SELECT * FROM item_names ORDER BY item_name"); 
$lastname = ''; 
while ($row = $sth->fetch()) { 
    if($lastname != $row['item_name']) { 
     echo '<h1>' . $row['item_name'] . '</h1>'; 
    } 
    // echo contents for each item here 

    // remember name from last row 
    $lastname = $row['item_name']; 
} 
+0

謝謝。這正是我所瞄準的,只是無法想象它! – Urduni