![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Serious2008 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Мне посоветовали решить одну проблему вот таким вот образом.
2. Пробегаемся в цикле по полученному результату, сформировав массив вида $arList[$arResult[$i]['ID']] = $arResult[$i]; т.е. в качестве ключей будут выступать ID, а значение это все остальные поля раздела 3. Запускаем еще один цикл по $arList, примерно такого содержания foreach($arList as $sKey => $sName) { $arList[$sKey]['FULL_PATH'] = funRecursive($sKey); } В этом цикле мы для каждого раздела присваиваем ключ FULL_PATH, где будет хранится примерно такой путь "Обрезная доска >> Доски (доска) >> Куплю." Функция funRecursive, которая рекурсивно ищет родителей и возвращает эту самую строку "Обрезная доска >> Доски (доска) >> Куплю." Вот до чего я дошёл, а вот что делать с функцией funRecursive($sKey); я не знаю.
Это сообщение отредактировал(а) Serious2008 - 5.2.2012, 14:39 |
|||
|
||||
| $дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 3 Всего: 45 |
Пример работы функции funRecursive
|
|||
|
||||
| Serious2008 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
$дмитрий,
После подстановки твоего. Вот что получилось.
Причём это именно на твоём обработчике. Примерное содержимое массива до обработки, Их 55 эллементов там всего.
А это всё нужно делаться под учёт того что категорий 500-1000 может быть. Это сообщение отредактировал(а) Serious2008 - 5.2.2012, 15:38 |
||||
|
|||||
| $дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 3 Всего: 45 |
Не правильный массив, ключ должен быть равен ID раздела
|
|||
|
||||
| Serious2008 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
$дмитрий,
А можно ли как-нибудь модифицировать. Чтобы отображались только конечные дети, без родителей. Т.е. например выбрал он вот такое.
а оставалось только
Всё элегантно решил. Через сбор вначале всех ID родителей. А потом проверку того, есть в этом массиве элемент или нет. Это сообщение отредактировал(а) Serious2008 - 5.2.2012, 18:10 |
||||
|
|||||
| Serious2008 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Появилась ещё одна проблема. На этой выборке. Поскольку я выбираю все записи содержащие определённое слово. И они являются детьми кого-то. Не всегда у родителей есть тоже слово что и у детей. Поэтому нужно как-то родителей добираться. Я модифицировал рекурсию вот таким образом
Но мне это не помогло выводиться точно тоже самое. Что и было. Просто дети без родителей, если у родителей нет нужных ключевых слов. |
|||
|
||||
| $дмитрий |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 3 Всего: 45 |
funRecursive не трогай, она предназначена только для получения полного пути
1. Сделай дополнительный запрос с LIKE содержащию нужную подстроку. Сформируй массив $arShowSection, где в качестве ключей будет ID раздела Получиться примерно так
2. В цикле $arList проверяешь есть ли $arShowSection[КЛЮЧ_ТЕКУЩЕГО_РАЗДЕЛА] Примерный код
|
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |