0

尝试编写一个新概念;但是,不确定它是否能正常工作。在这一点上,我只是在玩一个想法。

因此,我的数据库中有一个名为 defaultpermissions 的表,我有 2 列,“名称”和“状态”,其中名称是权限,状态状态是打开还是关闭( 1 或 0 )

因此,我在 defaultpermissions 页面上有一个复选框列表,管理员可以在其中设置保存默认权限。

对于每个复选框,它会检查该权限是打开还是关闭(1 或 0)。

最好的方法是如何做到这一点?

  1. 我是否必须为每个权限运行一个新查询(获取 $status where $name = '$permission')
  2. 或者我可以为while语句中的每个权限一次比较两列吗?

抱歉,它太笼统了,但在这一点上,它只是我试图弄清楚的一个概念,并希望得到一些帮助。

例子:

一些权限

  • 添加页面[复选框]
  • 隐藏页面 [复选框]
  • 删除页面 [复选框]
  • 添加内容[复选框]
  • 编辑内容[复选框]
  • 实时编辑器 [复选框]

数据库:

  • 名称 = 添加页面状态 = 0
  • 名称 = 隐藏页面状态 = 1
  • 名称 = 删除页面状态 = 0
  • 名称 = 添加内容状态 = 1

等等等等

对于每一个,它需要比较行'name'和'status'来确定它是否已经激活,因此它知道是否要选中该框。我不介意为每个权限做一个新的查询,但是有一些,所以我认为这可能是一件坏事。目前,可以在此页面上检查大约 20 个默认权限选项。感谢您提前输入

PS Semi 是 PHP 新手,边走边学……如果有更好的设置方法,请告诉我。

4

2 回答 2

0

您的问题的简单解决方案如下:

  • 添加一个隐藏的输入字段来保存您的权限状态(使用您的示例,这将是 1 或 0
  • 使用 PHP,使用类似于以下的语句:

'<input type="checkbox" name="input Name Here" value="1"' . ($dbRow['Status'] == 1 ? ' checked="checked"' : '') . ' />';

它使用从 db select 中找到的状态并使用该状态将框默认为选中状态。

  • 接下来,您可以采取一种方法(我在这种情况下使用switch 语句)来查看复选框和隐藏字段的值是否匹配。

$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 请求动态地执行此操作。)

如果您需要有关此的更多信息或需要示例,请告诉我。

希望这有帮助。祝你好运。=)

编辑:

您的查询应该选择您要使用复选框更改的行。

从默认权限中选择名称、状态

mysql_fetch_assoc然后你会像这样在结果查询上使用 PHPs 的函数

而 ($row = mysql_fetch_assoc($result)) {

//在此处使用 $row 作为您返回的行来输入您的输入字段

}//END WHILE 循环

也许这会让它更清楚一点=)

于 2013-03-08T02:08:25.890 回答
-1

我认为你的方向很好。为了改进设计可能是一个好主意来识别..

  • 所有权限名称/概念
  • 所有权限状态(如果权限名称之间的值相同,则为身份)

现在您已经掌握了所有信息,请分析复选框是否正确表示您想要表示的内容。例如,一个复选框可以很好地表示是否授予了权限,但表示与真/假无关的状态就不是很好了。

如果后者不是您的情况,您将能够创建一个列表,其中包含表示默认权限集状态的标签和复选框。查询将类似于

还可以考虑添加另一列以向用户授予权限。您可以使用用户名来过滤每个用户的权限集以及默认集。例如...

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

于 2013-03-08T01:58:32.850 回答