Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать подсветку для активного пункта меню? вывод стиля для активного элемента меню 
V
    Опции темы
semjaza
Дата 15.1.2014, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.1.2014

Репутация: нет
Всего: нет



есть несколько функций-получение массива и вывод полученного с помощью рекурсивной функции..вот код функций: 
Код

//Функция получения массива каталога
function get_cat() {
//запрос к базе данных
$sql = "SELECT * FROM menu";
$result = mysql_query($sql);
if(!$result) {
  return NULL;
}
$arr_cat = array();
if(mysql_num_rows($result) != 0) {

  //В цикле формируем массив
  for($i = 0; $i < mysql_num_rows($result);$i++) {
     $row = mysql_fetch_array($result,MYSQL_ASSOC);

     //Формируем массив где ключами являются айдишники на родительские категории
     if(empty($arr_cat[$row['parent_id']])) {
        $arr_cat[$row['parent_id']] = array();
     }   
     $arr_cat[$row['parent_id']][] = $row;   
  }
  //возвращаем массив
  return $arr_cat;
 }
}

//вывод каталогa с помощью рекурсии      
function view_cat($arr,$parent_id = main) {

//Условия выхода из рекурсии
if(empty($arr[$parent_id])) {
  return;
}

echo "<ul>";
//перебираем в цикле массив и выводим на экран
for($i = 0; $i < count($arr[$parent_id]);$i++) {
  echo "<li><a href=\"?category_id={$arr[$parent_id][$i]['title_url']}&parent_id=        {$parent_id}\""
    .($category_id == $arr[$parent_id][$i]['title_url'] ? ' class="menu-active"':'')
    .">{$arr[$parent_id][$i]['title']}</a>";
  //рекурсия - проверяем нет ли дочерних категорий
  view_cat($arr,$arr[$parent_id][$i]['title_url']);
  echo "</li>";
  }
  echo "</ul>";

 }


вывод происходит в файле site.php, примерно так-
Код

//получаем массив каталога
 $result = get_cat();

 //Выводим каталог на экран с помощью рекурсивной функции
 echo '<div id="header">';
 echo '<img class="logo" src="images/logo.png">';
 echo '<img class="yab" src="images/yab1.png">';
 echo '<div id="menu">';
 $menu = view_cat($result);
 echo '</div>';
 echo '</div>';


крутил разные значения,например

Код

$category_id == $arr[$parent_id][$i]['title_url']


или

Код

$category_id == $_GET['title_url']


ничего не выходит...помогите понять как задать условие правильно-чтоб активному пункту меню соответствовал класс со стилем:"menu-active"...в параметры url попадает значение :
Код

$category_id == $arr[$parent_id][$i]['title_url']


....как я понимаю...я совсем новичок ....подскажите почему не выходит?...заранее спасибо...
PM MAIL   Вверх
cia
Дата 16.1.2014, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 15.1.2007

Репутация: 4
Всего: 4



А что не выходит-то? В чём конкретно проблема? Стиль "menu-active" лучше прикручивать к тегу <li>, а не <a>.

Это сообщение отредактировал(а) cia - 16.1.2014, 12:24
PM WWW ICQ   Вверх
semjaza
Дата 16.1.2014, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.1.2014

Репутация: нет
Всего: нет



в css  данному классу прописано:
Код

.menu-active{
    color:#ffffff!important;
}


значит по идее если его применить к тегу a в таком виде как я описал,то активный пункт меню будет написан белым цветом....но этого не происходит(((я практически уверен что сравниваю не те параметры вот тут-
Код

$category_id == $arr[$parent_id][$i]['title_url']


хотя может я и не прав)подскажите может действительно ошибочно?
PM MAIL   Вверх
cia
Дата 16.1.2014, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 15.1.2007

Репутация: 4
Всего: 4



В функции view_cat нет объявления переменной $category_id. Вместо неё вероятно нужно использовать $_GET['category_id']. Вот так:
Код

$menu=$arr[$parent_id];
foreach($menu as $item) {
  echo '<li><a href="?category_id='.$item['title_url'].'&parent_id='.$parent_id.'"'
    .($_GET['category_id'] == $item['title_url'] ? ' class="menu-active"':'')
    .">'.$item['title'].'</a>';
  //рекурсия - проверяем нет ли дочерних категорий
  view_cat($arr,$item['title_url']);
  echo "</li>";
  }


код чуть исправил чтобы был более читаемым.
PM WWW ICQ   Вверх
semjaza
Дата 16.1.2014, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.1.2014

Репутация: нет
Всего: нет



не могу разобрать)))
по-моему в способе который Вы описали-формирование меню протекает не внутри функции?так?

Добавлено через 5 минут и 22 секунды
всё понял)))спасибо огромное за помощь))в параметр url попадает значение 
Код

$_GET['category_id']


вот и получается что сравнивать нужно 
Код

$_GET['category_id'] == $arr[$parent_id][$i]['title_url']



всё заработало)))
ещё раз спасибо...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.