我需要在应用程序中修改视图,并且我具有表用户权限,其结构如下所示
id_staff | feature | capabilities
1 reports view
1 reports create
1 reports edit
2 reports view
2 reports delete
3 reports view
我需要的是像id_staff 3这样的用户,该用户在报表中仅具有一项功能,例如他只能查看,不能编辑,编辑或创建的示例。然后,用户ID 3仅看到超链接来查看页面,而他看不到用于创建,编辑或删除页面的超链接。
为此,我尝试使用选择查询,将其插入到数组中,然后将数组值进行比较以得到上述条件
我尝试过这样的代码
<?php
$query = $this->db->query('SELECT * FROM tblstaff_permissions WHERE staff_id='.$id.'');
foreach ($query->result() as $row)
{
if($row['feature']=='reports' and $row['capabilities']=='view'){
<a href="view.php">View</a>
} elseif($row['feature']=='reports' and $row['capabilities']=='delete' ){
<a href="delete.php">Delete</a>
}
}
?>
然后页面空白
您知道错误在哪里吗?
谢谢
答案 0 :(得分:1)
您可以通过减少诸如$row['feature']=='reports'
这样的重复代码来改进它,例如:
$query = $this->db->query('SELECT * FROM tblstaff_permissions WHERE staff_id='.$id.'');
foreach ($query->result_array() as $row)
{
if ($row['feature']=='reports') {
if ($row['capabilities']=='view') {
echo '<a href="view.php">View</a>';
} elseif ($row['capabilities']=='delete') {
echo '<a href="delete.php">Delete</a>';
}
}
}
要获取数组结果,请使用$query->result_array()
而不是$query->result()
,而且还会错过echo
语句。
答案 1 :(得分:1)
您正在使用$ query-> result()它将给您一个对象数组,而不是数组数组。另外,您没有在视图上回显您的链接。还有一件你不应该重复使用相同条件的事情。
在这种情况下,您的代码应为-
<?php
$query = $this->db->query('SELECT * FROM tblstaff_permissions WHERE staff_id='.$id.'');
foreach ($query->result() as $row) {
if($row->feature =='reports'){
if($row->capabilities=='view'){
echo '<a href="view.php">View</a>';
} elseif($row->capabilities == 'delete' ){
echo '<a href="delete.php">Delete</a>';
}
}
}
?>