|
|
|
|
|
для: OLi
(25.07.2011 в 01:45)
| | Кто что подскажет? | |
|
|
|
|
|
|
|
для: cheops
(21.07.2011 в 16:30)
| | Сложновато все понять...В принципе вот здесь я могу перехватить все id детей
foreach ( $cat_info as $cats) {
$temp = array();
if( $cats['parentid'] == $parentid ){
if ($parentid>0){ $temp[]=$root_category;} //ЗДЕСЬ ЗАПИСАВ В МАССИВ
$root_category[$cats['id']][] = $cats['icon'];}
}
|
Только потом как это в рекурсию влить общую? | |
|
|
|
|
|
|
|
для: OLi
(21.07.2011 в 15:45)
| | Желательно выводить так, чтобы была видна иерархия
<?php
echo "<pre>";
print_r($cat_info);
echo "</pre>";
?>
| Я так понимаю массив линейный, а дерево построено по [parentid]? Тогда вам вероятно луче построить еще один массив, который по ключу текущего каталога будет содержать массив с его потомками - вот к нему и применять count(). | |
|
|
|
|
|
|
|
для: cheops
(21.07.2011 в 15:29)
| | Вывел через print_r($cat_info);
Получил все записи в массиве вида:
Array ( [2] => Array ( [id] => 2 [parentid] => 0 [posi] => 1 [name] => Транспорт и перевозки [alt_name] => transport-i-perevozki [icon] => {THEME}/images/icon/01.gif [skin] => [descr] => Транспорт и перевозки [keywords] =>
Транспорт и перевозки [news_sort] => title [news_msort] => ASC [news_number] => 0 [short_tpl] => [full_tpl] => [metatitle] => Транспорт и перевозки )...
|
Может это что-то скажет? | |
|
|
|
|
|
|
|
для: OLi
(21.07.2011 в 15:10)
| | count() возвращает количество элементов для текущего массива, в случае многомерного массива, он возвращает количество элементов для указанного изменения. Я не заметил у вас SQL-запросов, т.е. вы уже выводите данные по сформированному массиву-дереву? Тогда для каждого узла этого дерева count() должен возвращать разные значения, если count() не подходит - следует написать свою функцию, которая будет выяснять сколько потомков у текущего узла. | |
|
|
|
|
|
|
|
для: cheops
(21.07.2011 в 15:05)
| | Ну count() всегда больше 0, там не за что зацепиться...или я не так понял. | |
|
|
|
|
|
|
|
для: OLi
(21.07.2011 в 14:27)
| | Хм.. проверяйте при помощи функции count() есть ли у текущего узла дети - если есть это родитель, для него не нужно выводить флажок, если детей нет, count() вернула 0 - вывести флажок. | |
|
|
|
|
|
|
|
для: OLi
(21.07.2011 в 14:27)
| | В коде не могу понять где происходит проверка на родительские записи... | |
|
|
|
|
|
|
| Есть рекурсивная функция, которая выводит из базы записи родитель ->дети
function CategoryNewsSelection($categoryid = 0, $parentid = 0, $nocat = TRUE, $sublevelmarker = '', $returnstring = '') {
global $cat_info, $user_group, $member_id;
$allow_list = explode( ',', $user_group[$member_id['user_group']]['cat_allow_addnews'] );
$spec_list = explode( ',', $user_group[$member_id['user_group']]['cat_add'] );
$root_category = array ();
if( $parentid == 0 ) {
if( $nocat ) $returnstring .= '';
} else {
$sublevelmarker .= ' ';
}
if( count( $cat_info ) ) {
foreach ( $cat_info as $cats) {
if( $cats['parentid'] == $parentid ){ $root_category[$cats['id']][] = $cats['icon'];}
}
if( count( $root_category ) ) {
foreach ( $root_category as $id=>$icon) {
if( $allow_list[0] == "all" or in_array( $id, $allow_list ) ) {
if( ($spec_list[0] == "all" or in_array( $id, $spec_list ))and $id!=="19")
$returnstring .= "<input id=\"cat_".$id."\" type=\"checkbox\" onchange=\"onCategoryChange(this.checked)\" value=\"" . $id . '" ';
if( is_array( $categoryid ) ) {
foreach ( $categoryid as $element ) {
if( $element == $id ) $returnstring .= 'checked';
}
} elseif( $categoryid == $id ) $returnstring .= 'checked';
if ($id!=="19") $returnstring .= '> <img src="'.$icon [0].'"><a href="#" id="link_cat'.$id.'" onclick="show_hide_cat('.$id.');">'.$cat_info[$id]['name'].'</a> <br><div id="div_opisd'.$id.'" class="opis_activity">Введите текст<br><textarea name="catlist[]" id="opisd_'.$id.'"></textarea> <a href="#" onclick="show_hide_cat('.$id.');"><img src="{THEME}/images/close_cat.gif"></a></div>' . $sublevelmarker;
}
$returnstring = CategoryNewsSelection( $categoryid, $id, $nocat, $sublevelmarker, $returnstring );
}
}
}
return $returnstring;
}
|
Как видно для всех найденных записей формируется input checkbox в том числе и для "детей"
Как мне "словить" рекурсию на выводе только родителей без checkbox, а выводить только для детей? | |
|
|
|
|