我已经做了动态导航,但现在我想在父菜单中插入子菜单
例如:如果我插入一个父菜单,那么我就可以在其中插入子菜单。
<?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/