Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Получить только определёную ветку разделов, вместе со всеми остальными разделами первого уровня?
 
 автор: web777   (29.04.2010 в 11:52)   письмо автору
 
 

заголовок получился длинный, не знал как лучше написать

имеется рекурсивная функция getListing(), которой передаётся массив разделов из БД в таком формате

$arr[$row['parent']][] = array('id'=>$row['id'], 'parent' => $row['parent'], 'name' => $row['name']); 




<?php
public function getListing($data$parent$lvl
    {           
         static 
$out '';
         if (!isset(
$data[$parent])) return;
            
$indent =  str_repeat('  '$lvl); 
            
$out .= $indent."<ul>\n";
            
            foreach(
$data[$parent] as $v
            {  
               
$out .= $indent.'  <li><a href="'.$v['id'].'">'.$v['name']."</a></li>\n";

               
$this->getListing($model$v['id'], $lvl+1);
            }
            
       
$out .= $indent."</ul>\n";
       return 
$out;
    }    
?>



вызываю так


echo getListing( $data_category, 0, 0) ; 


Разделы выводится ввиде списков ul и li.

Если в качестве второго аргумента в функции передать parent_id значение 0, выведится все ветки, если передать id родителя то выведиться только ветка принадлежащая ей, и её внутренним подразделам. Но вот как сделать чтобы список был из всех родителей первого уровня и если был передан аргумент допустим родителя id 2 то только эта ветка и её внутренние ветки вывелись?

Ниже пример всех веток:

Cars
-- chevy
-- ford
---- mustang
---- ranger
-- toyota
Food
-- fruit
---- apples
---- oranges
------- sunny
------- green
-- pasta
-- veges
Food
Acura
BMW


так вот, если мы выбрали "Cars", то нужно получить такую ветку


Cars
-- chevy
-- ford
---- mustang
---- ranger
-- toyota
Food
Acura
BMW

  Ответить  
 
 автор: DJ Paltus   (29.04.2010 в 11:58)   письмо автору
 
   для: web777   (29.04.2010 в 11:52)
 

Здесь эта задача однажды была решена. Непрофессионально, конечно. К внедрению не рекомендуется.
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=62917&page=2

  Ответить  
 
 автор: web777   (29.04.2010 в 12:06)   письмо автору
 
   для: DJ Paltus   (29.04.2010 в 11:58)
 

можно пример этой темы, или хотя бы запрос по которому можно найти?

да и почему не профессионально, в чём данный вариант плох?

ведь нужно выделить только нужную ветку а не всю карту разделов. Тут можно конечно сделать вывод только конкретной ветки и все её принадлежащие, но что если вдруг пользователь захочет перейти в другой раздел например на "Food" а его ведь уже не будет т.к. он находится в корне а не в ветке "Cars"

вообщем нужно вывести всех родителей первого уровня, и все ветки только определённого выбранного родителя

  Ответить  
 
 автор: Valick   (29.04.2010 в 12:17)   письмо автору
 
   для: web777   (29.04.2010 в 12:06)
 

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

  Ответить  
 
 автор: web777   (29.04.2010 в 12:08)   письмо автору
 
   для: DJ Paltus   (29.04.2010 в 11:58)
 

спасибо за ссылку, только появилась, сейчас изучу

  Ответить  
 
 автор: web777   (29.04.2010 в 12:30)   письмо автору
 
   для: DJ Paltus   (29.04.2010 в 11:58)
 

ужас, то что по ссылке предложено DJ Paltus слишком ресурсо-тяжёлый вариант, он не подходит. В моём варианте, только один запрос который собирает всю таблицу и далее с ним работаю. Сейчас посмотрю по последней ссылке предложенный вариант

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования