【问题标题】:php pdo recursive function for navigation menu用于导航菜单的php pdo递归函数
【发布时间】:2013-09-06 05:12:44
【问题描述】:

我试图用来自数据库的行来做一个菜单,我一直在 stackoverflow 中阅读关于做一个递归函数来评估 parentId 和 Id 并构建较低级别的选项,但没有运气。还尝试将 sql 答案转换为多维数组,但没有运气......

基本上我需要的是根据父级构建列表元素的集合,例如 Dashboard.php 是 son.php 的父级

这是我的代码:

function buildMenu($userType){

    try{

        $db   = new db();
        $conn = $db->conn();

        $SQL_BUILD_MENU = "select usertypes.id as menuId, 
        menu.name as menuName, menu.link as menuLink, 
        usertype_menu.parent_id as 
        parent from usertypes inner join usertype_menu on usertypes.id =                                usertype_menu.usertype_id inner join 
        menu on usertype_menu.menu_id = 
        menu.id where usertypes.name='".$userType."'";

        $conn->prepare($SQL_BUILD_MENU);
        foreach($check = $conn->query($SQL_BUILD_MENU) as $row) {
                echo "<ul>";
                echo "<a href=".$row['menuLink']."><li>" . $row['menuName'] . "</li></a>";
                echo "</ul>";        
        }

    }

    catch(Exception $e){

        echo "Se ha presentado un error en buildMenu".$e;

        }


    }

}


+----+--------+-------------+-----------------+--------+
| id | menuId | menuName    | menuLink        | parent |
+----+--------+-------------+-----------------+--------+
|  1 |      1 | Dashboard   | dashboard.php   | 0      |
|  2 |      1 | Interaction | interaction.php | 0      |
|  3 |      1 | Son         | Son.php         | 1      |
+----+--------+-------------+-----------------+--------+

提前致谢。

【问题讨论】:

    标签: php recursion pdo


    【解决方案1】:

    首先,清理您的查询。使用准备好的语句并绑定参数,不要字符串添加。

    其次,一次获取所有相关数据并从中构建数据结构。递归不是这里的答案。

    第三,无序列表不能将文本作为子项。您需要将它们封装在 LI 节点中。

    <ul>
       <li>Example 1</li>
       <li>Example 2</li>
       <li>
         Example 3 with a child list
         <ul>
            <li>Example 3 Child 1</li>
         </ul>
       </li>
    </ul>
    
    • 示例 1
    • 示例 2
    • 带有子列表的示例 3
      • 示例 3 孩子 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2014-03-08
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多