2009-04-13 9 views
0

残念ながら、これは非常に自由な質問です!ユーザーごとのパラメータを保存する方法 - 求められた意見

自分のサイトのユーザーが自分のプロファイルに使用するテンプレートのhtml/cssパラメータを変更できるようにしたいと思っています。これはmyspaceのようなものです。いくつかのテーマ•ユーザー が選択することができる「テーマ」のライブラリーは、テーマが必ずしも同じカスタマイズ可能なパラメータ

を持っていない•いくつかは、私が保存したくない することができ、カスタマイズすることができますがあります

カスタマイズするための各テーマごとに、各ユーザーのカスタマイズされた変数これに最適なフォーマットは何ですか?

DBは、私は= bg.jpg フォント=漫画のsans 色= 554323 CSS = H1 { font- BGの色=#34ed55 BGの画像のようなものを保存することができる方法

-------------------------------------- 
user id | theme id | custom parameters 
-------------------------------------- 

を持つことができますサイズ:1em; 色:青; } .customCss { パディング:10px; }

答えて

2

パラメータがすべて同じ型(文字列値など)の場合、ユーザーのテーマプロパティを表すキー/値のペアをマッピングするための個別のパラメータテーブルを持つことができます。

user_theme 
    user_id 
    theme_id 

user_theme_parameters 
    user_id 
    key 
    value 

テーブルは次のように好きなことができます:テーマは共通鍵を共有している場合、あなたは別のテーブルにパラメータキーを考慮し、代わりにキーの文字列を複製のIDでここにそれらを参照するかもしれない

user_id key  value 
1  bgcolor #000000 
1  bgimage bg.jpg 
2  font  Arial 

(のような"bgcolor")。

1

次の表を使用することができます。

custom_param: 
    param_id 
    theme_id 
    param_name 
user_params: 
    user_id 
    param_id 
    value 
user_settings: 
    user_id 
    ...  -- whatever other user settings you store 
    theme_id -- for current theme 

あなたがこの方法で削除をカスケード接続からいくつかの良い振る舞いを取得します。パラメータが存在しなくなった場合は、custom_paramから削除するだけで、ユーザーの設定から削除されます。テーマ全体を削除する場合は、custom_paramにカスケードして関連するすべてのパラメータを削除してから関連するすべてのuser_paramsを削除します。

あなたのuser_settingsテーブルを設定しておくと、テーマが削除されたときにtheme_idがデフォルトのテーマに設定され、その行が削除されないようにしてください!

0

カスタムパラメータを含むクラスを作成し、そのクラスのシリアル化バージョンをテーブルのCustomParametersフィールドに格納することができます。私の場合は、既存のUsersクラスを拡張して、UserCustomParametersクラスの値を取得および設定しました。

いい点は、いったんそれがいったん設定されると、自分のDBを変更する必要がないということです。

もちろん、テーブルに独自のフィールドを必要とするかどうかを決定する必要があります。私にとって、ルック・アンド・フィールをコントロールするもののような単純なユーザー設定は、自分のフィールドを必要としません。

クラスを適切にシリアル化してシリアル化を解除するのが最も時間のかかる作業でした。

関連する問題