尝试编码一个新概念;然而,我不确定它是否会起作用。在这一点上,我只是在玩弄一个想法。
我的数据库中有一个名为defaultpermissions的表我有两列,name和status其中name是权限状态是开还是关(1或0)
那么我就有一个defaultpermissions页面上的复选框列表,管理员可以设置保存默认权限。
对于每个复选框,它检查该权限是打开还是关闭(1或0)。
最好的方法是什么?
- 我是否必须为每个权限运行一个新的查询(获取$status其中$name = '$permission')
- 或者我可以做一些事情来比较两个列在一个while语句中的每个权限一次?
对不起,这太笼统了,但在这一点上,这只是一个概念,我试图弄清楚,希望得到一些帮助。
的例子:
一些权限
- Add Page[复选框]
- 隐藏页面[复选框]
- 删除页面[复选框]
- 添加内容[复选框]
- 编辑内容
- 实时编辑器
- name = addpage status = 0
- name = hidepage status = 1
- name = removepage status = 0
- name = addcontent status = 1
等。等。
对于每一个,它需要比较行'name'和'status'来找出它是否已经激活,这样它就知道是否要勾选这个框。我不介意为每个权限做一个新的查询,但有一些,所以我认为这可能是一件坏事。现在有大约20个默认的权限选项可以在这个页面上勾选。谢谢你的提前输入
注:半PHP新手,边走边学习…如果有更好的设置方法,请告诉我。
解决问题的简单方法如下:
- 添加一个隐藏的输入字段,用于保存您的权限状态(使用您的示例,这将是1或0
- 使用PHP时,使用类似于下面的语句:
'<input type="checkbox" name="input Name Here" value="1"' . ($dbRow['Status'] == 1 ? ' checked="checked"' : '') . ' />';
上面所做的是使用从db select中找到的状态,并使用该状态默认复选框。
- 接下来你可以做一个方法(我使用开关语句在这种情况下),看看复选框和隐藏字段的值是否匹配。
$checkBoxVal = ($_GET['checkBoxName'] ?1: $_POST['checkBoxName'] ?1: 0));
$hiddenVal = ($_GET['hiddenFieldName'] == 1 || $_POST['hiddenFieldName'] == 1 ?1: 0);
if ($checkBoxVal <>hiddenVal美元){
do updates here
}//如果
的作用是查看你的复选框是否被选中。如果是,则$checkBoxVal
将为1
然后将其与隐藏输入的最后一个值进行比较。
如果他们的隐藏字段是0,你勾选你的方框并提交你的表单,值将不相同,然后你可以做你需要的更新。
对我来说,这是一个伟大的方式来改变数据库中的任何东西,如果初始值改变(也就是说,如果你不使用jQuery $.ajax
或XHR请求来动态地做到这一点。)
如果你需要更多的信息或需要一个例子,请告诉我。
希望这对你有帮助。祝你好运。=)
编辑:您的查询应该使用复选框选择您想要更改的行。
SELECT name, status FROM defaultpermissions
然后你将使用php的mysql_fetch_assoc
函数对结果查询,就像这样
,(行=美元作用(结果)美元){
//使用$row作为你的返回行在这里做你的输入字段
}//结束WHILE循环
也许这样会更清楚一些=)
我认为你很有方向感。为了改进设计,识别……可能是个好主意。
- 所有权限名称/概念
- 所有权限状态(如果权限名之间的值相同,则为相同)
现在您有了所有的信息,分析一个复选框是否正确地表示您想要表示的内容。例如,复选框可以很好地表示权限是否被授予,但表示与true/false无关的状态就不那么好了。
如果后者不是您的情况,您将能够创建一个列表,其中包含代表默认权限集状态的标签和复选框。查询将类似于
还要考虑添加另一个列来授予用户权限。您可以使用用户名来过滤每个用户的权限集和默认集。例如…
Select * from permissionsets where user like 'default' >> this will return the default set.
Select * from permissionsets where user like 'user1' >> this will return user1 permission set.
你认为这会有用吗?谢谢!
@leo