Как бы я сохранил настройки пользователя? (PHP)?
Я занимаюсь разработкой сайта типа рынка акций. Мне было интересно, как я мог бы позволить пользователям сохранять котировки компаний в список наблюдения со всеми обновленными данными, похожими на многие другие, доступные там.
Буду признателен за любую помощь по этому вопросу.
1 ответ
Для всего, что всегда установлено для каждого пользователя, вы должны сохранять это в 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 INTO User_Settings (user_id, name, type, value_str) VALUES (1, 'lang', 0, 'fr')
ON DUPLICATE KEY UPDATE value_str='fr';
Кроме того, как говорит большинство других людей, сериализация и сохранение предпочтений не особенно хорошая идея, потому что:
Вы не можете получить одно значение с помощью запроса, вы должны извлечь всю сериализованную строку, десериализовать ее и отбросить ненужные данные.
Это легко испорчено, и трудно восстановить.
В добыче сложно написать необработанный запрос, т. Е. Глобально исправить определенную настройку.
Вы храните то, что по сути является табличными данными, в одном поле таблицы.
Это должно сделать работу. Если это так, пожалуйста, не стесняйтесь принять ответ.