下面是我的表的样子:http://jsfiddle.net/Draven/kGtx7/14/
每个标题单元格都可以单击,以便能够按该字段和ASC/DESC进行排序。我希望能够将排序选项存储在某个地方,这样它就会被记住,但不确定最好的方法。
以下是我在想的选项。。。
- 在
users
表中生成sort_field
和sort_order
字段 - 制作一个具有
userid
、sort_field
和sort_order
字段的新表 - 或者饼干,但我认为这是最糟糕的选择
我认为我们不清楚你想要什么,但我认为你想要这样的东西:
步骤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
}
第三步:像你的一样微笑
或者,您可以使用某种子选择查询。
注意:这是一个简单化的逻辑,所以在这个例子中它们不会被记住。然而,如果你只想暂时记住它们,你可以将get放入会话变量中
但是,如果您想永久记住这些,您需要在用户表中有两列,您可以将它们放入会话中,也可以使用子选择查询
这由解释决定,但每种情况都有自己的用途。
1) 在users
表中添加两个字段将使检索这些值的调用更容易,但这是一种比..更难解决的方法。。
2) 建立关系数据库就是为了这样使用。我不确定性能,但我知道使用关系数据库的功能可以使数据库更容易导航和理解/操作。虽然你可能需要一些更复杂的调用(即加入之类的),但我相信这种权衡是值得的
和3)饼干是一个非常好的解决方案。它们可以在临时情况下使用,但如果你试图保存信息以备日后使用,cookie很容易被删除甚至不启用,此时你的网站可能会受到严重影响。
实际上,使用cookie来存储用户会话id,然后将会话数据保存在数据库、平面文件或memcached中是解决此问题的常见方法。这将有助于为此设置一个可重复使用的机制,比如排序注册表,您可以随意检索每个用户的值。当然,这只适用于有用户登录的情况。否则,存储这些数据就没有意义,因为一旦用户结束会话(关闭浏览器窗口),他们的身份就会丢失。大多数网络应用程序都会使用cookie来识别您的身份。如果你删除了那个cookie,它就会忘记你,你就会注销。
如果您想添加另一个每个用户的"首选项",因为您需要修改底层表,那么您的第一个解决方案将受到影响。
如果您正在使用PHP,请查看ZendSession以获取想法。如果没有,这些概念仍然适用。
要将排序顺序保存到他们的配置文件中,请将表放入表单中,并使可排序的字段名为input
s。当他们单击其中一个字段名(例如按位置排序)时,让表单的action
运行PHP snip,更新数据库中他们配置文件中的字段。
或者,如果能够使用ajax,您可以简单地将数据库更新添加到ajax调用中,然后跳过表单。
恐怕这取决于您的需求。我如何看待这个问题:
- 如果您必须在
中的浏览器、PC之间共享此设置,那就太好了如果用户在浏览器中删除cookie。但它并不灵活——如果您将需要添加另一个表,还将添加另外两个表字段 - 就计算机、浏览器等之间的共享方式而言,与1相同,但它更灵活。您可以很容易地添加具有表名的列
- 如果此设置不那么重要,并且在某些情况下您可能允许放松设置。这个解决方案最简单,但可能不适合您