Всем привет! Есть таблица id | parent_id | name 1848 | 0 | Все для мужчин 1849 | 1848 | Аксессуары и Сумки 1850 | 1849 | Сумки 1851 | 1850 | Сумки через плечо 1852 | 1850 | Сумки для ноутбука 1853 | 1850 | Спортивные сумки 1854 | 1850 | Рюкзаки 1855 | 1850 | Кожаные сумки 1856 | 1850 | Дорожные сумки 1857 | 1849 | Аксессуары 1858 | 1857 | Ювелирные украшения 1859 | 1857 | Шарфы 1860 | 1857 | Чехлы для мобильного телефона 1861 | 1857 | Часы 1862 | 1857 | Ремни 1863 | 1857 | Перчатки 1864 | 1857 | Очки 1865 | 1857 | Кошельки, обложки для документов 1866 | 1857 | Зонты 1867 | 1857 | Запонки 1868 | 1857 | Зажигалки 1869 | 1857 | Галстуки 1870 | 1857 | Браслеты 1871 | 1857 | Бижутерия 1872 | 1848 | Мужская одежда 1873 | 1872 | Шорты 1874 | 1873 | Бермуды 1875 | 1873 | Спортивные 1876 | 1872 | Футболки и поло 1877 | 1876 | Футболки 1878 | 1876 | Спортивные 1879 | 1876 | Майки 1880 | 1876 | Поло 1881 | 1872 | Толстовки 1882 | 1872 | Свитера, пуловеры 1883 | 1872 | Рубашки 1884 | 1872 | Пиджаки 1885 | 1884 | Пиджаки в стиле casual 1886 | 1884 | Классические пиджаки 1887 | 1872 | Жакеты 1888 | 1872 | Кофты и Кардиганы 1889 | 1872 | Костюмы 1890 | 1889 | Спортивные костюмы 1891 | 1889 | Классические костюмы 1892 | 1872 | Жилеты 1893 | 1892 | Меховые 1894 | 1892 | Классические 1895 | 1892 | Кожанные 1896 | 1892 | Дутые и стеганые 1897 | 1892 | Джинсовые 1898 | 1892 | В стиле casual 1899 | 1872 | Джинсы 1900 | 1899 | Прямой покрой 1901 | 1899 | Зауженные 1902 | 1872 | Головные уборы 1903 | 1902 | Шляпы 1904 | 1902 | Шапки 1905 | 1902 | Панамы 1906 | 1902 | Бейсболки, Кепки 1907 | 1872 | Верхняя одежда 1908 | 1907 | Пуховики 1909 | 1907 | Пальто 1910 | 1907 | Дубленка 1911 | 1907 | Куртки 1912 | 1907 | Вязанные кофты 1913 | 1872 | Брюки 1914 | 1913 | Спортивные 1915 | 1913 | Повседневные 1916 | 1913 | Классические 1917 | 1872 | Белье и Пляжная мода 1918 | 1917 | Трусы 1919 | 1917 | Термобелье 1920 | 1917 | Плавки 1921 | 1917 | Носки 1922 | 1917 | Майки 1923 | 1848 | Обувь 1924 | 1923 | Шлепанцы 1925 | 1923 | Угги 1926 | 1923 | Туфли 1927 | 1923 | Тапочки 1928 | 1923 | Сланцы 1929 | 1923 | Сапоги 1930 | 1923 | Сандали 1931 | 1923 | Резиновые сапоги 1932 | 1923 | Полуботинки 1933 | 1923 | Мокасины 1934 | 1923 | Кроссовки 1935 | 1923 | Кеды 1936 | 1923 | Галоши 1937 | 1923 | Ботинки Есть скрипт который рекурсивно выводит категории в виде дерева Код (Text): $cat_p = filter_input_var($_GET['cprod']); //Выбираем данные из БД $result=do_query("SELECT * FROM tovars_categories"); //Если в базе данных есть записи, формируем массив if (mysql_num_rows($result) > 0){ $cats = array(); //В цикле формируем массив разделов, ключом будет id родительской категории, а также массив разделов, ключом будет id категории while($cat = mysql_fetch_assoc($result)){ $cats_ID[$cat['id']][] = $cat; $cats[$cat['parent_id']][$cat['id']] = $cat; } } // echo '<pre>'; // print_r($cats); // echo '</pre>'; function build_tree($cats,$parent_id,$only_parent = false){ if(is_array($cats) and isset($cats[$parent_id])){ if($only_parent==false){ $tree = '<ul>'; foreach($cats[$parent_id] as $cat){ $tree .= '<li class="custom_id'.$cat['id'].'"><a class="" href="/?cprod='.$cat['id'].'">'.$cat['name'].'</a><span class="down"></span>'; $tree .= build_tree($cats,$cat['id']); $tree .= '</li>'; } $tree .= '</ul>'; }elseif(is_numeric($only_parent)){ $cat = $cats[$parent_id][$only_parent]; $tree = '<li class="custom_id'.$cat['id'].'"><a class="" href="/?cprod='.$cat['id'].'">'.$cat['name'].'</a><span class="down"></span>'; $tree .= build_tree($cats,$cat['id']); $tree .= '</li>'; } } else return null; return $tree; } function find_parent ($tmp, $cur_id){ if($tmp[$cur_id][0]['parent_id']!=0){ return find_parent($tmp,$tmp[$cur_id][0]['parent_id']); } return (int)$tmp[$cur_id][0]['id']; } Вот так вывожу в темплейте Код (Text): <div class="box"> <div class="box-heading">Категории</div> <div class="box-content box-category"> <ul id="cat_accordion"> <? echo build_tree($cats,0,find_parent($cats_ID,$cat_p)); ?> </ul> </div> </div> Скрипт не мой брал на просторах(немного лишь подправил) Собственно все нормально работает, за исключением некоторых моментов, которые я не могу победить вторые сутки, поэтому прошу помощи у вас, господа профессионалы Момент первый (просьба о помощи) Определить что пользователь находится в текущей категории и добавить класс CSS для элемента <a> Иначе говоря если GET совпадает с ID категории, нужно добавить класс Я пробовал так: Код (Text): if($cat_p == $cat['id']){ $active = 'active'; }else{ $active = ''; } Код (Text): $tree .= '<li class="custom_id'.$cat['id'].'"><a class="'.$active.'" href="/?cprod='.$cat['id'].'">'.$cat['name'].'</a><span class="down"></span>'; Но не получается, пробовал еще вариантов 5, та же фигня, моск кипит Момент второй и снова прошу о помощи Как не выводить самую главную категорию у которой parent_id равен нулю? пробовал что-то типа этого Код (Text): if($cat['parent_id'] != 0){ } не фига не выходит Как выводит сейчас: +Все для мужчин +-Аксессуары и Сумки +---Подкатегория +---Подкатегория +---Подкатегория +-Мужская одежда +---Подкатегория +---Подкатегория +---Подкатегория +-Обувь +---Подкатегория +---Подкатегория +---Подкатегория Что я хочу сделать, при нахождении в любой подкатегории раздела "для мужчин" +Аксессуары и Сумки +---Подкатегория +---Подкатегория +---Подкатегория +Мужская одежда +---Подкатегория +---Подкатегория +---Подкатегория +Обувь +---Подкатегория +---Подкатегория +---Подкатегория Т.е. без самой родительской категории с parent_id = 0 PS Заранее спасибо всем откликнувшимся и помогающим мне в этих вопросах
Код (Text): $cat_p = filter_input_var($_GET['cprod']); Вот это и есть проверка $_GET, но не получается, возможно я неправильно обращаюсь с массивом Код (Text): if($cat_p == $cat['id']){ $active = 'active'; }else{ $active = ''; }
Что то мне не известна эта функция... да что там я ГУГЛ ее не знает. Самописная? Где подключаешь? Если нет то откуда взял.
Брал на просторах Код (Text): function filter_input_var($var) { $quotes = array ("\x27", "\x22", "\x60", "\t", "\n", "\r", "*", "%", "<", ">", "?", "!" ); $var = str_replace( $quotes, '', $var ); $var = preg_replace('/[^0-9]/', '', $var); mysql_real_escape_string( trim( htmlspecialchars( addslashes( strip_tags($var))))); return $var; } Подключаю в самом начале списка подключаемых файлов. Проблем с ней не замечал. Пробовал и без нее, все равно не получается. Вы про нее спросили из личного интереса, или это имеет отношение к теме?