[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рекурсия, отступы
Ser18
Здравствуйте

Подскажите пожалуйста

Есть таблица в БД

id | parent_id | name

Вывожу так

function vueCat($array, $id = 0){
$res = '';
static $tab = 1;
foreach($array as $val){
if($val['patent_id'] == $id){
$res .= '<option>'.$tab.$val['name'].'</option>';
$tab++;
$res .= $this->vueCat($array, $val['id']);
}
}

return $res;
}


Надо чтоб получилось примерно так

пункт
--подпункт
--подпункт
----подпункт
----подпункт
--подпункт
--подпункт
пункт
пункт

Чем глубже подпункт, тем больше черточек

Что надо сделать с переменной $tab получить нужный результат
Ser18
Никто не делал, что ли что то подобное?
Michael
Если это у тебя будет html список(вижу <option>) то может css-ом все же?

Насчет $tab не уверен, но попробуй:

$tab++;
$res .= $this->vueCat($array, $val['id']);
$tab--;


_____________
There never was a struggle in the soul of a good man that was not hard
SlavaFr
скинь содержимое $array для теста,
помоему нужно делать гдето так

function vueCat($array, $id = 0, $tab =1){
$res = '';
foreach($array as $val){
if($val['patent_id'] == $id){
$res .= '<option>'. str_repeat('-',$tab).$val['name'].'</option>';

$res .= $this->vueCat($array, $val['id'], $tab +1);
}
}

return $res;
}

я не тестировал, так что возможны ошибки.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Ser18
Не не работает оба варианта

Это мой последний вариант (тоже неправильный)
function vueCat($array, $id = 0){
$res = '';
static $tab = '';
foreach($array as $val){
if($val['patent_id'] == $id){
$res .= '<option>'.$tab.$val['name'].'</option>';
$tab .='--';
$res .= $this->vueCat($array, $val['id']);
$tab .='';
}
}

return $res;
}


вот массив для проверки
array (
0 =>
array (
'id' => '1',
'patent_id' => '0',
'name' => 'Главная',
),

1 =>
array (
'id' => '2',
'patent_id' => '0',
'name' => 'Строительство',
),

2 =>
array (
'id' => '3',
'patent_id' => '0',
'name' => 'Строительные материалы',
),

3 =>
array (
'id' => '4',
'patent_id' => '0',
'name' => 'Кровля',
),

4 =>
array (
'id' => '5',
'patent_id' => '0',
'name' => 'Фассадные материалы',
),

5 =>
array (
'id' => '6',
'patent_id' => '2',
'name' => 'Дома',
),

6 =>
array (
'id' => '7',
'patent_id' => '2',
'name' => 'Помещения',
),

7 =>
array (
'id' => '8',
'patent_id' => '2',
'name' => 'Строительные работы',
),
);

5, 6, 7 элементы должны быть с отступом под 'Строительство'
Быстрый ответ:

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