1

私が達成しようとしているのは、データベースからこの形式で出力されたデータを取得することです。両方を別々に取得する方法は知っていますが、このように表示する方法がわかりません。

<h3>Category1</h3>
<li>Item1</li>
<li>Item2</li>

<h3>Category2</h3>
<li>Item1</li>
<li>Item2</li>

これまでのところ、カテゴリを含む 2 つのデータベースと、リスト項目を含むカテゴリへの外部キーを持つ別のデータベースを作成しました。これが唯一の方法だと思いますか?

これまでのところ、データを表示するために foreach を使用しているだけですが、関連するリスト項目を含む 2 つ目の foreach を実行する必要があります。誰でも初心者を助けることができますか?

4

2 に答える 2

0

これがあなたが探しているものかどうかはわかりません...しかし、私が通常行うことは次のとおりです。

$old_id_category = 0;
while($ln = $conn->fetch_array()){
  /* DATA FROM THE DATABASE */
  $id_category = $ln["id_category"];
  $categoryname = $ln["categoryname"];
  $itemname = $ln["itemname"];

  /* WHEN THE CATEGORY CHANGES */
  if($id_category != $old_id_category){
         /* PRINT HEADER */
         print("<h3>".$categoryname."</h3>");
         $old_id_category = $id_category;
  }
  /* PRINT LIST ITEMS */
  print("<li>".$itemname."</li>");
}

それが役に立てば幸い。

編集: h3 および li タグを追加しました。

于 2012-11-19T15:41:34.587 に答える
0

このようにテーブルを用意してください:

+-------+-----------+
| Item  | Category  |
+-------+-----------+
| Item1 | Category1 |
| Item2 | Category1 |
| Item1 | Category2 |
| Item2 | Category2 |
+-------+-----------+

コード:

さて、データをフェッチするときは、次の方法を使用します。

<?php
  $current_cat = "";
  foreach ($data = fetch_data_as_array($row))
  {
    if ($current_cat != $data["category"])
      echo '<h3>' . $categoryname . '</h3>';
    echo '<li>' . $data["item"] . '</li>';
    $current_cat = $data["category"];
  }
?>

データをフェッチするたびに、古いデータがチェックされます。両方が同じでない場合、ヘッダーをエコーアウトします。

于 2012-11-19T15:46:24.817 に答える