вопрос по деревьям

stanlee

Новичок
вопрос по деревьям

Есть ли возможность вывода дерева струкруты (id, name, parend_id)
одним запросом

мне гвооирили что можно встаить поле с уровнем
но как тогда учитывать поле сортировки и поле вкл выкл раздела

при рекурсии то все проще
а так как?
 

Макс

Старожил PHPClub
Есть ли возможность вывода дерева струкруты (id, name, parend_id)
одним запросом
конечно есть. Выбираешь все дерево одним запросом и сортруешь его с помощью ПХП-кода.
 

stanlee

Новичок
а как?
у меня ща реализовано на Nested Set
но и тама я напоролся на такое
и в тупике
даже не знаю че терь делать

вот у меня ща в Nested Set что

в цикле стоит
if (!$data[$i][visible]) {
$page_vis = $data[$i][page_level];
$visible = 0;
} else if ($page_vis == $data[$i][page_level]) {
$visible = 1;
}

if ($visible) {
...
}

но почему то захватывает и 0 уровень
ничего не понимаю
 

stanlee

Новичок
а причем тут уровень



делается запрос
SELECT page_id, page_left, page_right, page_name, page_level, visible FROM pages WHERE page_left >= 1 AND page_right <= 132 ORDER BY page_left

потом данные загоняются в массив

for ($i=0; $i < $data_count; $i++) {
$data[] = mysql_fetch_assoc($result);
}

и массив прогоняется в карту
for ($i=0; $i < $data_count; $i++) {
...
print $data[$i][page_name];
...
}

так вот есть поле в базе которое отвечает за скрытие раздела (visible)
но у меня не получается захватывать вместе с разделом его детей при выводе дерева

вот и выводит непонятно что
 

regi

Новичок
Автор оригинала: stanlee
но почему то захватывает и 0 уровень
ничего не понимаю
поэтому надо указать level>0

если нужно вывести потомков:

получаешь данные о потомках данного элемента
$elements = $Tree->getElementInfo($id);
$cleft = $elements[0];
$cright = $elements[1];
$clevel = $elements[2];

и запрос
$query="SELECT * FROM table WHERE cleft BETWEEN '".$cleft."' AND '".$cright."' AND clevel = '".$clevel."'+1";

не знаю, правильно я понял то, что ты спросил. Если нет, извини :)
 

stanlee

Новичок
Макс можно более развернуто для (Выбираешь все дерево одним запросом и сортруешь его с помощью ПХП-кода.)

если можно с кусочком кода пожалуйста
 

Макс

Старожил PHPClub
Выбираешь все дерево :
SELECT * FROM tree ORDER BY parent_id ASC
заносишь данные в массив.
Сортируешь массив так как тебе надо.
 

stanlee

Новичок
Макс чет я пыжусь пыжусь и нифига не выходит

структура такова

page_id page_level page_parent page_name priority visible

сортирую а чет все равно косячит
да и с скрыванием всего раздела с подразделами не выходит чето

мож подскажешь поконкретнее
с кодом пожалуйста
 
Сверху