php - 我如何通过 php 和 mySql 添加菜单子(monad)项

标签 php mysql

我已经做了动态导航,但现在我想在父菜单中插入子菜单
例如:如果我插入一个父菜单,那么我就可以在其中插入子菜单。

<?php    
include("includes/db.php");  

$query="select * from menus";  

$run=mysql_query($query);  

while($row=mysql_fetch_array($run)){  

    $m_title = $row[1];

    echo "<ul><li><a href='pages.php?pages=$m_title'>$m_title</a></li></ul>";
}

?>

最佳答案

如果你想为你的应用程序创建n级菜单,你需要递归函数。

首先将“parent”id 字段添加到表中:

    CREATE TABLE IF NOT EXISTS `menus` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `title` varchar(255) NOT NULL,
      `parent` int(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

    INSERT INTO `menus` (`id`, `title`, `parent`) VALUES
    (1, 'Menu 1', 0),
    (2, 'Menu 2', 0),
    (3, 'Sub Menu 1', 1),
    (4, 'Sub Menu 2', 1),
    (5, 'Sub Menu 3', 2);

并使用以下函数生成n级菜单:

    createmenu(0); // Enter root menu id

    function createmenu($pid) {

       if($pid == 0) { echo "<ul>"; }

       $query = "select * from menus where parent = $pid";
       $run = mysql_query($query);         
       $count = mysql_affected_rows();

       if($count > 0) {

           echo "<ul>";

           while($row=mysql_fetch_array($run)){  

                $id = $row[0];
                $m_title = $row[1];

                echo "<li><a href='pages.php?pages=$m_title'>$m_title</a>";

                $q = "select * from menus where parent = $id";
                $r = mysql_query($q);          
                $c = mysql_affected_rows();

                if($c > 0) {
                    createmenu($id);
                }

                echo "</li>";               
            }   

            echo "</ul>";      
       }

       if($pid == 0) { echo "</ul>"; }
    }

您将得到以下输出:

<ul>
    <ul>
        <li><a href='pages.php?pages=Menu 1'>Menu 1</a>
            <ul>
                <li><a href='pages.php?pages=Sub Menu 1'>Sub Menu 1</a></li>
                <li><a href='pages.php?pages=Sub Menu 2'>Sub Menu 2</a></li>
            </ul>
        </li>
        <li><a href='pages.php?pages=Menu 2'>Menu 2</a>
            <ul>
                <li><a href='pages.php?pages=Sub Menu 3'>Sub Menu 3</a></li>
            </ul>
        </li>
    </ul>
</ul>

关于php - 我如何通过 php 和 mySql 添加菜单子(monad)项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25657094/

相关文章:

mysql - 解决较小的特权

php - 交响乐 2 : Doctrine can't create relationship

javascript - 使用 jsPDF 从远程 URL 创建 PDF 文件

php - php 如何去掉字符串中的空格

javascript - CODEIGNITER:模式形式插入数据而不加载页面

php - db like ms access for php

java - 调整 Linux 和 MariaDB 上的 Java 性能

mysql - 时间戳意味着什么?

MySQL 和 LIKE 比较与 %

sql - 在 MySQL 中存储图像