2013-05-07 76 views
-6

我正在開發一個股票市場類型的網站。我想知道如何讓用戶將公司報價保存到關注列表中,並將所有更新的數據與可用的其他許多數據類似。我將如何去保存用戶偏好? (PHP)?

希望對此事有任何幫助。 謝謝

+7

這就是數據庫的用途。 – Barmar 2013-05-07 08:41:51

+0

你有什麼網頁開發經驗? Nonthe ...簡單的答案:在數據庫(如MySQL);-)) – thedom 2013-05-07 08:42:10

+0

只需使用數據庫並保存所有設置。更喜歡MongoDB – 2013-05-07 08:42:26

回答

3

對於每個用戶始終設置的任何內容,您應該按照常規標準化將其保留在Users表中。作爲可選配置我傾向於像下面的表結構:

TABLE Users: 
    id INT AI 
    name VARCHAR 
    ... 

TABLE User_Settings 
    user_id INT PK,FK 
    name VARCHAR PK 
    type BOOL 
    value_int INT NULL 
    value_str VARCHAR NULL 

User_Settings.type指定的整數或字符串字段是否應該被引用。

即:

INSERT INTO Users (id, name) VALUES (1, 'Sammitch'); 
INSERT INTO User_Settings (user_id, name, type, value_int) VALUES (1, 'level', 1, 75); 
INSERT INTO User_Settings (user_id, name, type, value_str) VALUES (1, 'lang', 0, 'en'); 

而對於INSERT/UPDATE問題:

INSERT INTO User_Settings (user_id, name, type, value_str) VALUES (1, 'lang', 0, 'fr') 
    ON DUPLICATE KEY UPDATE value_str='fr'; 

此外,其他大多數人都這麼說,序列化和存儲的偏好是不是一個特別好的主意,因爲:

  1. 您不能使用查詢檢索單個值,必須檢索整個serializ編輯 字符串,將其反序列化,並丟棄不必要的數據。

  2. 這很容易腐敗,很難恢復。

  3. 這是一個痛苦的戰利品編寫原始查詢,即:全局修復某些設置。

  4. 您正在存儲單個表格字段內的基本表格數據。

這應該可以完成這項工作。如果是這樣,請隨時接受答案。