[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Древо категорий
Гость_tim-ua
Подскажите пожалуйста, такая задача: Вывести древо категорий но только до определенной категории т.е.


кат1
========подкат1
========подкат2
================подподкат1
================подподкат2
================подподкат3
========подкат1
================подподкат1
========================подподподкат1
========================подподподкат1
кат2
кат3
========подкат1
========подкат2
========подкат3
кат4
кат5

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

кат1
========подкат2
================подподкат1

зная ИД категории

Структура бд: id, name, parent_id

Вывожу дерево так:
$sql = mysqlQuery("SELECT * FROM confs");
while($var = mysql_fetch_array($sql))
{
$confs_arr[$var['parent_id']][]=array("id" => $var['id'], "name" => $var['name']);
}



echo tree(18,0,0,$confs_arr);

function tree($cat, $pid, $lwl, $confs_arr)
{

for ($i=1; $i<=$lwl; $i++)
$padding.='========';

$lwl++;



if (count($confs_arr[$pid]))
for ($c=0; $c<=count($confs_arr[$pid])-1; $c++)
{
$ret['out'] .= $padding.$confs_arr[$pid][$c]['name'].'<br>';
$ret['out'] .= tree($cat, $confs_arr[$pid][$c]['id'], $lwl, $confs_arr);
}

return $ret['out'];
}
Выводится все дерево, но нужно выводить только ту ветку в которой есть категория с ид = $cat

Помогите пожалуйста



Спустя 43 минуты, 32 секунды (15.11.2010 - 19:11) Sanchopansa написал(а):
А в SQL запросе не получается ограничить данные одной категории? Например...
$sql = mysqlQuery("SELECT * FROM confs WHERE id = ид_категории  OR parent_id = ид_категории");

Спустя 2 минуты, 36 секунд (15.11.2010 - 19:14) Гость_tim-ua написал(а):
Так уровень вложенности может быть большим

Спустя 45 минут, 24 секунды (15.11.2010 - 19:59) Guest написал(а):
Вообще задача - вывести на главной странице категории с parent_id = 0, при клике на категрию - страница перегружается и открывается категория на которую кликнули

Спустя 4 минуты, 41 секунда (15.11.2010 - 20:04) Sanchopansa написал(а):
ааа... ну это можно сделать с помошью CSS например.. выводишь все дерево... а потом вложеные категории пряцешь с помощью display:hidden; а при клике по парент категории присваеваешь подкатегориям класс например в котором открываешь их и все smile.gif приметивно!

Спустя 4 минуты, 30 секунд (15.11.2010 - 20:08) Guest написал(а):
Да не вопрос как скрыть, главное как в каждой ветке определить что именно в ней нужная категория?

Спустя 25 минут, 15 секунд (15.11.2010 - 20:34) Sanchopansa написал(а):
Цитата (Guest @ 15.11.2010 - 17:08)
Да не вопрос как скрыть, главное как в каждой ветке определить что именно в ней нужная категория?

Вот короче покрути этот модуль.. это модуль для джумлы но в нем я это все рализовывал с помощью XML.. короче покрути

Спустя 6 дней, 3 часа, 6 минут, 22 секунды (21.11.2010 - 23:40) Гость_tim-ua написал(а):
Как загнать все в массив понял:
function tree_list_tree(&$a_list,$id=0) 
{
if(empty($a_list[$id])) return array();
$a_tree=array();
for($i=0;$i<count($a_list[$id]);$i++)
{
$f=$a_list[$id][$i];
$f['a_tree']=tree_list_tree($a_list,$a_list[$id][$i]['id']);
$a_tree[]=$f;
}
return $a_tree;
}

function tree_list_load_all()
{
$r=mysql_query("
select * from confs name"
);

if(!$r) return false;

$a_list=array();

for($i=0;$i<mysql_num_rows($r);$i++)
{
$f=mysql_fetch_assoc($r);
if(empty($a_list[$f['parent_id']]))
$a_list[$f['parent_id']]=array();
$a_list[$f['parent_id']][]=$f;
}

return tree_list_tree($a_list);
}
Но все равно не понимаю как мне вывести только тут ветку в которой есть необходимый мне раздел?
Быстрый ответ:

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