2012-02-13 46 views
0

我見過幾個網站,允許用戶安排工具欄(更改鏈接的順序以及添加或刪除)。允許用戶修改鏈接工具欄的最佳方式(更改順序,添加,刪除)

這樣做的最好方法是什麼?

我可能會做到以下幾點:。

的用戶表創建一個新的數字數據庫字段「listorder」,其中的鏈接的順序保存在

每個鏈接代表一個數字。像這樣的東西將是在用於鏈接一個新表: 第一連桿 - 1級 第二鏈路 - 2 第三連桿 - 3等

默認「listorder」將如下所示:123 自定義用戶配置:231

顯示html: 將231分開放入數組,並從db(新鏈接表)中爲每個鏈接查找適當的內容。

這看起來好像會因爲查詢而導致網站速度下降。

有沒有人知道更好的方法來做這樣的事情?

Cookie不起作用。訂單必須是永久的,並保存在用戶的帳戶上。

回答

1

如果你想要的值在整個餅乾clearage堅持..

店在表格中的序列化的小區的ID。使用ajax將數據保存在ul元素的變化上。使用JqueryUI實現拖放n個工具欄項目。使用PHP序列化並保存訂單提交回表中。

更新:我不會用系列化具體而言,簡單的分號分隔就夠了..

IE: $link_order = '1;3;2;6;10;13';

使用PHP <?php explode(';',$link_order); ?>

如果你只需要它作爲一個「臨時「的事情.. 使用cookie和jQuery的onchange。與上面相同的方法只是不使用PHP /分區

如果你需要兩個示例代碼,讓我知道。

+0

選項#1:服務器/客戶端方面,多一點工作..但不依賴於一組cookie。選項#2:依賴於cookie,但是將處理時間/負載從服務器上取下並放在用戶的背面..確保將這些代碼放在文檔的頁腳處 – gorelative 2012-02-13 17:48:56

+0

還要注意,您可以使用memcached或其他形式的內存緩存來稍微減輕服務器的便鞋r甚至可以同時存儲cookie和db ...在cookie值和db值之間執行快速時間戳檢查。如果時間戳不匹配,請重新保存cookie。 – gorelative 2012-02-13 17:52:03

2

在HTML/CSS中設置默認順序會更好。

然後,爲了自定義,您將使用javascript來檢查客戶端計算機上的Cookie,並根據樣式表或訂購首選項動態重新排列訂單。恕我直言,這不是有意義的添加數據庫開銷來完成。 PHP不一定是這項工作的正確工具。

+1

沒有編輯我的答案,我想補充一點,如果你有大量的用戶配置設置,並且你已經將它們存儲在數據庫中,那麼繼續前進並添加一個是合理的,但作爲一次性的解決方案, d保持顯示邏輯通常屬於它:在HTML和CSS – rdlowrey 2012-02-13 18:00:33

-1

您需要在用戶的數據庫中分配一個字段「orderField」。所以每個人都可以改變自己的方式。如果你想避免每個用戶擁有9000個字段。我建議把ID的分隔標籤(1-2-6-4-3),然後你採取未列出的設置它們(如果你稍後添加一些其他字段。

+0

最好的做法是不要使用破折號或斜線,這樣可以消除負整數的可能性並可能導致問題。最好使用逗號或分號。 – gorelative 2012-02-13 17:56:57

+0

真實,好點,但由於他只使用正整數,它應該沒關係(負場ID?) – 2012-02-13 18:41:40