• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Нужно вывести категории чекбоксами, древовидно

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
уже 4 дня решаю задачу. Продвижение жутко медленное.
Задача: вывести категории из кэша в виде чекбоксов. Но чтобы каждый уровень чекбоксов имел свой стиль, чтобы потом выстроить как древовидное меню со смещением и т.п. (CSS).
Это я сделал.
Но нужно еще: если у категории есть вложенные, то сделать именно ее неактивной для выбора чекбоксом (disabled), а чтобы выбирались только конечные, у которых нет вложенных. Вот с этим глухо...
то, что я уже сделал (функция по формированию массива с HTML кодом всех чекбоксов:(
PHP:
public function print_tree_cat_by_id( $arr_cat, $id_cat = 0 /*родитель*/, $arr_cat_id = false, $i = 1 /*счетчик уровней вложенности*/){
            if( is_array( $arr_cat ) ){
                foreach( $arr_cat as $cat){
                    if( $cat['parentid'] == $id_cat ){                       
                        $arr_cat_id[] = '<label class="cat_checkbox_'. $i .'"><input type="checkbox"  value="' . $cat['id'] . '" name="" /> ' . $cat['name'] . ' </label><br />';
                        $res_req = $this->print_tree_cat_by_id( $arr_cat,  $cat['id'], $arr_cat_id, ++$i );
                        if( count($res_req) ){                           
                            $arr_cat_id = $res_req;
                            $i--;
                        }   
                    }
                }
            }
            else return false;           
            return $arr_cat_id;
        }
 
Я так понял, $arr_cat отвечает за список всех категорий. Тогда делаешь так:
После $arr_cat_id[] = добавляешь код:
PHP:
$found = 0;
foreach ($arr_cat as $value) {
   if ($value[parentid] == $id) $found = 1;
}
if ($found) {
   //Добавляешь disabled
}
Не красиво, зато работать будет.
 
Назад
Сверху