2013-03-08 57 views
0

试图编写一个新概念;但是,不知道它的工作是否正常。在这一点上,我只是在玩一个想法。编写sql和if语句的最佳方式比较数据库中的两个项目

所以,有一个叫我的数据库缺省权限表,我有2列,“名”和“状态”,其中名称是权限和地位的国家无论是打开或关闭(1或0)

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

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

这样做的最好方法是什么?

  1. 我就要跑每个权限的新的查询(得到$状态其中$名称=“$权限”)
  2. 或者我可以做一些事情来两列同时在比较每个许可而声明?

对不起,所以一般,但在这一点上,它只是一个概念,我想弄明白,并会喜欢一些帮助。

例如:

某些权限的设置

  • 添加页[复选框]
  • 隐藏页[复选框]
  • 删除页[复选框]
  • 内容添加[复选框]
  • 编辑内容[复选框]
  • live编辑[复选框]

数据库:

  • 名称= addpage状态= 0
  • 名称= hidepage状态= 1个
  • 名称= removepage状态= 0
  • 名称= addcontent状态= 1

等等

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

P.S.半新的PHP和学习,如果有更好的方式来设置这个请让我知道。

+0

有这么多的方法,你可以在<选择您的语言>/SQL做到这一点。我将在SQL中查看每个复选框的case语句,并将值设置为表单中的值。我不担心检查是否需要更新,除非需要存储以前的值。否则,它的一堆检查不需要完成。如果currentval为false并且形式为true,那么将true设置为...不是必需的。 – 2013-03-08 02:05:38

+0

这是非常真实的,他们有很多方法来做到这一点。通过使用(如果currentval <> initval)方式,您可以在单个页面上创建一个拥有所有权限和状态的页面并一次更新它们。最终,这个列表会变得很长,做这个检查将会使它变得非常易于管理。我作为[CoolStuffInc.com](http://coolstuffinc.com)的开发人员工作,并将html,php和sql写入40多个小时,这是我们用于产品输入和管理员工登录等的系统。 – Mic1780 2013-03-08 02:18:41

+0

The我计划设置这个如果列表太长,这是为了将diff部分分成不同的页面(网站管理/内容管理/用户管理)......但我仍然对如何设置查询感到困惑,和每个复选框,使所有的工作...我不知道什么(如果currentval <>初始)是诚实的... – kdjernigan 2013-03-08 03:24:14

回答

-1

我认为你很好的导向。为了提高设计可能是一个好主意,以确定..

  • 所有权限名/概念
  • 所有权限状态(身份如果值是常见权限名之间)

现在你把所有这些信息,分析如果一个复选框代表正确你想代表。例如,一个复选框可以很好地表示权限是否被授予,但是代表与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

+0

这是我正在做...我让管理员创建默认值,将自动添加到当时注册的用户......他们可以在任何给定的时间进行更改默认值..另一个数据库具有每个用户的所有用户权限..管理员可以进入的方式给每个用户不同的权限......但是,你可以帮助我设置允许checked = true和未选中的复选框= false ...我需要它来拉动保存在数据库内部的设置。例如,如果允许用户编辑数据库,我需要ti将其称为表输入 – kdjernigan 2013-03-08 03:18:32

+0

,我需要做到这一点最好尽可能让我可以为所有20个复选框做到这一点。我只是不确定最好的方式来实现这是正确/错误是在一个专栏而不是权限的“名称”... – kdjernigan 2013-03-08 03:19:32

+1

[here](http://stackoverflow.com/questions/9087038/ checkbox-checked-or-unchecked-boolean-php-mysql)是一个可以使用的例子。请注意,这并不完整,但如果您熟悉PHP开发,将很容易填写缺少的部分。 Thnks! – lemil77 2013-03-08 03:47:33

0

一个简单的解决问题的方法如下:

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

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

上面的内容它使用从db select中找到的状态,并使用状态来默认选中的框。

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

$ checkBoxVal =($ _GET [ 'checkBoxName'] 1:($ _POST [ 'checkBoxName'] 1:?0));

$ hiddenVal =($ _GET ['hiddenFieldName'] == 1 || $ _POST ['hiddenFieldName'] == 1?1:0);

如果($ checkBoxVal <> $ hiddenVal){

do updates here 

} // END IF

这样做是看看你的复选框被选中。如果是,那么$checkBoxVal将会是1

然后它将它通过隐藏输入的最后一个值进行比较。

如果他们的隐藏字段为0,并且勾选了您的框并提交表单,则值将不相同,然后您可以执行所需的更新。

对我来说这是改变任何东西在数据库中,如果初始值改变一个伟大的方式(也就是说,如果你不使用jQuery $.ajax或XHR请求动态地做到这一点。)

如果您需要了解更多信息关于这个或需要一个例子让我知道。

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

编辑:

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

SELECT名称从缺省权限

那么你可以使用PHP的对结果查询还挺喜欢这个

mysql_fetch_assoc功能状态($行= mysql_fetch_assoc($结果)) {

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

} // END WHILE LOOP

也许这将使它更清楚一点=)

+0

这是有道理的,但对于这个数据库查询呢?我有一个列下的权限名称和另一个下保存的真/假...它如何比较两个使用你的代码? – kdjernigan 2013-03-08 03:22:03

+0

我更新了我的答案,以反映如何在循环中使用数据库数据。也许你可以使用一个表,并为每个循环添加一个''与数据库中的每一行数据。 =) – Mic1780 2013-03-08 05:34:31