动态菜单通过PHP和MySQL

时间:2017-04-27 03:55:51

标签: php mysql dynamic menu

我必须通过使用PHP和MySQL数据库表来构建动态菜单。数据库表必须至少包含以下列:

链接名称,链接网址,链接顺序,链接状态(是否有效)。

我的问题是我从那里去哪里。我不是在寻找完整的代码来解决这个问题,而是想知道是否有人会有任何指针或知道任何有用的教程。我一直在寻找相当长的一段时间,但我不知道如何解决我必须使用的列的问题,因为我从来没有像这样使用MySQL和PHP。我还非常不清楚链接顺序列应该做什么。

以下是我如何设置数据库表,如果它能提供任何见解。

`id` int(11) NOT NULL AUTO_INCREMENT,
`link_name` varchar(255) NOT NULL,
`link_url` varchar(255) NOT NULL,
`link_order` int(11) NOT NULL DEFAULT '0'
`link_status` enum('0','1') NOT NULL DEFAULT '1'
PRIMARY KEY (`id`)

如果这是一个模糊的问题,我道歉。感谢任何能给我任何指示的人。

1 个答案:

答案 0 :(得分:0)

我希望它对你有所帮助。您将了解动态创建菜单的逻辑。

<!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Bootstrap 101 Template</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"  type="text/css" />
      </head>
      <body>
       <div class="container-fluid">
      <div class="row">
        <div class="col-md-2">   
          <div id="MainMenu">
            <div class="list-group panel">      
            <?php 
            $conn=new mysqli("localhost","root","","test");
            display_children(0, 1);
            function display_children($parent, $level) {    
                    $result = $GLOBALS['conn']->query("SELECT a.id, a.label, a.link, Deriv1.Count FROM `menu` a  LEFT OUTER JOIN (SELECT parent, COUNT(*) AS Count FROM `menu` GROUP BY parent) Deriv1 ON a.id = Deriv1.parent WHERE a.parent=" . $parent); 
                    while ($row = $result->fetch_assoc()) {
                        $random = substr( md5(rand()), 0, 7);
                        if ($row['Count'] > 0) {
                            if($level ==1){// To show root menu which contain Submenu
                                echo "<a href='#".$random."' class='list-group-item list-group-item-success' data-toggle='collapse' data-parent='#MainMenu'>".$row['label']."</a>";
                                echo "<div class='collapse' id='".$random."'>";
                                display_children($row['id'], $level + 1);
                                echo "</div>";                      
                            }else{ // to show sub menu of rootmenu which also contain submenu
                                echo "<a href='#".$random."' class='list-group-item' data-toggle='collapse' data-parent='#".$random."'>".$row['label']."<i class='fa fa-caret-down'></i></a>";
                                echo "<div class='collapse list-group-submenu' id='".$random."'>";
                                display_children($row['id'], $level + 1);
                                echo " </div>"; 
                            }           
                        } elseif ($row['Count']==0) { //To show those menu which don't contain submenu. It might be either root menu or leaf menu of sub menu
                            echo "<a href='javascript:;' class='list-group-item'>".$row['label']."</a>";    
                        } else;
                    }
                }
            ?>
            </div>
          </div>

        </div>  
      </div>  
    </div>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
      </body>
    </html>

下载sql文件的链接

https://drive.google.com/file/d/0B0u93IM3-_XHTWlQLVJsSm9SelU/view?usp=sharing