首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将子页的MySQL路径列放入分层数组并输出到分层<ul>

将子页的MySQL路径列放入分层数组并输出到分层<ul>
EN

Stack Overflow用户
提问于 2015-06-22 16:43:18
回答 1查看 52关注 0票数 1

我有一个MySQL表,其中包含我构建的自定义CMS的内容。

有许多列,但处理路径的列是:

  • 路径(页的完整路径,例如/类别/页1/)
  • 父路径(直至该特定页面的路径,例如/类别/)
  • 子路径(遵循父路径的路径,例如第1页/)

我编写了一个函数,它将特定页面的所有子页都放入数组中,另一个函数将它们输出到li元素中。

代码语言:javascript
复制
function get_subpages($path) {

    $GetSubpages=mysql_query("SELECT * FROM content WHERE parentpath='$path'");
    while ( $SubpageLoop = mysql_fetch_assoc($GetSubpages) ) {
        $Subpages[] = $SubpageLoop;
    }
    unset($GetSubpages);
    return $Subpages;
}

代码语言:javascript
复制
function list_subpages($path) {

    $Subpages=get_subpages($path);

    if ($Subpages) {

        $Output="";

        foreach($Subpages as $Subpage) {

            $Output .= '<li><a href="'.$Subpage[path].'">'.$Subpage[title].'</a></li>';

        }

    }

    return $Output;
}

但是,我想让函数操作,以便生成的数组是分层的,对应于页面结构,以及生成的HTML列表。

我在SQL查询中尝试使用不同的操作符,然后创建一个辅助循环,然后得到每个结果的子页面,但没有什么好的结果。

代码语言:javascript
复制
mysql_query("SELECT DISTINCT parentpath FROM content WHERE parentpath LIKE '$path%' ORDER BY path ASC");

我还开始使用一个preg_match来捕获中间带有斜杠的任何项,然后使用数组结果之一运行另一个查询,但是还无法确切地知道如何使它以我想要的方式工作。

代码语言:javascript
复制
preg_match ( "/^(.*)\/(.*)\//", $ParentLevel, $Matches );

我只是很难拼凑在一起。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-22 21:13:39

弄明白了:

代码语言:javascript
复制
 function has_immediate_children($path) {

    $path=sanitize($path);

    $GetImmediateChildren=mysql_query("SELECT path FROM content WHERE parentpath='$path' ORDER BY path ASC");
    if ( mysql_num_rows($GetImmediateChildren)>0) { return true; }
    else { return false; }

}



function get_immediate_children($path) {

    $path=sanitize($path);

    $GetImmediateChildren=mysql_query("SELECT * FROM content WHERE parentpath='$path' ORDER BY path ASC");
    while ( $ImmediateChildrenLoop = mysql_fetch_assoc($GetImmediateChildren) ) {

        $ImmediateChildren[]=$ImmediateChildrenLoop;

    }
    return $ImmediateChildren;

}



function get_all_subpages($path) {

    $path=sanitize($path);


    $ImmediateChildren=get_immediate_children($path);

    echo '<ul>';

    foreach ($ImmediateChildren as $ImmediateChild) {

        echo '<li><a href="'.$ImmediateChild[path].'">'.$ImmediateChild[title].'</a></li>';

        if ( has_immediate_children($ImmediateChild[path]) ) {

            get_all_subpages($ImmediateChild[path]);

        }

    }

    echo '</ul>';

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30985423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档