2009-04-13 4 views
0

Извините, что это довольно открытый вопрос!Как сохранить параметры для каждого пользователя - поиск мнения

Я хочу, чтобы пользователи на моем сайте могли изменять параметры html/css для шаблонов, которые они используют для своих профилей - немного похоже на myspace (действительно, очень жаль об использовании этого в качестве примера ...).

• Существует библиотека «темы», которые могут быть выбраны пользователем • Некоторые темы могут быть настроены некоторые из них могут не • Темы не обязательно имеют те же настраиваемые параметры

я хочу, чтобы хранить настраиваемые переменные для каждого пользователя, для каждой темы, которую они выбирают для настройки. Какой лучший формат для этого?

DB может иметь

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

Как я мог хранить такие вещи, как Б.Г. цвет = # 34ed55 Б.Г. изображение = bg.jpg шрифт = Comic Sans цвет = 554323 CSS = h1 { Font- размер: 1em; цвет: синий; } .customCss { padding: 10px; }

ответ

2

Если параметры имеют одинаковый тип (например, строковые значения), вы можете иметь отдельную таблицу параметров для сопоставления пар ключ/значение, которые представляют свойства темы пользователя.

user_theme 
    user_id 
    theme_id 

user_theme_parameters 
    user_id 
    key 
    value 

таблицы может нравится, как:

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

Если темы общих ключей, вы можете профакторизовать параметры ключей в другую таблицу и ссылаться на них здесь ID вместо дублирования ключевых строк (например, "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.

Приятная вещь в этом заключается в том, что как только он на месте, мне не нужно изменять мою БД.

Конечно, вам нужно решить, важно ли что-то важно для своего собственного поля в таблице или нет. Для меня простые пользовательские настройки, такие как те, которые контролируют внешний вид, не нуждаются в собственных полях.

Правильная сериализация и неэтеризация класса была самой трудоемкой частью.

 Смежные вопросы

  • Нет связанных вопросов^_^