За последние 24 часа нас посетили 62326 программистов и 13396 роботов. Сейчас ищет 1751 программист ...

Дерево категорий

Тема в разделе "PHP для новичков", создана пользователем sav2907, 30 ноя 2017.

  1. sav2907

    sav2907 Новичок

    С нами с:
    2 мар 2017
    Сообщения:
    10
    Симпатии:
    0
    Привет, есть такой код для дерева категорий
    Код (Text):
    1. INSERT INTO `categories` (`id`, `parent_id`, `name`) VALUES
    2. (1, 0, 'Раздел 1'),
    3. (2, 0, 'Раздел 2'),
    4. (3, 0, 'Раздел 3'),
    5. (4, 1, 'Раздел 1.1'),
    6. (5, 1, 'Раздел 1.2'),
    7. (6, 4, 'Раздел 1.1.1'),
    8. (7, 2, 'Раздел 2.1'),
    9. (8, 2, 'Раздел 2.2'),
    10. (9, 3, 'Раздел 3.1');
    11.  
    12. //Выбираем данные из БД
    13. $result=mysql_query("SELECT * FROM  categories");
    14. //Если в базе данных есть записи, формируем массив
    15. if   (mysql_num_rows($result) > 0){
    16.     $cats = array();
    17. //В цикле формируем массив разделов, ключом будет id родительской категории, а также массив разделов, ключом будет id категории
    18.     while($cat =  mysql_fetch_assoc($result)){
    19.         $cats_ID[$cat['id']][] = $cat;
    20.         $cats[$cat['parent_id']][$cat['id']] =  $cat;
    21.     }
    22. }
    23.  
    24. function build_tree($cats,$parent_id,$only_parent = false){
    25.     if(is_array($cats) and isset($cats[$parent_id])){
    26.         $tree = '<ul>';
    27.         if($only_parent==false){
    28.             foreach($cats[$parent_id] as $cat){
    29.                 $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
    30.                 $tree .=  build_tree($cats,$cat['id']);
    31.                 $tree .= '</li>';
    32.             }
    33.         }elseif(is_numeric($only_parent)){
    34.             $cat = $cats[$parent_id][$only_parent];
    35.             $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
    36.             $tree .=  build_tree($cats,$cat['id']);
    37.             $tree .= '</li>';
    38.         }
    39.         $tree .= '</ul>';
    40.     }
    41.     else return null;
    42.     return $tree;
    43. }
    44. echo build_tree($cats,0);
    Задача: если parent_id = 4, а родителя с id =4 нет, тогда вывести эту строку как будто бы parent_id = 0
     
  2. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    php и if else тебе в помощь