商品を検索した時に、検索結果の商品に紐づくカテゴリを下の表の様に表示したいです。

```

    グルメ(99)
        お酒(50)
            ワイン(25)
            ビール(25)
        スイーツ(49)
            スナック(49)
    メンズ(999)
        アウター(800)
            ジャケット(100)
            コート(700)
        トップス(99)
            シャツ(99)
        バッグ(100)
    
```

商品テーブルは下の様になっていて、カテゴリは小カテゴリに属すものも中カテゴリに属すものもあります。

```

    integer item_id
    integer category_id
    varchar name
    
```

カテゴリテーブルは

```

    integer category_id
    integer parent_id
    varchar name
    
```

の様になっています。

DBから取得した1次元の商品レコード配列（カテゴリID配列）からどのようにデータを作成するべきなのか（再帰処理になりそうなのはわかるのですが、まだ再帰処理をしたことがなく）、  
また、MVCのモデルの中でループ処理をすると思うのですが、htmlもこのモデル内のループで作成するものなのでしょうか、それともモデル内でメニュー用データ配列を作成して、ビューで再度ループを回してhtmlを作成するものなのでしょうか？

ご教示頂けますとありがたく思います。  
phpを使用しています。
CC BY-SA 3.0
2016-09-22T07:10:18.153
29051
2016-10-15T09:46:30.263
18876
question
php html mysql
カテゴリ階層メニューのロジック