搜尋

首頁  >  問答  >  主體

mysql - 面試題:PHP三級分類怎麼印成表格展示?

1.分類表category的結構基本上是id,name,parent_id三個主要欄位組成
2.需要列印顯示成這樣的表格格式

3.該怎麼寫php程式碼? (允許重新設計資料庫表)

漂亮男人漂亮男人2753 天前721

全部回覆(6)我來回復

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:03:50

    都定好3級了,什麼才3級!?自己自連接2次就行了.

    select c1.name "一级分类", c2.name "二级分类", c3.name "三级分类"
    from category c1
    inner join category c2 on c1.id=c2.parent_id
    inner join category c3 on c2.id=c3.parent_id
    where c1.parent_id=0 #最高级;

    這樣就能得到你要的表.

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:03:50

    php 無限級分類 資料庫設計

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-16 13:03:50

    資料庫分為三張表:first_level, second_level, third_level

    first_level: id, name;
    second_level: id, parent_id, name    // second_level.parent_id = first_level.id
    third_level: id, parent_id, name    // third_level.parent_id = second_level.id

    回覆
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:03:50

    先把3級數組遍歷丟到2級子項數組,類似無限極逆向走

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 13:03:50

    各位大神人家要的是php程式碼
    其實就是一個重新排序的問題一級分類下包含的二級和三級分類,

    static public function toLevel($cate, $delimiter = '|——', $parent_id = 0, $level = 0) {
    
        $arr = array();
        foreach ($cate as $v) {
            if ($v['parent_id'] == $parent_id) {
                $v['type'] = $level + 1;
                $v['delimiter'] = str_repeat($delimiter, $level);
                $arr[] = $v;
                $arr = array_merge($arr, self::toLevel($cate, $delimiter, $v['cate_id'], $v['type']));
            }
        }
    
        return $arr;
    
    }
    这个是我的无限极分类,你的三级分类和我类似,只要渲染前段的时候注意就好了

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:03:50

    SQL裡使用遞迴查詢

    回覆
    0
  • 取消回覆