![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
MOTORIST |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
Есть база с заголовками столбцов:str, pos0, pos1, pos2,....
И есть двумерный массив:
Количество членов массива разное ,т.е может быть как 3, 4, так и 10 .... членов (на втором уровне тоже). Как наиболее рационально засунуть значения этого массива в базу данный? Я немного не правильно выразился, нужно в db засунуть не массив, а значения массива, т.е. раскидать их по базе данных. P.S. Заранее спасибо за помощь. Это сообщение отредактировал(а) MOTORIST - 13.6.2009, 12:58 |
|||
|
||||
lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
MOTORIST, используй функции serialize и unserialize (http://php.su/functions/?serialize).
Это сообщение отредактировал(а) lukas - 13.6.2009, 09:17 -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
MOTORIST |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
Каким образом использовать эти функции...?
|
|||
|
||||
icewind |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 11.4.2009 Где: Ростов-на-Дону Репутация: 20 Всего: 20 |
-------------------- ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
MOTORIST, искать по этому массиву не надо? Какого объема этот массив (100 строк, 1000, больше)?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
MOTORIST |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
Я немного не правильно выразился, нужно в db засунуть не массив, а значения массива, т.е. раскидать их по базе данных.
Массив имеет два уровня вложенности. На первом уровне членов не более 1000, на втором не более 20ти. Это сообщение отредактировал(а) MOTORIST - 13.6.2009, 12:55 |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
MOTORIST, Проектировать базу надо начинать с потребностей поиска-вывода информации.
Какие данные нужны для каждой конкретной операции, которая будет использована? Если сразу спроектировать базу сложно, можно поставить временную затычку - типичный, достаточно универсальный, но не самый оптимальный во многих местах способ - таблица по 20 элементов в строке. Все неиспользуемые поля будут помечены NULL-ами. Потом, после написания интерфейсной части, список "потребностей" пользователя базы будет примерно определен, и базу можно передизайнить... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
MOTORIST |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
В таблице будет 20 столбцов pos1, pos2, pos3......
Но в массиве на втором уровне не всегда будет 20 значений. Если бы я знал точное число значений на втором уровне, проблемы вообще бы не было..
а надо
С названиями столбцов проблем нет
А вот со значениями что то не получается... |
||||||
|
|||||||
icewind |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 11.4.2009 Где: Ростов-на-Дону Репутация: 20 Всего: 20 |
Сделай две таблицы в базе для связи один ко многим. В одну складывай элементы первого уровня ( id и любую необходимую информацию ), во вторую элементы второго уровня. Тогда не имеет значения сколько вложенных элементов и поля придумывать не надо
-------------------- ![]() |
|||
|
||||
MOTORIST |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
Тут не нужно создавать 2 таблицы (с какой целью?), чтобы в первой хранить числа от 0 до 1000 ....
Что за бред? ![]() |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
бредом это вы занимаетесь товарищ MOTORIST, вам говорят, надо изначально структуру планировать, а не пытаться неизвестное запихнуть в непонятно что
для подобной задачи достаточно было бы сделать одну таблицу с полями id, id_parent, value и раскидать по принципу: одно значение - одна строчка в БД а если не предусматривается поиск по значениям, то вообще ничего выдумывать не надо - сериализовать массив и запихнуть в одно поле text. как уже подсказали |
|||
|
||||
MOTORIST |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
Мне нужно универсальное решение!!!!!
Поиск будет. Число элементов массива будет постоянно меняться. Что тут не понятного??? Если бы массив был статичный, то я бы тут не писал (тогда решение простое). Какая Вам структура базы нужна? Я уже все выше отписал, внимательно ознакомьтесь с задачей, а потом отписывайтесь. Одно значение одна строчка мне не подходит (это и ребенок сделает). ---------------------------------------------------------------------- pos1 | pos 2 | pos3 | ....... 1 | янв. | 1.03.09|........ 2 | фев. | 2.03.09|........ 3 | мар. | 4.03.09|........ ...... ....... ....... ___________________________________________ Это сообщение отредактировал(а) MOTORIST - 13.6.2009, 15:54 |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
а вы видать не можете из нескольких значений сделать одно? и как вы собираетесь производить поиск по неизвестному числу параметров? или может быть параметры известны, но некоторые могут быть не даны? |
|||
|
||||
MOTORIST |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
Мне нужно общее решение. Перебрать массив и засунуть в базу.
До поиска еще дело не дошло. |
|||
|
||||
MOTORIST |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.9.2008 Репутация: нет Всего: нет |
Решил методом отпративного.
Допустим у меня в таблице создано 20 поле pos. А в массиве второго уровня 3 или 5 или 10 или 20 записей. То есть сначала проверяю сколько есть, затем насильно забиваю недостающие пустыми. Затем засовываю в базу. Идею подсказал модератор на joomlaforum.ru под ником beliyadm. Спасибо и поклон ему за это. P.S. но мне кажется все таки есть более рациональное решение ![]() Это сообщение отредактировал(а) MOTORIST - 13.6.2009, 17:57 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |