3

だから、私は一種のユーザーマーケットタイプのものを作ろうとしています。を含むデータベースがありitem_names、基本的に仮想アイテムを記述し、次に別のテーブルがあります。このテーブルmarketでは、ユーザーがアイテムの1つをリストすると、ユーザーユーザー市場に売りに出されます。

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]

など、動的に実行されます。

何か助けはありますか?

4

2 に答える 2

6

データを取得します。

$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>';
}
于 2012-05-22T21:22:28.257 に答える
0

SQL クエリの結果を順序付け ( group ではなく) していることを確認してください。ループは非常に単純になります (PDO とtable列をitem_name想定item_names)。

$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'];
}
于 2012-05-22T21:26:54.737 に答える