![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
OPG |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 25.2.2005 Репутация: нет Всего: 1 |
Имеются две функции. Вопросы о том, что все можно реализовать с помощью одной функции добавив еще
одну переменную, сейчас не поднимаются. Таблица такова: idSection:nameSection:idParent , где idParent идентификатор родительского раздела У меня два вопроса. Данные функции являются немного переделанными примерами одной функции со статьи весьма распросранненой в инете. Первый вопрос: Зачем нужна переменная $lvl? Второй вопрос более насущный: Существует панель администрирования сайта. В левой колонке выводится дерево ShowTreeParentSection(0,0); В правой колонке выводится дерево ShowTreeChildSection(0,0); При вкладывании разделов юзер в левой колонке отмечает радиокнопку родительского раздела, а в правой дочернего. Т.е. приходят две переменные idSectionParent и idSectionChild. Как написать функцию , которая проверяет пересеченное вложение разделов? После некоторого раздумья с задачей конечно справлюсь, но мне сдавать заказ в понедельник. Все написано, кроме вот этого данного вопроса. Очень прошу сообщество помочь. На другие форумы даже не обращаюсь, т.к. опыт показывает, если не помогут здесь, то в других форумах подавно делать нечего... Кстати, с осени буду жить в Москве, и очень понравилось начинание о встречах ![]() <?php function ShowTreeParentSection($idParent, $lvl) { include_once "connect.php"; global $lvl; $lvl++; $query="select idSection, nameSection, idParent from section where idParent='$idParent' order by nameSection"; $result=mysql_query($query); if (mysql_num_rows($result) > 0) { echo("<ol>\n"); while ( $row = mysql_fetch_array($result) ) { $id1 = $row[0]; echo("<ol>\n"); echo("<input type=\"radio\" name=\"idSectionParent\" value=\"$id1\">$row[1] \n"); echo("</ol>\n"); ShowTreeParentSection($id1, $lvl); $lvl--; } echo("</ol>\n"); } } function ShowTreeChildSection($idParent, $lvl) { include_once "connect.php"; global $lvl; $lvl++; $query="select idSection, nameSection, idParent from section where idParent='$idParent' order by nameSection"; $result=mysql_query($query); if (mysql_num_rows($result) > 0) { echo("<ol>\n"); while ( $row = mysql_fetch_array($result) ) { $id1 = $row[0]; echo("<ol>\n"); echo("<input type=\"radio\" name=\"idSectionChild\" value=\"$id1\">$row[1] \n"); echo("</ol>\n"); ShowTreeChildSection($id1, $lvl); $lvl--; } echo("</ol>\n"); } } ?> Это сообщение отредактировал(а) OPG - 20.8.2005, 22:27 |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Так. Поясни малость задачу, что ты понимаешь под перекрестностью.
ЗЫ:
Судя по всему level - уровень тобишь. У тебя этого нет, |
|||
|
||||
OPG |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 25.2.2005 Репутация: нет Всего: 1 |
Сам понимаю, что уровень. Но и в примере, такового нет. Зачем? Вот ссылка на оригинал http://activex.net.ru/docs/tree.shtml.
Теперь перекресное вложение. Предположим имеются разделы 1, 2, 3. Юзер вкладывает в 1 - 2, в 2-3, а в 3-1. Получается функция зацикливается, и вообще при большом количестве разделов юзер может такого намешать, что придется писать в админке службу, которая устанавливает в ноль все разделы, а юзер начинает с нуля строить структуру сайта. Проще говоря, если такое может произойти, то обязательно произойдет, и бороться с этим необходимо на уровне вкладывания разделов. Т.е. как я понимаю, должна иметься рекурсивная функция, которая проверяет всю ветку раздела и проверяет наличие двух одинаковых id. Если таковые имеются, то выход и предупреждение. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Я так понимаю само дерево ты строишь. Как мне кажется тут надо сделать тоже. Получить все ПОДкатегории для той категории у которой ты хочешь изменить. И посмотреть, есть ли в полученных категориях категория в которую ты хочешь переместить категорию. Если есть, т.е. 1ниже по уровню к 3, значит ошибка.
Т.е. если куда переносишь - ниже по уровню, то нельзя. Если выше, то можно. |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
А можно спросить как эта тема относится к форуму "Профессиональная разработка"?
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |