0

这是我的表的样子:http: //jsfiddle.net/Draven/kGtx7/14/

每个标题单元格都是可点击的,以便能够按该字段和 ASC / DESC 进行排序。我希望能够将该排序选项存储在某处,以便记住它,但不确定最好的方法。

这是我在想的选项...

  1. 表中的制作sort_fieldsort_order字段users
  2. 制作一个新表,其中userid包含sort_fieldsort_order字段
  3. 或 Cookie,但我认为这是最糟糕的选择
4

5 回答 5

1

这留待解释,但每个案例都有自己的用途。

1)向表中添加两个字段users将使检索这些值的调用更容易,但它比解决问题的方法更丑陋。

..2) 建立关系数据库就是为了这样使用。我不确定性能,但我知道使用关系数据库的强大功能可以使您的数据库更易于导航和理解/操作。虽然您可能需要一些更复杂的调用(即加入等),但我相信这种权衡是值得的。

3) Cookies 是一个非常好的解决方案。它们可以在临时情况下使用,但如果您试图保存信息以备后用,cookie 可以很容易地被删除甚至不启用,此时您的网站可能会受到严重影响。

于 2012-08-22T00:29:15.977 回答
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 步:像你的真棒一样微笑

或者,您可以使用某种子选择查询。

注意:这是简单的逻辑,因此在此示例中不会记住它们。但是,如果您只想暂时记住它们,则可以将 get 放入会话变量中

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

于 2012-08-22T00:34:13.693 回答
0

实际上,使用 cookie 存储用户会话 ID,然后将会话数据保存在数据库、平面文件或 memcached 中是解决此问题的常见方法。这将有助于为此建立一个可重用的机制,例如各种注册表,您可以随意检索每个用户的值。当然,这仅在您拥有用户登录名时才有效。否则,存储该数据毫无意义,因为一旦用户结束会话(关闭浏览器窗口),用户身份就会丢失。大多数网络应用程序将使用 cookie 来识别您的身份。如果您删除该 cookie,它会忘记您并退出。

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

如果您使用 PHP,请查看Zend Session以获取想法。如果不是,这些概念仍然适用。

于 2012-08-22T00:27:41.377 回答
0

恐怕这取决于您的需求。我如何看待这个问题:

  1. 如果您必须在浏览器、PC 之间共享此设置,那很好,
    以防用户删除浏览器中的 cookie。但它不灵活 - 如果您需要添加另一个表,您还将添加两个额外的字段
  2. 在计算机、浏览器等之间共享的方式与 1 相同,但更灵活。您可以轻松添加具有表名的列。
  3. 如果此设置不是那么重要,并且在某些情况下您可以允许松散设置。此解决方案最简单,但可能对您不起作用
于 2012-08-22T00:27:56.567 回答
0

要将排序顺序保存到他们的配置文件中,请在表单中制作表格并将可排序的字段名称设为inputs。当他们单击其中一个字段名称(例如,按位置排序)时,让表单action运行一个 PHP 片段,以更新他们在数据库中的配置文件中的一个字段。

或者,如果能够使用 ajax,您可以简单地将数据库更新添加到 ajax 调用并跳过表单。

于 2012-08-22T00:30:19.627 回答