![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Jozefina |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 1.10.2007 Где: Беларусь Репутация: нет Всего: нет |
подскажите, пожалуйста!
есть массив из БД
[2]1;8;24;37 [3]2;6 [4]2;5;29 [5]2;6;38 [6]3;17
__*8 ____*24 ______*37 ____*25 ______*36 *2 __*5 ____*29 __*6 ______*38 *3 __*17 ![]() Это сообщение отредактировал(а) Jozefina - 4.3.2009, 13:55 |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
О_О *фшоке* Для понимания, хотелось бы условия задачи услышать, поскольку я не представляю как вообще приведенные данные интерпретировать. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Jozefina |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 1.10.2007 Где: Беларусь Репутация: нет Всего: нет |
полученный элемент массива имеет до 4 уровня вложенности, который представлен в одной строке к примеру, "1;8;25;36" родитель 1 имеет дочерний элемент 8, у которого, в свою очередь, есть свой дочерний элемент 25, и т.д. как видно, уровни отделены точкой с запятой... эта запись в БД-логе может повторяться"1;8;25;36", поэтому необходимо вытянуть массив этих строк из БД и представить(записать) в виде нормального дерева (массива)... ![]() Это сообщение отредактировал(а) Jozefina - 4.3.2009, 13:54 |
|||
|
||||
Цербер |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 21.11.2007 Репутация: нет Всего: 1 |
Jozefina ну так выводи всё цикле и в итоге у тебя получится 4 цикла:
в первом вытаскиваешь из базы все данные по 1 значению элемента массива во втором проверяешь дочерние элементы и т.д. примерно будет выглядеть так:
это самый лёгкий способ=) так же можешь использовать один сложный запрос с помощью JOIN-а и псевдонимов для полей! Это сообщение отредактировал(а) Цербер - 4.3.2009, 10:35 |
|||
|
||||
Jozefina |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 1.10.2007 Где: Беларусь Репутация: нет Всего: нет |
что-то я не совсем поняла... у меня в БД в поле "location" одна запись такая "1;8;25;36", вторая такая "1;8;24;37"...которые я и вытаскиваю в массив... как я могу вытащить из базы все данные по 1 значению элемента массива???т.е. из записи "1;8;25;36" я получу "1", а потом "8", потом "25" и т.д. "SELECT id, location as title from database"-первый запрос, а второй: "SELECT id, location as title from database where parent_id='".$row['id']" ![]() я думала, необходимо использовать рекурсивную функцию ,это во-первых, а во-вторых использовать то, что я заранее знаю первых родителей("1","2","3") Это сообщение отредактировал(а) Jozefina - 4.3.2009, 12:59 |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
сходу код не напишу, но чтоб совсем не бросать без поддержки, предлагаю посмотреть тему "Помогите составить дерево" - там есть вариант построение многомерного массива по матрице смежности(рекурсивно и через ссылки). У тебя не совсем матрица смежности, но, я уверен, вполне можно тот код под твои условия адаптировать.
|
|||
|
||||
dmitryttt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 29.11.2007 Репутация: нет Всего: нет |
Может (если еще не поздно) перейти к другой схеме таблиц в БД ... Хранить в одной ячейке данные типа 1;2;3;4 .. крайне нежелательно...и думаю где-то вы можете упереться в большие проблемы
схема (id | id_parent | data) либо (id | data + id | id_parent) гораздно практичнее |
|||
|
||||
Jozefina |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 1.10.2007 Где: Беларусь Репутация: нет Всего: нет |
с радостью бы, но надо исходить из того, что есть... |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Ну, если предположить, что я вас действительно правильно понял - скрипт будет выглядеть примерно таким образом.
Просто было любопытно мозки размять. По идее, эти две функи поддерживают бесконечно возможное число родителей и вложений (насколько мощностей хватит ![]() P.S. aWnFormat - array woman format))) Это сообщение отредактировал(а) IZ@TOP - 4.3.2009, 14:42 -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Jozefina |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 1.10.2007 Где: Беларусь Репутация: нет Всего: нет |
IZ@TOP
спасибочки! |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
![]() Но все равно, советую учиться думать собственной головой. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |