2012-08-22 45 views
0

这里是我的表是什么样子:http://jsfiddle.net/Draven/kGtx7/14/在网站上存储列排序顺序的最佳方式是什么?

每个标题单元格是可点击能够通过该字段,并通过ASC/DESC排序。 我希望能够在某个地方存储该排序选项,以便记住它,但不确定最佳方式。

下面是我想的选项...

  1. 制作sort_fieldsort_order领域的users
  2. 制作具有与sort_field沿其userid一个新表,sort_order领域
  3. 或饼干,但我认为这是最糟糕的选择
+1

你想保存多久?您是将它保存到用户的个人资料中,还是保存在用户的个人资料中? – DACrosby

+0

@ DouglasA.Crosby我想将它保存到他们的个人资料,这就是为什么我认为饼干不是要走的路。我试图找出“标准”方式 – Draven

+0

Cookie用于跟踪会话。阅读关于cookie的信息。您可以在URL中使用该项或哈希值。无论如何你需要跟踪用户会话。如果你有一个登录类,你可能已经只是没有意识到它。 –

回答

1

我不认为我们是在清楚你要什么,但我想你是想这样的事情:

步骤1:运行一个查询比将填充值排序为2个会话变量。 第2步:做这样的代码。

$sortHeadClicked = $_SESSION['headClicked'] 
$sortReturnDirection = $_SESSION['returnDirection'] 

//TODO: validate data before query 

if ($result = $mysqli->query("SELECT * FROM table ORDER BY $sortHeadClicked $sortReturnDirection)) 
{ 
    //TODO: Get results 
} 

第3步:笑容像你真棒

另外,还可以使用某种子选择查询。

注:这是简单的逻辑,所以他们不会记住这个例子。但是,如果您只希望暂时记住这些变量,则可以将变量放入会话变量中。

但是,如果您希望永久记住这些内容,则需要在用户表中使用两列,以便将它们放入会话或使用子查询

+0

我很抱歉我的问题不明确(教导我自己的PHP/SQL和我的术语是可怕的)。我希望能够存储用户在离开页面时的排序选项,然后返回,仍然会按照他们离开页面的方式进行排序。试图找出最好的(标准)方法。 – Draven

+0

如果我创建一个存储排序选项的第二个表,我将如何使用子选择查询? – Draven

+0

@Draven,这就是为什么这不是一个好的解决方案。就像我说的,使用Zend Session之类的东西或者自己写。如果您正在编写除最基本演示以外的任何内容,则可能会存储多个用户首选项值。您需要一种通用的方式来存储和检索这些值。 –

0

Actua lly,使用cookie存储用户会话ID,然后将会话数据保存在数据库,平面文件或memcached中是解决此问题的常见方法。这将有助于为此设置一种可重用机制,如类似注册表,您可以随意检索每个用户的值。这只适用于你有用户登录的课程。否则,存储该数据没有意义,因为一旦用户身份结束会话(关闭浏览器窗口),用户身份将会丢失。大多数网络应用程序将使用cookie来识别你。如果您删除该cookie,它会忘记您并且您已注销。

如果您想要为每个用户添加另一个“首选项”,则需要修改基础表,您的第一个解决方案将受到影响。

如果您使用PHP,请参阅Zend Session。如果不是这些概念仍然适用。

0

恐怕这取决于您的需求。我怎么看这个问题:

  1. 好,如果你必须共享浏览器,PC之间的这种设置,在
    情况下,如果用户在浏览器中删除Cookie。但它不灵活 - 如果您需要添加其他表格,您还需要添加两个额外的 字段
  2. 与计算机,浏览器等之间的共享方式相同,但它更灵活。你可以很容易地添加一个带有表名的列。
  3. 如果此设置不那么重要,并且在某些情况下可能允许松开设置。此解决方案最简单,但它可能不适用于您
1

这是留给解释,但每个案件都有其自己的用途。

1)添加两个字段到你的users表将使得调用更容易检索这些值,但它是关系数据库建成使用)的问题比..

..2一个更恶心的方法因此。我无法确定性能,但我知道使用关系数据库的强大功能可以让您的数据库更易于导航和理解/操作。虽然你可能需要一些更复杂的调用(即联接和什么),但我相信这种权衡是值得的。

和3)饼干是一个非常meh解决方案。它们可以用于临时病例,但如果您稍后尝试保存信息,则Cookie可能很容易被删除或甚至无法启用,此时您的网站可能会遭受严重损失。

0

要将排序顺序保存到其配置文件中,请将表格放置在表单中,并将可排序的字段名称设置为input s。当他们点击某个字段名称(例如按位置排序)时,请让表单的action运行一个PHP剪辑,以更新数据库配置文件中的字段。或者,如果能够使用ajax,则可以简单地将数据库更新添加到ajax调用中,然后跳过该表单。

相关问题