gpt4 book ai didi

php - 获取子页面的MySQL路径列到分层数组中并输出到分层

    转载 作者:行者123 更新时间:2023-11-30 22:41:42 24 4
    gpt4 key购买 nike

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

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

    • 路径(页面的完整路径,例如/category/page1/)
    • 父路径(到该特定页面的路径,例如/category/)
    • 子路径(父路径之后的路径,例如 page1/)

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

    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;
    }

    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 查询中使用 DISTINCT 运算符,然后创建一个辅助循环来获取每个结果的子页面,但运气不佳

    mysql_query("SELECT DISTINCT parentpath FROM content WHERE parentpath LIKE '$path%' ORDER BY path ASC");

    我还开始使用 preg_match 来捕获中间带有斜杠的任何项目,然后使用其中一个数组结果运行另一个查询,但一直无法弄清楚如何让它工作我想要的方式。

    preg_match ( "/^(.*)\/(.*)\//", $ParentLevel, $Matches );

    我只是很难把它拼凑起来。谁能帮帮我?

    最佳答案

    想通了:

     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>';

    }

    关于php - 获取子页面的MySQL路径列到分层数组中并输出到分层<ul>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30985423/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com