Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: jstree

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: jstree
des1roer
Отправлено: 20 Мая, 2014 - 07:46:36
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




подскажите как работать с http://www[dot]jstree[dot]com/ необходимо нарисовать дерево. вида

главный раздел
1 раздел
1.2 раздел
2 раздел

выгребаю данные из таблицы вида

ид/ имя раздела / ид родителя
0 главный раздел
1 1 раздел 0
2 2 раздел 0
3 1.2 раздел 1
получаю данные из таблицы, создаю многомерный массив.
нужно его перегнать в json и отдать jstree. кто работал - подскажите как это сделать, желательно доступно
 
 Top
tato
Отправлено: 21 Мая, 2014 - 00:44:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.     // буфер
  3.     var categories = [];
  4.     // получаем json из атрибута data
  5.     var origCategories = $('treeContainer').data('categories');
  6.     // готовим со вкусом (=
  7.     for (var categoryId in origCategories) {
  8.         // берем категорию
  9.         var category = origCategories[categoryId];
  10.         // заполняем данные
  11.         category.text = category.name;
  12.         category.icon = category.status;
  13.         category.data = {
  14.             id: category.id,
  15.             originalId: category.id,
  16.             name: category.name,
  17.             status: category.status
  18.         };
  19.         // тут самое интересное
  20.         // если наша категория самая "верхняя", например у нее
  21.         // parent = 0, то мы должны поставить решетку
  22.         if (category.parent == 0) category.parent = '#';
  23.  
  24.         categories.push(category);
  25.     }
  26.  
  27.     $treeContainer.jstree({
  28.         core: { check_callback: true, multiple: false, data: categories },
  29.         plugins: ["dnd"]
  30.     });
  31.  


Нет необходимости самостоятельно выстраивать дерево на стороне php
jstree сделает это за нас. По-этому передаем одномерный массив.

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div data-categories="<?php echo json_encode($categories); ?>"></div>
  3.  


-----
просто ?: сложно
 
 Top
des1roer
Отправлено: 22 Мая, 2014 - 07:53:14
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




я как понимаю jstree довольна популярная библиотека и должно быть много людей работавших с ней. сейчас остановился на таком аспекте - как сделать чтобы при получении определенного ид (получаю гетом), выбирался узел дерева.
вот если на js писать


CODE (javascript):
скопировать код в буфер обмена
  1.       var data2 = [
  2.            { "id" : "1", "text" : "главная", "parent" : "#" },
  3.            { "id" : "2", "text" : "Услуги", "parent" : "#" },
  4.            { "id" : "3","text" : "Наши работы" , "parent" : "2" },
  5.            { "id" : "4", "text" : "Создание интернет магазина" , "parent" : "2", "state" : { "opened" : true,"selected":true }},
  6.           { "id" : "5", "text" : "Создание сайта", "parent" : "4" },
  7.         ];
  8.  


"state" : { "opened" : true,"selected":true } - открывает узел в дереве. но данные я получаю с базы (считай динамически), как записать внутрь массива еще и стэйт { "id" : "3","text" : "Наши работы" , "parent" : "2" }. как то добавить элемент надо, я не умею.
2 способ - наверное более простой и правильный
на пхп завожу массив


PHP:
скопировать код в буфер обмена
  1.     while ($row = pg_fetch_row($rs))
  2.                 {
  3.                    $Sum[] = array
  4.                    ("id" =>  $row[0],
  5.                    "text"  => $row[1],
  6.                    "parent" => $row[2]);
  7.                 }
  8.     $dataJ = json_encode ($Sum);



собственно можно проверить по полученному ид




и добавить что то вроде

PHP:
скопировать код в буфер обмена
  1.     "state" => '{ "selected":true }',


но таким образом json_encode ругается на "", в общем синтаксис ему не нравится. может их как то заэкранировать можно - не знаю
 
 Top
des1roer
Отправлено: 23 Мая, 2014 - 10:08:48
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB