Автор Тема: Карта сайта на Nested sets ?  (Прочитано 5961 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн slash2k

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Карта сайта на Nested sets ?
« : 23 Августа 2005, 16:56:10 »
Есть таблица categories.

CREATE TABLE categories 

  
id int(10unsigned NOT NULL auto_increment
  
name varchar(128NOT NULL default \'\', 
  left_key int(10) unsigned NOT NULL default \'0\', 
  right_key int(10) unsigned NOT NULL default \'0\', 
  level int(10) unsigned NOT NULL default \'0\', 
  parent_id int(10) unsigned NOT NULL default \'0\', 
  PRIMARY KEY (id), 
  KEY cleft (left_key,right_key,level) 
) TYPE=MyISAM; 


# Дамп данных таблицы \'categories\' 


INSERT INTO categories VALUES (162, \'ывфы\', 13, 14, 2, 158); 
INSERT INTO categories VALUES (163, \'ывыфв\', 6, 11, 3, 159); 
INSERT INTO categories VALUES (164, \'ыфвыфв\', 7, 8, 4, 163); 
INSERT INTO categories VALUES (165, \'ыфвфыв\', 19, 30, 2, 161); 
INSERT INTO categories VALUES (166, \'фывфыв\', 20, 29, 3, 165); 
INSERT INTO categories VALUES (157, \'Новости\', 2, 3, 1, 1); 
INSERT INTO categories VALUES (158, \'Статьи\', 4, 15, 1, 1); 
INSERT INTO categories VALUES (1, \'Главная\', 1, 32, 0, 0); 
INSERT INTO categories VALUES (170, \'wqe\', 22, 23, 5, 168); 
INSERT INTO categories VALUES (168, \'цйуйу\', 21, 26, 4, 166); 
INSERT INTO categories VALUES (169, \'йцуйцу\', 27, 28, 4, 166); 
INSERT INTO categories VALUES (161, \'в\', 18, 31, 1, 1); 
INSERT INTO categories VALUES (167, \'цйу\', 9, 10, 4, 163); 
INSERT INTO categories VALUES (160, \'ыфв\', 16, 17, 1, 1); 
INSERT INTO categories VALUES (159, \'2005\', 5, 12, 2, 158); 
INSERT INTO categories VALUES (171, \'wqeq\', 24, 25, 5, 168); 


Есть картинки типа

|
|--
|_.

Как при помощи всего этого сделать древовидную карту сайта (по типу http://www.unesco.ru/rus/pages/sitemap.php), всмысле как правильно поставить картинки, чтобы получилось дерево?

Оффлайн Демет

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 29
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Карта сайта на Nested sets ?
« Ответ #1 : 23 Августа 2005, 17:18:36 »
учитывать уровень вложенности, тот самый level

Оффлайн slash2k

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Карта сайта на Nested sets ?
« Ответ #2 : 23 Августа 2005, 17:31:29 »
Не как это сделать без картинок это я знаю.


<? 
$query="SELECT * FROM categoties ORDER BY left_key ASC"
$resultmysql_query($query); 
while(
$row mysql_fetch_array($result)) 

   echo 
str_repeat(" ",6*$row[\'level\']).$row[\'name\']."
"; 

?> 



А вот как поставить перед $row[\'name\'] соотв. картинтку (ведь это может быть  и последней категорией у родителя и т.д...) ?

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Карта сайта на Nested sets ?
« Ответ #3 : 23 Августа 2005, 18:43:08 »
Ну подумай голово немного, поищи зависимости :

родитель: INSERT INTO categories VALUES (158, \'Статьи\', 4, 15, 1, 1);
последняя категория у родителя : INSERT INTO categories VALUES (162, \'ывфы\', 13, 14, 2, 158);

родитель : INSERT INTO categories VALUES (163, \'ывыфв\', 6, 11, 3, 159);
последняя категория у родителя : INSERT INTO categories VALUES (167, \'цйу\', 9, 10, 4, 163);

Неужели зависимостей не видно ?

PS
смотри на значения left_key, right_key
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн slash2k

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Карта сайта на Nested sets ?
« Ответ #4 : 23 Августа 2005, 19:20:53 »
Уж извини, но чего-то я не вижу :)

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Карта сайта на Nested sets ?
« Ответ #5 : 23 Августа 2005, 19:29:35 »
у последнего чайлда right_key на единицу меньше чем у родителя
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн slash2k

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Карта сайта на Nested sets ?
« Ответ #6 : 23 Августа 2005, 19:41:50 »
Спасибо, я понял, но все равно получается такая картина.

Главный родитель
       |
       |--Родитель 1
       |            |
       |            |--Сын 1
       |            |
       |            |_Cын-Родитель 2
       |            |      |
       |            |      |--Сын 1
       |            |      |
       |            |      |_ Сын 2
       |
       |_Родитель 2
       |            |
       |            |--Сын 1
       |            |
       |            |_Cын-Родитель 2
       |            |      |
       |            |      |--Сын 1
       |            |      |
       |            |      |_ Сын 2


Как учесть какое количество | и пробелов нужно ставить около $row[\'name\']?

Тем более в некоторых местах может быть 3 палочки и 1 пробел, а в других 3 палочки, пробел, 1 палочка. Т.е может быть чередование.

Оффлайн Демет

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 29
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Карта сайта на Nested sets ?
« Ответ #7 : 24 Августа 2005, 09:59:17 »
так ты палочки рисуешь или картинки разные подставляешь?
Цитировать
всмысле как правильно поставить картинки, чтобы получилось дерево?

Цитировать
Как учесть какое количество | и пробелов

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Карта сайта на Nested sets ?
« Ответ #8 : 24 Августа 2005, 11:32:46 »
slash2k
сначало сядь и тот HTML-код который ты хочешь сгенерировать напиши вручную. Это тебе нужно чтобы четко знать, что должно получиться в результате.

О кол-ве палочек можно судить по уровню текущего узла (level)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн slash2k

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Карта сайта на Nested sets ?
« Ответ #9 : 17 Сентября 2005, 16:43:19 »
Цитировать
О кол-ве палочек можно судить по уровню текущего узла (level)


Это то понятно. Но ведь может быть так, что кроме палочек в ряду, будут и пробелы. Тут надо какой-то алгоритм. Наверное ведь кто-то уже сталуивался с такой проблемой!

Оффлайн Daiz13

  • наблюдатель
  • Постоялец
  • ***
  • Сообщений: 150
  • +0/-0
  • 2
    • Просмотр профиля
    • http://rg.com.ua/
Карта сайта на Nested sets ?
« Ответ #10 : 17 Сентября 2005, 19:32:22 »
я по мере прохождения дерева заполняю массив $depth_markers "палочками" и "пробелами" (в моем случае вариантов больше так как я раскрываю только отдельные ветки дерева). Каждый из еллементов массива содержит маркер (пробел или палочку) родителя соответствующего уровня.
[|] [|] [--] Сын 1
 а чтобы определить, какой именно маркер ставить вполне достаточно знать level, right_key, left_key текущего узла и его родителя.

[OFF]до чего народ ленивый пошел... почти месяц ждать ответа на форуме вместо того чтобы самому подумать и написать...[/OFF]

Оффлайн slash2k

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Карта сайта на Nested sets ?
« Ответ #11 : 17 Сентября 2005, 19:51:37 »
А можно код?:)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28