簡體   English   中英

在網站上存儲列排序順序的最佳方法是什么?

[英]What is the best way to store a column sort order on website?

這是我的表格: http//jsfiddle.net/Draven/kGtx7/14/

每個標題單元格都是可單擊的,以便能夠按該字段和ASC / DESC進行排序。 我希望能夠在某個地方存儲該排序選項,因此它會被記住,但我不確定最好的方法。

這是我在想的選擇......

  1. users表中創建sort_fieldsort_order字段
  2. 創建一個具有userid以及sort_fieldsort_order字段的新表
  3. 或者Cookies,但我認為這是最糟糕的選擇

這取決於解釋,但每個案例都有自己的用途。

1)向users表中添加兩個字段將使調用更容易檢索這些值,但這是一個更加丑陋的方法來解決問題。

..2)構建關系數據庫以便這樣使用。 我不確定性能,但我知道使用關系數據庫的強大功能可以使您的數據庫更容易導航和理解/操作。 雖然你可能需要一些更復雜的調用(即連接和諸如此類的東西),但我相信這種權衡是值得的。

3)Cookies是一種非常好的解決方案。 它們可以在臨時情況下使用,但如果您要稍后保存信息,則可以輕松刪除或甚至不啟用Cookie,此時您的網站可能會遭受巨大損失。

我認為我們不清楚你想要什么,但我認為你想要這樣的東西:

步驟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步:像你真棒一樣微笑

或者,您可以使用某種子選擇查詢。

注意:這是簡單的邏輯,因此這個例子不會記住它們。 但是,如果您只想暫時記住它們,則可以將gets放入會話變量中

但是,如果您希望永久記住這些內容,則需要在用戶表中使用兩列,您可以將這些列放入會話或使用子選擇查詢

實際上,使用cookie來存儲用戶會話ID,然后將會話數據保存在數據庫,平面文件或memcached中是解決此問題的常用方法。 這將有助於為此設置一個可重用的機制,如各種注冊表,您可以隨意檢索每個用戶的值。 這僅適用於您當然有用戶登錄的情況。 否則,存儲該數據沒有意義,因為用戶身份一旦結束會話就會丟失(關閉瀏覽器窗口)。 大多數網絡應用都會使用Cookie來識別您的身份。 如果您刪除該cookie,它會忘記您並且您已注銷。

如果您想要為每個用戶添加另一個“首選項”,那么您的第一個解決方案將會受到影響,因為您需要修改基礎表。

如果您使用的是PHP,請查看Zend Session的想法。 如果不是,這些概念仍然適用。

我擔心這取決於你的需求。 我怎么看這個問題:

  1. 如果您必須在瀏覽器,PC之間共享此設置,那就太好了
    如果用戶在瀏覽器中刪除cookie。 但它不靈活 - 如果您需要添加另一個表,您還將添加兩個額外的字段
  2. 與計算機,瀏覽器等之間的共享方式相同,但它更靈活。 您可以輕松添加包含表名的列。
  3. 如果此設置不是那么重要,您可能會在某些情況下允許松動設置。 此解決方案最簡單,但可能對您無效

要將排序順序保存到其配置文件,請在表單內部創建表,並input可排序的字段名稱。 當他們單擊其中一個字段名稱(例如按位置排序)時,讓表單的action運行一個PHP片段,用於更新數據庫中其配置文件中的字段。

或者,如果能夠使用ajax,您只需將數據庫更新添加到ajax調用並跳過表單即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM