Php 基于名称和操作的带有复选框的组权限列表
我在mysql上拥有一组数据权限:Php 基于名称和操作的带有复选框的组权限列表,php,html-table,grouping,Php,Html Table,Grouping,我在mysql上拥有一组数据权限: |=====================|==================| | name | action | |=====================|==================| | setting | add | |---------------------|------------------| | setting
|=====================|==================|
| name | action |
|=====================|==================|
| setting | add |
|---------------------|------------------|
| setting | view |
|---------------------|------------------|
| setting | delete |
|---------------------|------------------|
| task | add |
|---------------------|------------------|
| task | delete |
|---------------------|------------------|
| report | view |
|---------------------|------------------|
我想在表上显示权限,如下例所示:
|=====================|======================|
| permission | add | view | delete |
|=====================|======================|
| setting | [] | [] | [] |
|---------------------|----------------------|
| task | [] | | [] |
|---------------------|----------------------|
| report | | [] | |
|---------------------|----------------------|
按名称对每一行进行分组,仅显示复选框,其中操作与列标题相同,下面是迄今为止我的代码,但即使操作与列标题不同,它仍会显示复选框
<table>
<thead>
<tr>
<th>add</th>
<th>view</th>
<th>delete</th>
</tr>
</thead>
<tbody>
<?php
$permissionTitles = array();
foreach($permissions as $permission){
$permissionTitles[] = $permission['name'];
}
foreach(array_unique($permissionTitles) as $permissionTitle){
echo "<tr>";
echo "<td>".$permissionTitle."</td>";
foreach($permissions as $permission){
if($permission['name'] == $permissionTitle) {
echo "<td><input type='checkbox' value=".$permission['value'].">
</td>";
}
}
echo "</tr>";
}
?>
</tbody>
</table>
非常感谢您的帮助。鉴于您当前的设置和更改,我将以以下方式提供帮助:
foreach(array_unique($permissionTitles) as $permissionTitle){
echo "<tr>";
echo "<td>".$permissionTitle."</td>";
foreach($permissions as $permission){
if($permission['name'] == $permissionTitle) {
echo "<td><input type='checkbox' value=".$permission['value'].">
</td>";
}
}
echo "</tr>";
}
foreach(数组_唯一($permissionTitle)作为$permissionTitle){
回声“;
回显“$permissionTitle.”;
foreach($permissions作为$permission){
如果($permission['name']==$permissionTitle){
回声“
";
}
}
回声“;
}
致:
foreach(数组_唯一($permissionTitle)作为$permissionTitle){
回声“;
回显“$permissionTitle.”;
$add=false;
$view=false;
$delete=false;
foreach($permissions作为$permission){
如果($permission['name']==$permissionTitle){
如果($permission['action']=='add'){
$add=true;
}
else if($permission['action']=='view'){
$view=true;
}
else if($permission['action']=='delete'){
$delete=true;
}
}
}
回声“;
回声“;
回声“;
回声“;
}
我不太清楚PHP变量是如何设置的,但在执行以下操作的if语句之后是否需要一个else语句:echo“”?hi@Rumple谢谢您的评论,我添加了$permissions值,它是一个数组。我是否应该将else语句添加为just empty?是的,这就是您所需要的。顺便说一句,第一个循环可以替换为permissionTitles=array_unique(array_列($permissions,'name'))
我认为@Barmar不应该只使用else语句,因为他循环了所有权限。感谢@Rumple,我将$add=false更改为$add=“disabled”,并将td更改为,这样它将禁用复选框,而不是隐藏复选框
foreach(array_unique($permissionTitles) as $permissionTitle){
echo "<tr>";
echo "<td>".$permissionTitle."</td>";
foreach($permissions as $permission){
if($permission['name'] == $permissionTitle) {
echo "<td><input type='checkbox' value=".$permission['value'].">
</td>";
}
}
echo "</tr>";
}
foreach(array_unique($permissionTitles) as $permissionTitle){
echo "<tr>";
echo "<td>".$permissionTitle."</td>";
$add = false;
$view = false;
$delete = false;
foreach($permissions as $permission){
if($permission['name'] == $permissionTitle) {
if($permission['action'] == 'add'){
$add = true;
}
else if($permission['action'] == 'view'){
$view = true;
}
else if($permission['action'] == 'delete'){
$delete = true;
}
}
}
echo "<td><input type='checkbox' value=".$permission['value']." checked=".$add."></td>";
echo "<td><input type='checkbox' value=".$permission['value']." checked=".$view."></td>";
echo "<td><input type='checkbox' value=".$permission['value']." checked=".$delete."></td>";
echo "</tr>";
}