Ищу программиста и(ли) дизайнера для создания пакета скриптов и дизайна онлайн-агенства перевода текстов с разных языков на разные. Этот сайт должен стать местом встречи переводчиков и клиентов при полной анонимности этих двух ...
"Функция-мутосилка" массива
Есть примерно такая таблица.
- id : autoincrement :
- parent : int : одно из значений поля id или 0
- name : varchar : исключительно для удобства
- flag : int : некоторый флаг для выборки
Нужно из всех(!) записей, который удовлетворяют условию
выборки (по флагу) и сортировке (по id, например) построить дерево по данной таблице.
Обычная ситуация без всяких проверок.
Мы выбираем последовательно все элементы, например у кого parent = 0,
потом для каждого из них у кого parent уже равно ... ну, Вы поняли, как всегда делается.
Загвоздочка в следующем для моей задачи.
Если у меня один элемент потомок (*) будет находиться внутри элемента,
который не прошел проверку по флагу, но который (*) прошел бы проверку в выборке,
если бы рассматривался, то его я не увижу в дереве. А обязательно должен видеть.
Но видеть уже должен как элемент с уровнем вложенности равным 0, ну и дальше для
него должны быть выбраны все "элементы-дети"
Пример.
id | parent | name | flag
1 0 A 1
2 1 B 1
3 2 C 2
4 3 D 1
5 4 E 1
Примерный запрос: select ... where flag = 1
При постройках мы не получим элемент "D" и "E" в дереве,
так как не получим элемент "C" с флагом равным 2.
Так вот при такой ситуации я должен всеже получить:
0 => A
-> B
1 => D
-> E
Единственное решение, которое нашел я - выбрать все записи
одним запросом и крутить полученный массив.
У меня много работы и без этого, поэтому нужна помощь.
Требования.
- К полям id,parent,name,flag при сортировках и перестановках элементов
добавляем еще одно поле innerLevel, которое считаем самостоятельно.
В примере, если бы мы не придирались к флагу, для D это значение было бы 3,
а для E - 4, считая от нуля. С придираниями же получим, что для D - 0, E - 1.
- Подробное комментирование своего кода.
Оплачиваемые пожелания.
- Если у Вас есть убедительные доводы, что Ваш метод очень хороший
и практически единственный, +2 пойнта к 5-и изначальным.
Это я увижу по коду ;)
Для великолепного комментария.
- Сделать все действительно красиво, а писать я умею :)
Как буду проверять.
- Закачивайте скрипт на свой хост.
print_r (исходный массив)
работа функции
print_r (дерево)
Если я всеже что-то неясно объяснил или все готово,
а может что и упустил, ввиду усталости, то стучитесь.
ICQ#: 480-526-137
Выбранный исполнитель
Похожие заказы
- $500Веб-программирование2 исполнителяЗавершен18 лет назад
- $100
Заменить все запросы к БД с ADODB на PDO. Так же сделать небольшие изменения в структуре БД.
Веб-программирование5 заявокЗакрыт18 лет назад Доброго всем времени суток! Все мы знаем такие весёлые системы как linkadd.info,linkoff.ru и другие такие системы.Принцип работы системы это отмечать галочками сайты что-бы обменяться ссылками......Теперь что я хочу....Чтобы был скрипт в котором можно было...как-бы ...
Веб-программирование6 заявокЗакрыт18 лет назадСайт для студии дизайна 1. Верстка страниц Home, Services, Portfolio, About Us, Clients, Careers 2. Функционал на portfolio.php для - показать картинку из CMS - отрендерить текст контента на ...
Веб-программирование1 исполнительЗакрыт18 лет назадWe a looking for ASP programmer with the aim to suite Microsoft SharePoint to the company needs. Provide us with your portfolio and contact information. Requests without portfolio and contact information will not ...
Веб-программирование1 заявкаЗакрыт18 лет назадНужен PHP, Perl либо ASP (желательно PHP)ипт для автоматической рассылки по гостевым книгам и доскам объявлений (не каталогам и форумам!). Скрипт должен хорошо работать на обычном платном хостинге, должен уметь работать с большими базами (минимум ...
Веб-программирование11 заявокЗакрыт18 лет назад- $250
ищу разрабочика для создания Plugin-а для броузера (IE, Firefox). Подробности по email: [email protected]
Веб-программирование8 заявокЗакрыт18 лет назад - $800
Только для серьезных и ответственных профи. Программирование на php или asp. Если у вас мало опыта - не обращайтесь. Только крупные и серьезные проекты.
Веб-программирование35 заявокЗакрыт18 лет назад - $100
Задача состоит в написании расширения (component || module) для CMS Joomla (целевая версия 1.5). Роли: Администратор, Пользователь, Аноним. Базовые понятия * Тест – последовательность вопросов с ответами. Тест ...
Веб-программирование6 заявокЗакрыт18 лет назад Всё в ТЗ. пожалуйста, пишите на почту: [email protected] или icq: 291-871-694
Веб-программирование7 заявокЗакрыт18 лет назад