我有以下菜单表:
查询表格:
CREATE TABLE IF NOT EXISTS `menu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sub_id` int(11) NOT NULL,
`menu` varchar(200) NOT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO `menu` (`id`, `sub_id`, `menu`) VALUES
(1, 0, 'Right'),
(2, 0, 'Left'),
(3, 1, 'A1'),
(4, 2, 'B1'),
(5, 3, 'AA1'),
(6, 4, 'BB1');
现在我希望结果显示右侧菜单下的项目到页面的右侧,左侧菜单从页面中间向左侧显示如下:
我试图做以下事情:
$conn = mysqli_connect('localhost', 'root', '','rnt_reports');
if( !empty($conn->connect_errno)) die("Error " . mysqli_error($conn));
echo"Vikas";
menu(0);
function menu($id){
global $conn;
$sql = "select * from menu where sub_id ='".$id."'";
$result = $conn->query($sql);
while($row = mysqli_fetch_object($result)){
$i = 0;
if ($i == 0) echo '<ul>';
echo '<li>' . $row->menu;
menu($row->id);
echo '</li>';
$i++;
if ($i > 0) echo '</ul>';
}
}
结果:
维卡斯
Right
A1
AA1
Left
B1
BB1
答案 0 :(得分:0)
尝试使用像这样的对象组织它
class MenuItem {
public $id;
public $menu;
public $subId;
public $subMenu = [];
public function applySubMenus(array $allItems)
{
foreach($allItems as $key => $item) {
if($item->subId == $this->id) {
$this->subMenu[] = $item;
unset($allItems[$key]); // This should prevent infinite recursion
$item->applySubMenus($allItems);
}
}
}
}
不可否认,我没有对此进行测试,但它应该可行。您需要先将记录中的数据加载到此对象中。
更新:代码已修复并经过测试:http://sandbox.onlinephpfunctions.com/code/4007b46b33cc9803c676a89065b6c0ff7d4b252c