|
|
|
| Есть форма в которой мы добавляем сайт, при этом нужно указать его месторасположение в каталоге. Каталог - многоуровневый(притом вложенность неограничена).
Каким образом в форме сделать выбор места в каталоге для этого самого сайта?
Т.е. к примеру есть каталог:
Музыка
---поп-музыка
---рок-музыка
--------еще что-то
--------еще что-то
---металл
Фильмы
и т.д.
и вот подскажите каким образом сделать форму добавления сайта, если сразу не известно - какой максимальной вложенности будет каталог. | |
|
|
|
|
|
|
|
для: Dizels
(23.05.2008 в 16:54)
| | Как это добавить сайт? Может добавить в коллекцию ссылок ссылку на сайт? А с формой какие могут быть проблемы, у вас категории должны быть определены в базе, выбираете из базы эти категории, формируя их дерево, ну а дальше выдаете пользователю список, выбор которого (ых) и будет определять куда отнести это добавление. Если подходящей категории нет, то либо дать возможность добавлять пользователю новую, либо помещать в "нейтральную" - Другое. | |
|
|
|
|
|
|
|
для: sim5
(23.05.2008 в 17:27)
| | а как формировать дерево категорий?
Просто у меня в голове почему-то упорно сидела мысля по реализации наподобии этой:
Каталог: <select name ='category'>
<option value=0>берем из базы главные каталоги</option>
</select>
Подкаталог: <select name ='category_2'>
<option value=0>берем из базы подкаталоги выбранного главного каталога</option>
</select>
|
И вот собственно здесь то и возникал вопрос - как решить проблему того, что неизвестна вложенность.
А по поводу "дерева" - можно какой-нибудь пример кода привести? | |
|
|
|
|
|
|
|
для: Dizels
(23.05.2008 в 17:38)
| | Если у вас будут правильно организованы записи в таблице, то вы всегда будете знать это дерево. Записи должны иметь такую структуру:
id - номер каталога
parent - родитель каталога
name - название каталога
descript - краткое описание каталога
..... - плюс возможны другие полезные поля
У корневого каталога номер родитеоя всегда равен 0, а у остальных каталогов он равен номеру id вышележащего по уровню каталога. Зная это, вы всегда можете получить списки каталогов соответствующего уровня, такие, какие вы написали.
Все так и делается, как вы и хотите - либо постепенно выводя каждый новый список каталогов, либо, что лучше, организовать динамические списки на JS, либо используя технологию AJAX. Если последнее вас пугает, посмотрите этот пример. Это делает то же самое, что и AJAX, но намного компактнее, без кофликтов, очень простое для понимания и реализации. | |
|
|
|
|
|
|
|
для: sim5
(23.05.2008 в 17:50)
| | По поводу базы каталогов - это я знаю, она у меня по такому принципу и построенна. У меня вызывает затруднение само построение "дерева", т.е. сам коддинг (я в php не особо силен).
По поводу AJAX - прочитал Вашу ссылку, уверен на 95% что это то, что мне нужно :)
Вот только все равно - может поделитесь еще каким-нибудь кодом, применимым именно к моей ситуации, хотя бы отдаленно, а то из того примера многое не ясно. К примеру, каким образом делать запоминание того, что выбрано в 1 форме, если у меня еще куча других данных, получается обновлять страницу нельзя.
Вообщем я уже немного запутался - просьба разъяснить. | |
|
|
|
|
|
|
|
|
для: mihdan
(23.05.2008 в 18:08)
| | mihdan, спасибо, но тут как раз возникает проблема того, что вложенность может быть больше. | |
|
|
|
|
|
|
|
для: Dizels
(23.05.2008 в 18:15)
| | Тогда выведите это просто в селект (через рекурсию) а вложенность покажите отступами от родителя дайте селекту размер 10 и впуть
каталог1
подкаталог1
подкаталог2
подкаталог2.1
подкаталог3
каталог2
|
| |
|
|
|
|
|
|
|
для: mihdan
(23.05.2008 в 18:17)
| | Ок, вот это как раз то "дерево" про которое говорилось выше, насколько я понял :)
А как вот эту самую рекурсию сделать? Подскажите, плз. | |
|
|
|
|