【发布时间】:2016-04-09 10:54:36
【问题描述】:
这是我的代码
<ul class="nav side-menu">
<?php
$mnquery=$ob->showDataall("select * from menus where parent_id='0' and delet='0'");
foreach($mnquery as $value)
{
$selquery=$ob->showDataall("select * from menu_permission where staff_id='".$_SESSION['user_id']."'");
foreach($selquery as $nquery)
{
foreach(explode(",",$nquery['permission']) as $mnu)
{
if($value['menu_id']==$mnu)
{
?>
<li><a <?php if($value['menu_hyper']!='#'){ echo 'href="'.$value['menu_hyper'].'"';}?>><i class="fa fa-bars"></i><?php echo $value['menu_name']; if($value['menu_hyper']=='#'){?><span class="fa fa-chevron-down"></span><?php }?></a>
<?php
$submnquery=$ob->showDataall("select * from menus where parent_id='".$mnu."' and delet='0'");
if(!empty($submnquery))
foreach($submnquery as $subvalue)
{
if($subvalue['parent_id']==$mnu)
{
?>
<ul class="nav child_menu" style="display: none">
<li><a <?php if($subvalue['menu_hyper']!='#'){ echo 'href="'.$subvalue['menu_hyper'].'"';}?>><?php echo $subvalue['menu_name']; if($subvalue['menu_hyper']=='#'){?><span class="fa fa-chevron-down"></span><?php }?></a>
<?php
$chldmnquery=$ob->showDataall("select * from menus where parent_id='".$subvalue['menu_id']."' and delet='0'");
if(!empty($chldmnquery))
foreach($chldmnquery as $chldvalue)
{
if($chldvalue['parent_id']==$subvalue['menu_id'])
{
?>
<ul class="nav child_menu" style="display: none">
<li><a href="<?php echo $chldvalue['menu_hyper'];?>"><?php echo $chldvalue['menu_name'];?></a></li>
</ul>
<?php
}
}
?>
</li>
</ul>
<?php
}
}
?>
</li>
<?php
}
}
}
}
?>
</ul>
这是我的函数 showDataall
public function showDataall($result)
{
$q = $this->conn->prepare($result) or die("failed!");
$q->execute();
while ($r = $q->fetch(PDO::FETCH_ASSOC))
{
$data[] = $r;
}
return $data;
}
这是我的名为“menus”的表格
menu_id menu_name menu_hyper parent_id delet
1 Master Settings # 0 0
2 Add New Menu ../pages/menu_add.php 1 0
3 Menu Permission ../pages/menu_permissions.php 1 0
4 Role ../pages/add_role.php 1 0
5 Staff ../pages/add_staff.php 1 0
6 Add Product ../pages/product_add.php 0 0
这是我的另一个名为“menu_permission”的表
id staff_id permission
1 1 1,2,3,4,5,6
2 2 1,4
我允许“staff_id=1”的所有菜单权限
我允许 menu_id 1 和 4 用于 'staff_id=2'
staff_id=1 已全部登录菜单已显示,但 staff_id=2 已登录 所有菜单均显示
我只允许两个用于 staff_id=2 的菜单(menu_id = 1 和 menu_id = 2)如何解决此问题
请帮帮我....
【问题讨论】:
-
伙计,你有 5 个循环,一个接一个……你应该使用 PHP 函数来寻找一个值。例如,将
foreach(explode(",",$nquery['permission']) as $mnu)替换为if(in_array($subvalue['parent_id'],$nquery['permission']),以检查一个值是否在数组中...这样做会使您的代码更具可读性...更多可调试性...然后您应该记录发生的事情在每个 if/foreach 中,检查问题出在哪里... -
我试试这个不行
-
这里你必须做一个完整的 dubug。尝试通过检查进入循环时获得的数据来使第一个循环工作。一旦你这样做了,检查第二个循环是否良好等等......我的建议并不能解决问题,它只是帮助你的代码更清晰,更容易调试......这太大了,我们无法快速帮助你...
-
第一个循环运行良好,但第二个循环有问题
-
所以
$selquery可能没有按您的预期填写?你能在上面做一个 var_dump 或 print_r 吗?