V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
444683462
V2EX  ›  问与答

重新研究这个问题:php 无限分类的子分类如何再排序

  •  
  •   444683462 · 2014-10-05 21:53:57 +08:00 · 2413 次点击
    这是一个创建于 3497 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第一步。建立无限分类表。
    CREATE TABLE IF NOT EXISTS chi_category (
    id int(11) NOT NULL AUTO_INCREMENT,
    DishCategory_Path varchar(255) DEFAULT NULL,
    DishCategory_Sort int(11),
    DishCategory_Name varchar(255) DEFAULT NULL,
    PRIMARY KEY (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;



    第二步。使用以下查询语句
    SELECT id,DishCategory_Path,DishCategory_Name,DishCategory_Sort,concat(DishCategory_Path,'-',id) as fullpath FROM chi_category order by fullpath



    第三步。看上面的语句结尾时order by fullpath。这个时候大致排序是正确的。
    但是DishCategory_Sort这个字段的值没有排序。
    因为order by要求当按照多个列进行排序时,只有第一列相同时才使用第二列。但是第一组fullpath是不可能相同的。所以现在不知道DishCategory_Sort这个字段的值如何排序。

    我想实现的正确的情况是先按fullpath排序,然后 子分类例如 (川菜、卤菜)应该在上级分类(吃的)之下进行子分类的排序,如图所示 卤菜应该排在川菜前面才对。
    那么现在怎么处理呢?各位大神
    5 条回复    2014-10-05 22:43:47 +08:00
    konakona
        1
    konakona  
       2014-10-05 22:00:48 +08:00
    其实这个排版和重点标注我都没怎么能看懂问题...(羞涩...)
    要不,子查询……?
    kmvan
        2
    kmvan  
       2014-10-05 22:05:00 +08:00 via Android
    参考w p的分类设计,怎么样?
    mhycy
        3
    mhycy  
       2014-10-05 22:06:37 +08:00
    下次提问题能不能先把需求说清楚....
    alex321
        4
    alex321  
       2014-10-05 22:09:07 +08:00
    <ul class="sf-menu sf-js-enabled" >
    <li class="cat-item">
    <?php
    $id = 1;
    foreach ($sort->result() as $item):
    $val = anchor('blog/sort/' . $item->SortID, $item->SortName);
    if ($id > ($_id = count(explode('|', $item->SortLevel)))) {
    echo str_repeat('</ul></li>', ($id - $_id)) . '<li class="cat-item">' . $val;
    } else if ($id < $_id) {
    echo '<ul class="children"><li class="cat-item">' . $val;
    } else if ($id === $_id) {
    echo '</li><li class="cat-item">' . $val;
    }
    $id = $_id;
    ?>
    <?php endforeach; ?>
    </li>
    </ul>

    好吧,这是我 5 年前随便折腾出来的,基于 CI。业余人士,各位见笑。。
    444683462
        5
    444683462  
    OP
       2014-10-05 22:43:47 +08:00
    @mhycy 主要是不知道怎么贴图
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1985 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:02 · PVG 09:02 · LAX 18:02 · JFK 21:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.