444683462
V2EX  ›  问与答

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

  •  
  •   444683462 · Oct 5, 2014 · 2937 views
    This topic created in 4266 days ago, the information mentioned may be changed or developed.
    第一步。建立无限分类表。
    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 replies    2014-10-05 22:43:47 +08:00
    konakona
        1
    konakona  
       Oct 5, 2014
    其实这个排版和重点标注我都没怎么能看懂问题...(羞涩...)
    要不,子查询……?
    kmvan
        2
    kmvan  
       Oct 5, 2014 via Android
    参考w p的分类设计,怎么样?
    mhycy
        3
    mhycy  
       Oct 5, 2014
    下次提问题能不能先把需求说清楚....
    alex321
        4
    alex321  
       Oct 5, 2014
    <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
       Oct 5, 2014
    @mhycy 主要是不知道怎么贴图
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2566 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 16:05 · PVG 00:05 · LAX 09:05 · JFK 12:05
    ♥ Do have faith in what you're doing.