данные в БД
| id |-----| parent |----------| Name |
+--+----+--------+---------+--------+
| 1 |-----| 0 |-----------------| Родитель 1 |
| 2 |-----| 0 |-----------------| Родитель 2 |
| 3 |-----| 0 |-----------------| Родитель 3 |
| 4 |-----| 0 |-----------------| Родитель 4 |
| 5 |-----| 0 |-----------------| Родитель 5 |
| 6 |-----| 0 |-----------------| Родитель 6 |
|11|-----| 1 |-----------------| Потомок 1.1 |
|12|-----| 1 |-----------------| Потомок 1.2 |
|13|-----| 2 |-----------------| Потомок 1.1 |
|14|-----|13|-----------------| Потомок 1.1.1 |
|15|-----|13|-----------------| Потомок 1.1.2 |
Запрос к БД:
результат, имеем массив в таком виде:
CODE ( htmlphp):
скопировать код в буфер обмена
( [0] => stdClass Object ( [id] => 1 [name] => Родитель 1 [parent] => 0 ) [1] => stdClass Object ( [id] => 14 [name] => Потомок 1.1.1 [parent] => 13 ) [2] => stdClass Object ( [id] => 13 [name] => Потомок 1.1 [parent] => 2 ) [3] => stdClass Object ( [id] => 11 [name] => Потомок 1.1 [parent] => 1 ) [4] => stdClass Object ( [id] => 12 [name] => Потомок 1.2 [parent] => 1 ) [5] => stdClass Object ( [id] => 15 [name] => Потомок 1.1.2 [parent] => 13 ) [6] => stdClass Object ( [id] => 2 [name] => Родитель 2 [parent] => 0 ) [7] => stdClass Object ( [id] => 3 [name] => Родитель 3 [parent] => 0 ) [8] => stdClass Object ( [id] => 4 [name] => Родитель 4 [parent] => 0 ) [9] => stdClass Object ( [id] => 5 [name] => Родитель 5 [parent] => 0 ) [10] => stdClass Object ( [id] => 6 [name] => Родитель 6 [parent] => 0 ) )
далее вывожу так:
PHP:
скопировать код в буфер обмена
<? for($i=0 ,$n=count($cats); $i<$n; $i++){ $cat = $cats[$i]; if(empty($tree[$cat->parent])) $tree[$cat->parent]=array(); $tree[$cat->parent][]=$cat; } ShowCategory($tree); function ShowCategory(&$tree,$k_parent=0){ if(empty($tree[$k_parent])) return; echo $k_parent ? "<ul style='display:none;'>" : "<ul>"; for($i=0 ,$n=count($tree[$k_parent]); $i<$n; $i++){ echo "<li>"; if(??????=Здесь должно быть условие=????????){ echo "<span>".$tree[$k_parent][$i]->p_name."</span>"; }else{ echo "<a href='index2.php?category=".$tree[$k_parent][$i]->id."'>".$tree[$k_parent][$i]->p_name."</a>"; } ShowCategory($tree, $tree[$k_parent][$i]->id); echo "</li>"; } echo $k_parent ? "</ul>" : ""; } ?>
а суть условия такова: надо сделать самого последнего потомка ссылкой.
помогите добрым советом?(Отредактировано автором: 07 Июля, 2011 - 09:34:44)
|