кат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");Выводится все дерево, но нужно выводить только ту ветку в которой есть категория с ид = $cat
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'];
}
Помогите пожалуйста
Спустя 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; а при клике по парент категории присваеваешь подкатегориям класс например в котором открываешь их и все
приметивно!

Спустя 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);
}