![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| slutsker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 24.5.2007 Репутация: нет Всего: нет |
добрый день,
у меня есть таблица mysql в ней есть поля item_id, item_parent_id, item_name при добавлении в эту таблицу через PHP скрипт я проверяю, что если А - родитель В, то В - не родитель А. Однако мне нужна функция для общего случая, то есть для проверки ситуаций, что А - родитель В, В - родитель С, С - родитель А. --------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== |
|||
|
||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Ну так заменяйте родителя в своей проверочной переменной на самого "высокого" в дереве элементов, таким образом опуская промежуточные звенья. Если в итоге элемент укажет сам на себя - это и будет циклом.
А - родитель В, // A->B В - родитель С, // B->C --> A->B->C --> A->C С - родитель А. // C->A --> C->A->C --> C->C - цикл -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
slutsker, Есть ли уверенность, что таблица ВСЕ ЕЩЕ правильная?
В случае если структура уже нарушена и есть циклическая запись A->B и одновременно B-> A, алгоритм Arantir не подойдет. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| slutsker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 24.5.2007 Репутация: нет Всего: нет |
ksnk, данные в таблицы верны.
Arantir, спасибо мне помогли ещё одним хорошим советом, который вы, наверное, и имели в виду проходить по цепочке родителей. если наткнемся на ноль, то TRUE, а если наткнемся на добавляемый, то FALSE Это сообщение отредактировал(а) slutsker - 4.2.2013, 11:47 --------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== |
|||
|
||||
![]()
|
| Правила форума "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. |