Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Программирование » PHP » Деревья, рекурсивная функция
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
link26
Участник

Зарегистрирован: Aug 2006
Место проживания:
Публикаций: 1
Статус: link26 в оф-лайне
Деревья, рекурсивная функция [сообщение #82916]

Всем день добрый. У меня вопрос по деревьям. Делаю меню вида:

1ссылка
>>1подссылка
>>>>1подподссылка
>>>>2подподссылка
>>2подсссылка
>>>>1подподссылка
>>>>2подподссылка
2ссылка
>>1подссылка
>>>>1подподссылка
>>>>2подподссылка
>>>>3подподссылка
>>2подсссылка
3ссылка
>>1подссылка
>>>>1подподссылка
>>2подсссылка


Но одна проблема - список дерева выводится полностью.
Нужно чтобы при нажатии на главную категорию вылетал список его ее подкаталогов а остальные скрывались и оставались только главные категории(parent_id=0).
Т.е. видимо передавать параметр, и так для подкаталогов тоже.
Вот код который имеется, нужно только объяснить мне как сделать описанное выше. Потому как вылетает сразу вся менюха а не по категориям как сделано на www.softlinks.ru например.

Вот структура таблицы

code:

CREATE TABLE `catalogs` (
  `cat_id` int(11) NOT NULL auto_increment,
  `parent_id` int(11) NOT NULL default '0',
  `cat_name` varchar(200) NOT NULL default '',
  PRIMARY KEY  (`cat_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin AUTO_INCREMENT=13 ;

INSERT INTO `catalogs` VALUES (1, 0, 'Программирование');
INSERT INTO `catalogs` VALUES (2, 1, 'Веб программирование');
INSERT INTO `catalogs` VALUES (3, 1, 'Системное программирование');
INSERT INTO `catalogs` VALUES (4, 2, 'PHP');
INSERT INTO `catalogs` VALUES (5, 2, 'Perl');
INSERT INTO `catalogs` VALUES (6, 3, 'C++');
INSERT INTO `catalogs` VALUES (7, 6, 'Visual C++');
INSERT INTO `catalogs` VALUES (8, 3, 'Delphi');
INSERT INTO `catalogs` VALUES (9, 0, 'Базы данных');
INSERT INTO `catalogs` VALUES (10, 9, 'MySQL');
INSERT INTO `catalogs` VALUES (11, 9, 'Oracle');
INSERT INTO `catalogs` VALUES (12, 9, 'MS Access');



А вот сам код меню

PHP:

print "Дерево каталога<br><table border='1'>";
define ('DEF_INDENT',4); 

function 
get_tree($parent_id=0,$deep){  
    
//sql запрос   
    
$nbsp=str_repeat (" ",$deep*DEF_INDENT); 
    
$ok = mysql_query("SELECT * FROM catalogs WHERE parent_id='$w'");  
    while (
$row = mysql_fetch_array($ok)){  
        
//получение имени из базы данных  
        
$name = $row['cat_name'];  
        
$level = $row['cat_id']; 
        
//получение длины отступа и имени   
        
print "<TR><TD>$nbsp<a href='$php_self?w=$level'>$name</a></TD></TR>";
      
        
//вывод информации полученного каталога
       
if ($_GET['cat_id'] == $row['cat_id']){
        
get_tree($row['cat_id'],$deep+1); 
}

    }  
} 
get_tree (0,0);

print 
"</table>";



Т.е. у нас $w принимает значение cat_id при обновлении страницы и в запросе тоже используется вывод всех parent_id='$w'.
Но при нажатии на ссылки всеравно ничего не происходит, и нет выпадающих подкатегорий.
Где возможная ошибка? Плз не давайте ссылки на мануал, я его уже обчитался, расписал все по пунктам.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 31-08-2006 17:02
Нажмите сюда для просмотра профайла link26 Отправить Персональное сообщение link26 Найти сообщения от link26 Добавить link26 в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #83148]

$w- откуда берется? судя по всему вообще нет
правмльно будет $ok = mysql_query("SELECT * FROM catalogs WHERE parent_id=" . intval($parent_id));

polo добавил 29-09-2006 в 12:14:17:
советую пересмотреть реализацию, при большом кол-ве подкатегорий база загнется.

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 29-09-2006 12:12
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя



Формат времени GMT. Текущее время 19:38.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 0.31965208 seconds (97.66% PHP - 2.34% MySQL) with 26 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.