![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Самозванка |
|
|||
![]() Девушка в стиле IT ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 484 Регистрация: 5.9.2006 Где: USA Репутация: нет Всего: 40 |
Беру данные из БД, иерархия получается из длины строки одного из столбцов. (там есть 5,10, 15,20,25 и 30 символов). Проблема в том, что когда я делаю дерево, при раскрытии или сварачивание одной из ветвей, сварачивается только первое значение из цикла. Привожу код:
Как сделать чтоб скрывалась не только первая строчка, но и все строчки, относящиееся к данной категории? |
|||
|
||||
| FlameTH |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 13.7.2007 Репутация: нет Всего: нет |
Проверь что оно дает на выводе. Сдается мне что он сует ненужный </UL> в начале. По коду представить не могу щас. =) Сонный ))
|
|||
|
||||
| Самозванка |
|
|||
![]() Девушка в стиле IT ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 484 Регистрация: 5.9.2006 Где: USA Репутация: нет Всего: 40 |
Проверила ul все нужные. А на выходе говорю же, отображается дерево, но при свертывании ветви, убирается тока первое данное из цикла, там может цикл как нить подругому организовать?
|
|||
|
||||
| FlameTH |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 13.7.2007 Репутация: нет Всего: нет |
Действительно у тя цикл неверный))
Щас попробую объяснить что у тебя происходит)) 1 шаг цикла:
Здесь все нормально. Теперь второй шаг, когда длина строки уже == 10:
Заметь, существует блок <ul>...</ul> Дальше допустим четвертый шаг:
Существуют <ul><ul><ul>...</ul></ul></ul> Что получается на выводе:
Вобщем что хочу сказать. Каждый шаг цикла закрывает открытый <ul> поэтому твой яваскрипт работает только для первого результата)) В общем тебе нужно вынести </UL> за пределы цикла. |
||||||||
|
|||||||||
| Самозванка |
|
|||
![]() Девушка в стиле IT ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 484 Регистрация: 5.9.2006 Где: USA Репутация: нет Всего: 40 |
Спасибо огромное, это уже получается ближе к истине, но все равно все данные из цикла не отображаются почему то. Отображается терь тока все данные самой нижней ветви, а у верхних только перввые...
Код переделала вот так:
То есть в принципе всё тоже самое, так как при развернутом дереве видно все ветки и их данные Это сообщение отредактировал(а) Самозванка - 17.7.2007, 11:38 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Самозванка, вообще лучше вначале сделайте дерево в чистом HTML, желательно с рабочим javascript-овым поведением. По-моему ясно, что открывать и тут же закрывать 4-5 уровней <ul> для этого не надо. А потом уже подумайте, как добиться такого же вывода из php, не делая кучи однотипных ветвей кода впридачу...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Самозванка |
|
|||
![]() Девушка в стиле IT ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 484 Регистрация: 5.9.2006 Где: USA Репутация: нет Всего: 40 |
SelenIT, я сделала дерево на чистом html
Но как сделать это в цикле? |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Самозванка, прекрасно.
Теперь, если я верно понял структуру Вашей выборки (которую Вы так старательно засекретили;), Вам нужно перед выводом каждой новой записи сравнивать ее глубину вложенности с предыдущей. Если она больше - перед ней нужно открыть новый <ul>, если меньше - закрыть предыдущий, если такая же - то ничего не делать. И использовать именно CLASSID (если я верно понял, что именно он - уникальный идентификатор записи) для генерации id-а у LI и UL, а не глубину вложенности. Для простоты можете пока сделать, чтобы каждая ветвь была ссылкой. Просто в функцию сразу после объявления var ul добавьте
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Самозванка |
|
|||
![]() Девушка в стиле IT ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 484 Регистрация: 5.9.2006 Где: USA Репутация: нет Всего: 40 |
SelenIT, я сделала цикл, который вы предложила. Получилось так.
Но тогда получается, как опрделить что мне надо закрыть не один UL , а несколько ранее открытых, так как вложения не одно, а несколько...? |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Посчитайте разность предыдущей и текущей глубины, если она положительна - прокрутите столько раз вложенный цикл закрытия.
И еще, CLASSID у Вас все-таки показывает именно глубину? А уникального ID-а у записи вообще нет, что ли? Это сообщение отредактировал(а) SelenIT - 18.7.2007, 14:50 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Самозванка |
|
|||
![]() Девушка в стиле IT ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 484 Регистрация: 5.9.2006 Где: USA Репутация: нет Всего: 40 |
SelenIT, Спасибо, сейчас попробую... Уникального id нет, так как дополнительную таблицу создать нельзя, а работаю с той какая есть.
Или я что то не так понимаю? Это сообщение отредактировал(а) Самозванка - 18.7.2007, 14:58 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Самозванка, в той таблице, с которой Вы работаете, нет просто ID-а, только CLASSID?
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Самозванка |
|
|||
![]() Девушка в стиле IT ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 484 Регистрация: 5.9.2006 Где: USA Репутация: нет Всего: 40 |
SelenIT, да в этой таблице только CLASSID, если был бы id , было бы проще.
И кстати чтобы узнать сколько закрывающих Ul ставить, надо будет счиатать разность и ставить условия что разность равна или 5 или 10 или тд, так? |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Самозванка, нет, поделить разность на 5, а потом сделать нечто вроде
с ID-ами, конечно, проблема... ну ладно, заведите в основном цикле счетчик и подставляйте его значения. Это сообщение отредактировал(а) SelenIT - 18.7.2007, 15:21 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Самозванка |
|
||||
![]() Девушка в стиле IT ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 484 Регистрация: 5.9.2006 Где: USA Репутация: нет Всего: 40 |
SelenIT, сделала счетчик, на мой взгляд всё правильно и должно работать. Но почему то скрипт не срабатывает:
Немножко подправила, но всё равно не катит(
Это сообщение отредактировал(а) Самозванка - 19.7.2007, 11:30 |
||||
|
|||||
![]()
|
| Правила форума "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. |