[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с категориями как в DLE?
kamwork
Всем привет!

Нравится как реализована работа с категориями в новых версиях DLE.

Там их можно перетаскивать:

user posted image

Может есть готовые решения аналогичные? Или кто поможет в реализации? С меня пиво smile.gif
Arh
Перетаскиваются с помощью jquery
примерно так
Скрытый текст
http://www.linkexchanger.su/2009/111.html


а дерево строиться примерно так
http://phpforum.su/index.php?showtopic=773...=0#entry2643452



_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
kamwork
Цитата (Arh @ 19.04.2014 - 11:46)
Перетаскиваются с помощью jquery
примерно так
Скрытый текст
http://www.linkexchanger.su/2009/111.html


а дерево строиться примерно так
http://phpforum.su/index.php?showtopic=773...=0#entry2643452

Спасибо!

Нашел интересный вариант Nestable

Пытаюсь разобраться wacko.gif
Arh
kamwork
Да, неплохо, подрежу кое что от туда =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
kamwork
Что то я запутался :)

nestable отдает данные в формате json как я понимаю:

[{"id":13,"children":[{"id":14}]},{"id":15,"children&qu ot;:[{"id":16,"children":[{"id":17}]},{"id":18}]}]


Я их отправлю в файл save.php и преобразую в массив:

$list = $_POST['output_data'];
$result = json_decode($list,true);


Получается:

Array
(
[
0] => Array
(
[
id] => 13
[children] => Array
(
[
0] => Array
(
[
id] => 14
)

)

)

[
1] => Array
(
[
id] => 15
[children] => Array
(
[
0] => Array
(
[
id] => 16
[children] => Array
(
[
0] => Array
(
[
id] => 17
)

)

)

[
1] => Array
(
[
id] => 18
)

)

)

)



А что дальше делать я не соображу :))
kamwork
Кажется понял.. для записи в БД мы приобразовываем даный массив в одномерный вида:

Array
(
[
0] => Array
(
[
id] => 4
[name] => 9+
[
parent] => null
)

[
1] => Array
(
[
id] => 6
[name] => 9+
[
parent] => 0
)


А при извлечении наоборот из одномерного делаем многомерный как перед записью..

Пошел пробовать :)
kamwork
Что то я себе мозг с рекурсиями сломал :)

Пытаюсь из этого массива:


Array
(
[
0] => Array
(
[
id] => 13
[children] => Array
(
[
0] => Array
(
[
id] => 14
)
)
)
[
1] => Array
(
[
id] => 15
[children] => Array
(
[
0] => Array
(
[
id] => 16
[children] => Array
(
[
0] => Array
(
[
id] => 17
)
)
)

[
1] => Array
(
[
id] => 18
)
)
)



Сделать такой:

Array
(
[
0] => Array
(
[
id] => 13
[parent] => 0
[sort] => 1
)

[
1] => Array
(
[
id] => 14
[parent] => 13
[sort] => 1
)
[
2] => Array
(
[
id] => 15
[parent] => 0
[sort] => 2
)
[
3] => Array
(
[
id] => 16
[parent] => 15
[sort] => 1

)
[
4] => Array
(
[
id] => 17
[parent] => 16
[sort] => 1

)
[
5] => Array
(
[
id] => 18
[parent] => 15
[sort] => 2

)




После чего записать это все в БД, вернее переписать.

Понял, что нужно делать через рекурсии, но нифига не выходит :(

Пока просто через echo вывожу, пытаюсь сформировать то, что нужно.


Получилась у меня такая функция:


save_menu($result);

function save_menu ($menu_array, $parent = 0) {

foreach ($menu_array as $ellement) {

//тут [parent_id] выводится вроде бы верно

if ($parent)
echo '<br /> [parent_id]:' . $parent;

if (is_array($ellement)) {
save_menu($ellement, $menu_array['id']);
}
else {
echo '<br /> [id]:' . $ellement;

// а здесь он почему то не хочет быть..
echo '<br /> [parent_id]:' . $parent;
echo '<br>--------------------------';
}
}
}


Сортировки пока вообще не осилил :(





Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.