| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Обработка данных после выборки. |
| Автор: Serious2008 5.2.2012, 14:26 | ||
| Мне посоветовали решить одну проблему вот таким вот образом. 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); я не знаю.
|
| Автор: $дмитрий 5.2.2012, 14:57 | ||
Пример работы функции funRecursive
|
| Автор: Serious2008 5.2.2012, 15:24 | ||||
| $дмитрий, После подстановки твоего. Вот что получилось.
Причём это именно на твоём обработчике. Примерное содержимое массива до обработки, Их 55 эллементов там всего.
А это всё нужно делаться под учёт того что категорий 500-1000 может быть. |
| Автор: $дмитрий 5.2.2012, 15:39 | ||
Не правильный массив, ключ должен быть равен ID раздела
|
| Автор: Serious2008 5.2.2012, 17:01 | ||||
| $дмитрий, А можно ли как-нибудь модифицировать. Чтобы отображались только конечные дети, без родителей. Т.е. например выбрал он вот такое.
а оставалось только
Всё элегантно решил. Через сбор вначале всех ID родителей. А потом проверку того, есть в этом массиве элемент или нет. |
| Автор: Serious2008 6.2.2012, 12:06 | ||
Появилась ещё одна проблема. На этой выборке. Поскольку я выбираю все записи содержащие определённое слово. И они являются детьми кого-то. Не всегда у родителей есть тоже слово что и у детей. Поэтому нужно как-то родителей добираться. Я модифицировал рекурсию вот таким образом
Но мне это не помогло выводиться точно тоже самое. Что и было. Просто дети без родителей, если у родителей нет нужных ключевых слов. |
| Автор: $дмитрий 6.2.2012, 22:49 | ||||
| funRecursive не трогай, она предназначена только для получения полного пути 1. Сделай дополнительный запрос с LIKE содержащию нужную подстроку. Сформируй массив $arShowSection, где в качестве ключей будет ID раздела Получиться примерно так
2. В цикле $arList проверяешь есть ли $arShowSection[КЛЮЧ_ТЕКУЩЕГО_РАЗДЕЛА] Примерный код
|