如何向左右方向显示<ul>

时间:2015-04-27 08:54:21

标签: php html css

我有以下菜单表:

enter image description here

查询表格:

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');

现在我希望结果显示右侧菜单下的项目到页面的右侧,左侧菜单从页面中间向左侧显示如下: enter image description here

我试图做以下事情:

$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

1 个答案:

答案 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