Как лучше хранить нескольк десятков записей в бд (опять не знаю как тему назвать)

Spear

почемучка
Как лучше хранить нескольк десятков записей в бд (опять не знаю как тему назвать)

Здравствуйте.
Сразу скажу - не нзаю как нужно было назвать темУ, чтобы Вы поняли что я имею ввиду.

У меня такая проблемка:
мне нужно хранить в БД, в таблице с информацией о пользователях, не малое кол-во настроек самих пользователей.
Например это будет 20 настроек.
Вот не знаю как мне это в бд засунуть.. то есть не знаю как это сделать лучше.
Конечно создавать 20 дополнительных полей - не дело.
Может быть хранить все в одном поле TEXT, перечисляя параметры через какой-то знак, который явно не будет использован в настройках.
На всякий случай уточню - все настройки будут вида 1\0. (то есть никаких подписей и тому подобных вещей не будет. Только да\нет, так-сяк. То есть - только числовые значения для каждого пункта).

Например в настройках:
Выберите, сколько бла-бла. Варианты: 1,2,3.
Выберите сколько тра-ля-ля. Варианты: 25,50, 150.
Показывать ещё чего-нить. Варианты: 1.0.

Юзер выбирает во всех пунктах первые значения.
В бд записывается:
1:1<NF>2:25<NF>3:1<NF>

NF = next field.

Далее, при необходимости эти параметры движком ищутся так:

PHP:
$preferences = explode("<NF>", $db_query['prefs']).
$c = count($preferences);
$z = 0;
While ($z <= $c)
{
$ex = explode(":", $preferences[$z]);

if($ex[0] == 1) {$option1 = $ex[1];}
elseif($ex[0] == 1) {$option2 = $ex[1];}
elseif($ex[0] == 1) {$option3 = $ex[1];}


$z++;
}
Что-то вроде этого.
ПОйдет такое решение? Или может быть существует более удобный способ?
 

kruglov

Новичок
Отдельные поля имеют смысл, если по ним выборка осуществляется. Выбрать всех юзеров, у кого 5-ый пункт - 1.
Потом это может быть удобно, если планируете добавлять-убавлять поля. Создать поле удобнее, чем перелопачивать все "блобы" на предмет добавления в нужное место.

Если это несущественно, и настройки для юзера выбираются сразу все, то можно вообще сериализовать ([m]serialize[/m]) массив настроек и писать в текстовое поле базы.
 

Spear

почемучка
kruglov
никакой выборки рпоисходить не будет - это лишь персональные настройки пользователей.

Про serialize - не совсем понял что он делает :(
 

baev

‹°°¬•
Команда форума
Spear, дали ж ссылку на ман -- чего там непонятно?
 

amorfis

я стараюсь
PHP:
if($ex[0] == 1) {$option1 = $ex[1];} 
elseif($ex[0] == 1) {$option2 = $ex[1];} 
elseif($ex[0] == 1) {$option3 = $ex[1];}
А почему у тебя везде одно условие?
 

Ринат

Новичок
чем не подходит вараинт создать таблицу настроек пользователя?
 

Ринат

Новичок
вопрос стоит в том, что товарищ с этими данными делать собирается
и что говорит против создания таблицы
 

kruglov

Новичок
А что говорит в ее пользу?
Тогда уж предложите сделать таблицу типа
user_id | parameter | value
 

Ринат

Новичок
было предложено

-~{}~ 22.07.05 15:03:

по-любому данные хранить в БД. так будет логичнее, чем потом собирать и разбирать строку
 
Сверху