За последние 24 часа нас посетили 17387 программистов и 1650 роботов. Сейчас ищут 879 программистов ...

Категории. Помогите!

Тема в разделе "Прочие вопросы по PHP", создана пользователем LinKoln009, 6 сен 2014.

  1. LinKoln009

    LinKoln009 Новичок

    С нами с:
    6 сен 2014
    Сообщения:
    3
    Симпатии:
    0
    Всем привет ребят подскажите
    есть код
    Код (Text):
    1.    
    2. if( !$row['category'] ) {
    3.             $my_cat_links = "---";
    4.         } else {
    5.             $cat_list = explode( ',', $row['category'] );
    6.             $my_cat_links = array ();
    7.  
    8.             if( count( $cat_list ) == 1 OR ($view_template == "rss" AND $config['rss_format'] == 2) ) {
    9.                 $my_cat_links = get_categories( $cat_list[0] );
    10.             } else {
    11.                 foreach( $cat_list as $element ) {
    12.                     $list = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "/\">{$cat_info[$element]['name']}</a>";
    13.  
    14.                     $parent_id = $cat_info[$element]['parentid'];
    15.  
    16.                     while ( $parent_id ) {
    17.                         $my_cat_links[] = $cat_info[$parent_id]['name'] . ": " . $list;
    18.  
    19.                         $parent_id = $cat_info[$parent_id]['parentid'];
    20.  
    21.                         if( $parent_id ) {
    22.                             if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
    23.                         }
    24.                     }
    25.                 }
    26.                 $my_cat_links = implode( '<br />', $my_cat_links );
    27.             }
    28.         }
    И код этот выводит категории вот так
    К примеру
    Жанр: Детский
    Жанр: Семейный
    Жанр: Аниме

    А подскажите как сделать вот так
    Жанр: Детский, Семейный, Аниме
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Ваш код мало чего рассказывает, тут бы не помешала "предыстория". Если данные получаете из БД, то такие операции можно производить еще на уровне запроса, например, с помощью функции GROUP_CONCAT() и иже с ней. Если же исходные данные приходят в каком-то другом виде, то не плохо бы посмотреть на них "как есть".
     
  3. LinKoln009

    LinKoln009 Новичок

    С нами с:
    6 сен 2014
    Сообщения:
    3
    Симпатии:
    0
    Да это с cms DLE
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Замечтательно... Значит данные не из базы, не из какого-нибудь файла или даже заранее подготовленного массива, а просто "с cms DLE"?
     
  5. LinKoln009

    LinKoln009 Новичок

    С нами с:
    6 сен 2014
    Сообщения:
    3
    Симпатии:
    0
    Данные с базы
    Я создал файл category.php в нем
    Код (Text):
    1.  
    2. <?php
    3.  
    4. if( ! defined( 'DATALIFEENGINE' ) ) {
    5.     die( "Hacking attempt!" );
    6. }
    7.  
    8. include_once(ENGINE_DIR . '/data/cat.config.php');
    9.  
    10. function get_cat($id) {
    11.     global $cat_info, $config, $prefixe, $PHP_SELF;
    12.    
    13.     if( !$id ) return;
    14.  
    15.     if( $config['allow_alt_url'] ) $list = $prefixe[$id] . "<a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\">{$cat_info[$id]['name']}</a>";
    16.     else $list = $prefixe[$id] . "<a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\">{$cat_info[$id]['name']}</a>";
    17.    
    18.     return $list;
    19. }
    20.  
    21. ?>
    Потом я создал еще один файл cat.config.php в нем массив
    Код (Text):
    1.  
    2. <?php
    3.  
    4. $prefixe = array (
    5.  
    6.     //** YEA R **//
    7.     '2'      => "<br><br><b>Год выпуска:</b> ",
    8.     '3'      => "<br><br><b>Год выпуска:</b> ",
    9.     '4'      => "<br><br><b>Год выпуска:</b> ",
    10.     '5'      => "<br><br><b>Год выпуска:</b> ",
    11.     '6'      => "<br><br><b>Год выпуска:</b> ",
    12.     '7'      => "<br><br><b>Год выпуска:</b> ",
    13.     '8'      => "<br><br><b>Год выпуска:</b> ",
    14.     '9'      => "<br><br><b>Год выпуска:</b> ",
    15.     '10'     => "<br><br><b>Год выпуска:</b> ",
    16.     '11'     => "<br><br><b>Год выпуска:</b> ",
    17.     '12'     => "<br><br><b>Год выпуска:</b> ",
    18.     '13'     => "<br><br><b>Год выпуска:</b> ",
    19.     '14'     => "<br><br><b>Год выпуска:</b> ",
    20.     '15'     => "<br><br><b>Год выпуска:</b> ",
    21.     '16'     => "<br><br><b>Год выпуска:</b> ",
    22.     '17'     => "<br><br><b>Год выпуска:</b> ",
    23.     '18'     => "<br><br><b>Год выпуска:</b> ",
    24.     '19'     => "<br><br><b>Год выпуска:</b> ",
    25.     '20'     => "<br><br><b>Год выпуска:</b> ",
    26.     '21'     => "<br><br><b>Год выпуска:</b> ",
    27.     '22'     => "<br><br><b>Год выпуска:</b> ",
    28.     '23'     => "<br><br><b>Год выпуска:</b> ",
    29.     '24'     => "<br><br><b>Год выпуска:</b> ",
    30.     '25'     => "<br><br><b>Год выпуска:</b> ",
    31.     '26'     => "<br><br><b>Год выпуска:</b> ",
    32.     '27'     => "<br><br><b>Год выпуска:</b> ",
    33.     '28'     => "<br><br><b>Год выпуска:</b> ",
    34.     '29'     => "<br><br><b>Год выпуска:</b> ",
    35.     '30'     => "<br><br><b>Год выпуска:</b> ",
    36.     '31'     => "<br><br><b>Год выпуска:</b> ",
    37.     '32'     => "<br><br><b>Год выпуска:</b> ",
    38.     '33'     => "<br><br><b>Год выпуска:</b> ",
    39.     '34'     => "<br><br><b>Год выпуска:</b> ",
    40.     '35'     => "<br><br><b>Год выпуска:</b> ",
    41.     '36'     => "<br><br><b>Год выпуска:</b> ",
    42.     '37'     => "<br><br><b>Год выпуска:</b> ",
    43.     '38'     => "<br><br><b>Год выпуска:</b> ",
    44.     '39'     => "<br><br><b>Год выпуска:</b> ",
    45.     '40'     => "<br><br><b>Год выпуска:</b> ",
    46.     '41'     => "<br><br><b>Год выпуска:</b> ",
    47.     '42'     => "<br><br><b>Год выпуска:</b> ",
    48.     '43'     => "<br><br><b>Год выпуска:</b> ",
    49.     '44'     => "<br><br><b>Год выпуска:</b> ",
    50.     '45'     => "<br><br><b>Год выпуска:</b> ",
    51.     '46'     => "<br><br><b>Год выпуска:</b> ",
    52.     '47'     => "<br><br><b>Год выпуска:</b> ",
    53.     '48'     => "<br><br><b>Год выпуска:</b> ",
    54.     '49'     => "<br><br><b>Год выпуска:</b> ",
    55.     '50'     => "<br><br><b>Год выпуска:</b> ",
    56.     '51'     => "<br><br><b>Год выпуска:</b> ",
    57.     '52'     => "<br><br><b>Год выпуска:</b> ",
    58.     '53'     => "<br><br><b>Год выпуска:</b> ",
    59.     '54'     => "<br><br><b>Год выпуска:</b> ",
    60.     '55'     => "<br><br><b>Год выпуска:</b> ",
    61.     '56'     => "<br><br><b>Год выпуска:</b> ",
    62.     '57'     => "<br><br><b>Год выпуска:</b> ",
    63.     '58'     => "<br><br><b>Год выпуска:</b> ",
    64.     '59'     => "<br><br><b>Год выпуска:</b> ",
    65.     '60'     => "<br><br><b>Год выпуска:</b> ",
    66.     '61'     => "<br><br><b>Год выпуска:</b> ",
    67.     '62'     => "<br><br><b>Год выпуска:</b> ",
    68.     '63'     => "<br><br><b>Год выпуска:</b> ",
    69.     '64'     => "<br><br><b>Год выпуска:</b> ",
    70.     '65'     => "<br><br><b>Год выпуска:</b> ",
    71.     '66'     => "<br><br><b>Год выпуска:</b> ",
    72.     '67'     => "<br><br><b>Год выпуска:</b> ",
    73.     '68'     => "<br><br><b>Год выпуска:</b> ",
    74.     '69'     => "<br><br><b>Год выпуска:</b> ",
    75.     '70'     => "<br><br><b>Год выпуска:</b> ",
    76.     '71'     => "<br><br><b>Год выпуска:</b> ",
    77.     '72'     => "<br><br><b>Год выпуска:</b> ",
    78.     '73'     => "<br><br><b>Год выпуска:</b> ",
    79.     '74'     => "<br><br><b>Год выпуска:</b> ",
    80.     '75'     => "<br><br><b>Год выпуска:</b> ",
    81.     '76'     => "<br><br><b>Год выпуска:</b> ",
    82.     '77'     => "<br><br><b>Год выпуска:</b> ",
    83.     '78'     => "<br><br><b>Год выпуска:</b> ",
    84.     '79'     => "<br><br><b>Год выпуска:</b> ",
    85.     '80'     => "<br><br><b>Год выпуска:</b> ",
    86.     '81'     => "<br><br><b>Год выпуска:</b> ",
    87.     '82'     => "<br><br><b>Год выпуска:</b> ",
    88.     '83'     => "<br><br><b>Год выпуска:</b> ",
    89.     //** END-YEAR **//
    90.  
    91.     //** COUNTRY **//
    92.     '85'     => "<br><br><b>Страна:</b> ",
    93.     '86'     => "<br><br><b>Страна:</b> ",
    94.     '87'     => "<br><br><b>Страна:</b> ",
    95.     '88'     => "<br><br><b>Страна:</b> ",
    96.     '89'     => "<br><br><b>Страна:</b> ",
    97.     '90'     => "<br><br><b>Страна:</b> ",
    98.     '91'     => "<br><br><b>Страна:</b> ",
    99.     '92'     => "<br><br><b>Страна:</b> ",
    100.     '93'     => "<br><br><b>Страна:</b> ",
    101.     '94'     => "<br><br><b>Страна:</b> ",
    102.     '95'     => "<br><br><b>Страна:</b> ",
    103.     '96'     => "<br><br><b>Страна:</b> ",
    104.     '97'     => "<br><br><b>Страна:</b> ",
    105.     '98'     => "<br><br><b>Страна:</b> ",
    106.     '99'     => "<br><br><b>Страна:</b> ",
    107.     '100'    => "<br><br><b>Страна:</b> ",
    108.     '101'    => "<br><br><b>Страна:</b> ",
    109.     '102'    => "<br><br><b>Страна:</b> ",
    110.     '103'    => "<br><br><b>Страна:</b> ",
    111.     '104'    => "<br><br><b>Страна:</b> ",
    112.     '105'    => "<br><br><b>Страна:</b> ",
    113.     '106'    => "<br><br><b>Страна:</b> ",
    114.     '107'    => "<br><br><b>Страна:</b> ",
    115.     '108'    => "<br><br><b>Страна:</b> ",
    116.     '109'    => "<br><br><b>Страна:</b> ",
    117.     '110'    => "<br><br><b>Страна:</b> ",
    118.     '111'    => "<br><br><b>Страна:</b> ",
    119.     '112'    => "<br><br><b>Страна:</b> ",
    120.     '113'    => "<br><br><b>Страна:</b> ",
    121.     '114'    => "<br><br><b>Страна:</b> ",
    122.     '115'    => "<br><br><b>Страна:</b> ",
    123.     '116'    => "<br><br><b>Страна:</b> ",
    124.     '117'    => "<br><br><b>Страна:</b> ",
    125.     '118'    => "<br><br><b>Страна:</b> ",
    126.     '119'    => "<br><br><b>Страна:</b> ",
    127.     '120'    => "<br><br><b>Страна:</b> ",
    128.     '121'    => "<br><br><b>Страна:</b> ",
    129.     '122'    => "<br><br><b>Страна:</b> ",
    130.     '123'    => "<br><br><b>Страна:</b> ",
    131.     '124'    => "<br><br><b>Страна:</b> ",
    132.     '125'    => "<br><br><b>Страна:</b> ",
    133.     '126'    => "<br><br><b>Страна:</b> ",
    134.     '127'    => "<br><br><b>Страна:</b> ",
    135.     '128'    => "<br><br><b>Страна:</b> ",
    136.     //** END-COUNTRY **//
    137.  
    138.     //** GENRE **//
    139.     '130'    => "<br><br><b>Жанр:</b> ",
    140.     '131'    => "<br><br><b>Жанр:</b> ",
    141.     '132'    => "<br><br><b>Жанр:</b> ",
    142.     '133'    => "<br><br><b>Жанр:</b> ",
    143.     '134'    => "<br><br><b>Жанр:</b> ",
    144.     '135'    => "<br><br><b>Жанр:</b> ",
    145.     '136'    => "<br><br><b>Жанр:</b> ",
    146.     '137'    => "<br><br><b>Жанр:</b> ",
    147.     '138'    => "<br><br><b>Жанр:</b> ",
    148.     '139'    => "<br><br><b>Жанр:</b> ",
    149.     '140'    => "<br><br><b>Жанр:</b> ",
    150.     '141'    => "<br><br><b>Жанр:</b> ",
    151.     '142'    => "<br><br><b>Жанр:</b> ",
    152.     '143'    => "<br><br><b>Жанр:</b> ",
    153.     '144'    => "<br><br><b>Жанр:</b> ",
    154.     '145'    => "<br><br><b>Жанр:</b> ",
    155.     '146'    => "<br><br><b>Жанр:</b> ",
    156.     '147'    => "<br><br><b>Жанр:</b> ",
    157.     '148'    => "<br><br><b>Жанр:</b> ",
    158.     '149'    => "<br><br><b>Жанр:</b> ",
    159.     '150'    => "<br><br><b>Жанр:</b> ",
    160.     '151'    => "<br><br><b>Жанр:</b> ",
    161.     '152'    => "<br><br><b>Жанр:</b> ",
    162.     '153'    => "<br><br><b>Жанр:</b> ",
    163.     '154'    => "<br><br><b>Жанр:</b> ",
    164.     '155'    => "<br><br><b>Жанр:</b> ",
    165.     '156'    => "<br><br><b>Жанр:</b> ",
    166.     '157'    => "<br><br><b>Жанр:</b> ",
    167.     '158'    => "<br><br><b>Жанр:</b> ",
    168.     '159'    => "<br><br><b>Жанр:</b> ",
    169.     //** END-GENRE **//
    170. );
    171.  
    172. ?>
    а в файле функции где я хочу вывести все это я написал
    Код (Text):
    1.  
    2. if( !$row['category'] ) {
    3.           $my_cat_links = "---";
    4.       } else {
    5.           $cat_list = explode( ',', $row['category'] );
    6.           $my_cat_links = array ();
    7.  
    8.           if( count( $cat_list ) == 1 OR ($view_template == "rss" AND $config['rss_format'] == 2) ) {
    9.               $my_cat_links = get_categories( $cat_list[0] );
    10.           } else {
    11.               foreach( $cat_list as $element ) {
    12.                   $list = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "/\">{$cat_info[$element]['name']}</a>";
    13.  
    14.                   $parent_id = $cat_info[$element]['parentid'];
    15.  
    16.                   while ( $parent_id ) {
    17.                       $my_cat_links[] = $cat_info[$parent_id]['name'] . ": " . $list;
    18.  
    19.                       $parent_id = $cat_info[$parent_id]['parentid'];
    20.  
    21.                       if( $parent_id ) {
    22.                           if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
    23.                       }
    24.                   }
    25.               }
    26.               $my_cat_links = implode( '<br />', $my_cat_links );
    27.           }
    28.       }
    Какую функцию выполняют эти файлы я сейчас расскажу
    1. Я в админ панели создаю категорию и подкатегорию к примеру
    Год - Категория

    • 2014 - Подкатегория
    Страна - Категория

    • Россия - Подкатегория
    __________________________________________________________________
    И этот скрипт мне выводит вот так
    Год: 2014
    Страна: Россия

    Но когда я добавляю к примеру 2 страны: Россия и США
    Он мне выводит:
    Год: 2014
    Страна: Россия
    Страна: США

    А мне надо если 2 или более категории то вот так
    Год: 2014
    Страна: Россия, США
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Не могу понять, зачем вам массив в "cat.config.php", если данные всё-таки из базы. Сделаю еще одну попытку и покажу на примере: есть таблица с названиями животных и вторая таблица - с их породами. Нужно вывести названия и через запятую все породы каждого животного. Пример смотрим тут (слева - структура, справа - запрос, внизу - результат). Надеюсь, что суть уловите.
     
  7. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Зачем вам этот жуткий массив $prefixe? Даже не разбираясь особо в коде, скажу, что так делать нельзя. А вдруг вы решите делать там не два, а три переноса строки? Править вручную 159 записей?
    Код (PHP):
    1. function prefixe($id) {
    2.   $arr=array(83=> 'Год выпуска', 128 => "Страна", 159 => "Жанр");
    3.   foreach ($arr as $maxid => $text)
    4.      if ($id <= $maxid) break;
    5.   return "<br><br><b>$text:</b> ";
    6. }