Всем доброго времени суток... Я сделал вывод двухуровневой системы меню в виде дерева, но есть небольшая загвоздка... PHP: <? $inq = $db->query("SELECT catname, catid, parent_catid FROM category where parent_catid='0'"); while($item = $db->fetchrow($inq)){ echo '<a href="index.php?mod=news&cat=' . $item['catid'] . '">' . $item['catname'] . '</a><br>'; if($_GET['cat'] == $item['catid']) { // смотрим нужно ли выводить подменю $parinq = $db->query("SELECT catname, catid, parent_catid FROM category where parent_catid=" . $item['catid']); while($paritem = $db->fetchrow($parinq)){ echo '--<a href="index.php?mod=news&cat=' . $paritem['catid'] . '">' . $paritem['catname'] . '</a><br>'; } } } ?> Но вот в чем загвоздка... когда мы находимся например на главной, у нас выводится просто меню без подменю. Когда заходим в раздел содержащий подменю, у нас появляются подкатегории у категории и все работает. Но когда переходим в подкатегорию, меню закрывается показывая нам только категории... Помогите решить проблемку...
Так проверяйте не только пэрент категории но и сам айди категории, а если $_GET['cat'] нет совсем, то можно выводить все подкатегории...
дык не получаецо никак... если проверяю ид подкатегории, то у меня список закрывается по переходу в подкатегорию - потому что ид категории не найден
Самый детский способ, добавить 2 колонки для каждой меню: parent1 и parent2. Но самый лучший способ - это конечно же Nested Sets
не хотелось бы создавать кучу дополнительных полей... Может все-таки можно как нибудь реализовать это с такой вложенностью?
Вопрос понял плохо, башка не варит. У меня на сайте категории можно вкладывать друг в друга БЕСКОНЕЧНО. А в админке сайта выводится огромное дерево сайта. А на сайте выводится где -> мы -> сейчас -> находимся, и в меню подсвечивается в какой из главных категорий находится категория в которой мы сейчас находимся. Реализовывал все сам, очень грубый код, было давно - показывать стыдно!
Если я это удалю, то тогда у меня подкатегории будут постоянно тображаться, но надо чтобы они начинали отображаться только когда я перехожу в категорию которой они принадлежат!
Попробуйте так: PHP: <?php if( isset( $_GET['cat'])) { $result = mysql_query( 'SELECT `parent_catid` FROM `category` WHERE `parent_catid` != 0 AND `catid` = ' .(int)$_GET['cat'] .' LIMIT 1'); if( mysql_num_rows( $result)) $CatData = mysql_result( $result, 0, 0); } $inq = $db->Query('SELECT `catname`, `catid`, `parent_catid` FROM `category` WHERE `parent_catid` = 0'); while( $item = $db->FetchRow( $inq)) { ?><a href="index.php?mod=news&cat=<?= $item['catid']; ?>"><?= $item['catname']; ?></a><br /><?php if( isset( $_GET['cat']) && $_GET['cat'] == $item['catid'] || isset( $CatData) && $CatData == $item['catid']) { $parinq = $db->Query('SELECT `catname`, `catid`, `parent_catid` FROM `category` WHERE `parent_catid` = ' .$item['catid']); while( $paritem = $db->FetchRow( $parinq)) { ?>--<a href="index.php?mod=news&cat=<?= $paritem['catid']; ?>"><?= $paritem['catname']; ?></a><br /><?php } } } ?>
спасибо! заработало... только вот мне кажется 3 запроса к базе многовато... но хоть так работает! попробую чуть передеалть, если не получится, то оставлю так. Спасибо огромное за помощь!
1. <? 2. $inq = $db->query("SELECT catname, catid, parent_catid FROM category where parent_catid='0'"); 3. while($item = $db->fetchrow($inq)){ 4. echo '<a href="index.php?mod=news&cat=' . $item['catid'] . '">' . $item['catname'] . '</a><br>'; делаем запрос $item2 = SELECT * FROM category where id = $item['parent_catid'] if GET[cat]== $item2[parent_catid] (обратите внимание) => echo ..... что-то типа того 5. 6. if($_GET['cat'] == $item['catid']) { // смотрим нужно ли выводить подменю 7. $parinq = $db->query("SELECT catname, catid, parent_catid FROM category where parent_catid=" . $item['catid']); 8. while($paritem = $db->fetchrow($parinq)){ 9. echo '--<a href="index.php?mod=news&cat=' . $paritem['catid'] . '">' . $paritem['catname'] . '</a><br>'; 10. } 11. } 12. 13. } ?> Но вот в чем загвоздка... когда мы находимся например на главной, у нас выводится просто меню без подменю. Когда заходим в раздел содержащий подменю, у нас появляются подкатегории у категории и все работает. Но когда переходим в подкатегорию, меню закрывается показывая нам только категории... Помогите решить проблемку...
neverlose, к тебе еще вопросик... в том варианте что ты показал - что-то похожее на рекурсию имеется... Подскажи плиз у этого меню будет только 3 запроса или больше?