Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как хранить 32 поля [2]
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
pantela, как это обычно делается через еще 1 таблицу соотношением многие-к-многим
kuller
Отправлено: 26 Апреля, 2016 - 23:16:23
Частый посетитель
Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009
Помог: 2 раз(а)
интересные ответы.... тоже задался таким же вопросом.... чем же так плохо создать 32 поля? многих в cms как dle, joomla, wordpress используют более 32х полей в одной таблице...
з.ы. после прочтения темы сложилось вообще такое мнение что советуют не когда не создавать много полей делаем 2 поля id (AUTO_INCREMENT) и text
в поле text сохраняем строку, а при выборке делаем массив из text )))
1. Думаю как теперь все поля в один массив собрать, чтобы сохранялся бы также т.к. сейчас они у меня виде одного поля - наверное, через forech надо все поля пропустить (количество знаю $count_comfort_data) и так собрать...
2. Те поля которые не выделены вообще не попадают в POST... - наверное, (isset($data['pool']))?'1':'0' надо будет предварительно сделать
Очень прошу строго не судите, первый раз такое делаю, вот и опыта набираю... лучше подправьте если что не так ))
Pinkya_rabbit
Отправлено: 27 Апреля, 2016 - 03:58:28
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Апр. 2016 Откуда: Minsk перебираюсь в Питер
Помог: 1 раз(а)
я конечно ещё далёк до мастерского программиста, но когда только учился работать с базами данных была там хорошая фраза "создавайте сущности, но не плодите сущности". Нет смысла записывать пол, мобильный телефон и адрес работника в разные поля, если они всё равно не изменяются и принадлежат конкретному работнику. Точно то же самое про имя фамилию отчество и дату рождения. Отдельно стоит лишь отделять изменяемые параметры. ну я так глазами по теме пробежал, как понял вопрос именно в этом.
kuller
Отправлено: 27 Апреля, 2016 - 04:35:53
Частый посетитель
Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009
Помог: 2 раз(а)
pantela пишет:
В таблице в поле text сохраняю
{
"comfort_1":"1",
"comfort_2":"1",
"comfort_3":"0",
"comfort_4":"1",
"comfort_5":"0",
"comfort_6":"0",
"comfort_7":"1",
"comfort_8":"1",
"comfort_9":"0",
"comfort_10":"1",
"comfort_11":"0",
"comfort_12":"0",
"comfort_13":"1",
"comfort_14":"1",
"comfort_15":"0",
"comfort_16":"1",
"comfort_17":"0",
"comfort_18":"0",
"comfort_19":"1",
"comfort_20":"1",
"comfort_21":"0",
"comfort_22":"1",
"comfort_23":"0",
"comfort_24":"0",
"comfort_25":"1",
"comfort_26":"1",
"comfort_27":"0",
"comfort_28":"1",
"comfort_29":"0",
"comfort_30":"0",
"comfort_31":"1",
"comfort_32":"0"
}
тогда уже проще вообще это в файле хранить и таскать от туда дынные. Меньше нагрузки на сервер MySQL.
Мелкий
Отправлено: 27 Апреля, 2016 - 09:25:48
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Видимо, раз уж тема доросла до второй странице, пора и мне поучаствовать.
Ответ концептуальный: да как угодно храните. Главное, чтобы код чтения и сохранения в базу был где-то в одном месте и вы могли в будущем легко изменить принятое сейчас решение.
Про упаковку в int вспомнили, а про тип set - почему-то нет. А зря, та же самая битовая маска 64-битная, нативно именованная и с вполне рабочим поиском по индексам.
kuller пишет:
делаем 2 поля id (AUTO_INCREMENT) и text
в поле text сохраняем строку, а при выборке делаем массив из text )))
К слову, такие потуги вполне встречаются, особенно у кровавого Java. Писать в базу XML и всё. Любимая "не совсем шутка" ДБА при объяснении, зачем нужно продумывать схему базы.
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
pantela пишет:
мне 1000 файлов ведь не держать
зачем? В JSON и XML можно сколь угодно вложенностей хранить.
Pinkya_rabbit пишет:
я конечно ещё далёк до мастерского программиста, но когда только учился работать с базами данных была там хорошая фраза "создавайте сущности, но не плодите сущности". Нет смысла записывать пол, мобильный телефон и адрес работника в разные поля, если они всё равно не изменяются и принадлежат конкретному работнику. Точно то же самое про имя фамилию отчество и дату рождения. Отдельно стоит лишь отделять изменяемые параметры. ну я так глазами по теме пробежал, как понял вопрос именно в этом.
как раз таки могу вас уверить что телефоны и адреса очень даже часто изменяемы. Вот как раз таки ФИО это одна сущность, телефон - вторая, адрес - третья. А ещё один телефон может принадлежать не одному человеку, а по одному адресу могут проживать целая семья.
В общем Мелкий прав.
Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010
Помог: 1 раз(а)
Может merge сделать массивам и через один foreach их выводить и внутри проверять вывод
pantela
Отправлено: 31 Мая, 2016 - 13:28:26
Частый посетитель
Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010
Помог: 1 раз(а)
esterio
Отправлено: 02 Июня, 2016 - 17:49:36
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Проще всего сохранять все ключи массива. Вам же в POST прилетают помеченые. Для этого опдойдет либо merge (Добавление)
А если и правда 32 поля и не планируеться больше то лично я бы использовал биты
pantela
Отправлено: 08 Июня, 2016 - 18:01:19
Частый посетитель
Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010
Помог: 1 раз(а)
В итоге решил сделать как вы советуете через 3 поля.
- Объекты
- Параметров
- Связка
Теперь встал вопрос... У меня для одного объекта будет большая часть параметров, что бы сократить количество записей в таблице связок, может наоборот мне при выводе делать запрос виде тех параметров которые не найдены в связке...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.