Перейти к контенту

Меню с подпунктами


Рекомендуемые сообщения

Всем привет, такой вопрос.

Нужно сделать менюху которая меет вид ссылок и подссылок и еще подссылок к ним.

Т.е. трехступенчатая система:

 

1ссылка

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

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

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

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

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

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

2ссылка

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

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

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

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

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

3ссылка

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

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

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

 

И эти сссылки нужно брать из соответственно 3-х таблиц. Как правильно определиться с вложенными циклами и как в них сделать запросы чтобы выбирались внутри циклов лишь те ссылки которые действительно соответствуют категориям?

 

Я тут накидил 2-х ступенчатое меню, оно работает но вывод подссылок не соответствует категориям, скажем

 

Спорт

>>

КУльтура

>>Скейтбординг

 

Хотя скейты должны быть в спорте.

Вот код 2-х ступенчатой, непподскажите что переделать чтобы скейтбординг был в спорте. Ну по возможности с трехступенчатой.

 

Код:

 

$query = "select * from menu1";

$result=mysql_query($query);

$num=mysql_num_rows($result);

 

$query2 = "select * from menu1, menu2 where menu2.id=menu1.id";

$result5=mysql_query($query2);

$num2=mysql_num_rows($result2);

print "<br><br>";

 

for ($i=0; $i<$num; $i++)

{

$row = mysql_fetch_array($result);

print $row['name']."<br>";

 

for ($j=0; $j<$num2; $j++)

{

$row = mysql_fetch_array($result2);

print "------->>";

print $row['name2']."<br>";

}

}

 

 

Таблицы

 

CREATE TABLE `menu1` (

`id` int(11) NOT NULL auto_increment,

`name` varchar(20) default NULL,

`nomer` int(11) NOT NULL default '0',

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;

 

-- --------------------------------------------------------

 

--

-- Структура таблицы `menu2`

--

 

CREATE TABLE `menu2` (

`id` int(11) default NULL,

`id2` int(11) NOT NULL auto_increment,

`name2` varchar(20) default NULL,

`nomer2` int(11) NOT NULL default '0',

PRIMARY KEY (`id2`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

Ссылка на комментарий
Поделиться на других сайтах

создавать для каждого уровня менюшки отдельную таблицу неправильно.

посмотри как сделано в таблице [prefix]forums и обрати внимание на колонку parent_id.

Ссылка на комментарий
Поделиться на других сайтах

Непонял назначение и не понял почему не использовать яваскрипт с ваувэба - точно такой как тебе надо и без гемороя...
Ссылка на комментарий
Поделиться на других сайтах

у автора проблема не с html-реализацией, я так понял, а со структурой БД и взаимодействием с ней через php.
Ссылка на комментарий
Поделиться на других сайтах

Да именно с реализацией в бд + связка в php, в 2-х словах немогу как сделать менюху что-то похожее вот на такую www.softlinks.ru
Ссылка на комментарий
Поделиться на других сайтах

Cпасибо! почитал ссылки, нашел почти что искал, только 1 деталь, список дерева выводится полностью.

Нужно чтобы при нажатии на главную категорию вылетал список его ее подкаталогов.

Т.е. видимо передавать параметр, и так для подкаталогов тоже.

Вот код который имеется, нужно только объяснить мне как сделать описанное выше. Потому как вылетает сразу вся менюха а не по категориям как сделано на www.softlinks.ru например.

 

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=latin1 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); 
$sql = "SELECT * FROM catalogs WHERE parent_id='$parent_id'";  
$ok = mysql_query($sql);  
while ($row = mysql_fetch_array($ok)){  
	//получение имени из базы данных  
	$name = $row['cat_name'];  
	$level = $row['cat_id'];
	//получение длины отступа и имени   
	print "<TR><TD>$nbsp$name</TD></TR>";
	//вывод информации полученного каталога  
	get_tree($row['cat_id'],$deep+1); 
}  
} 
get_tree (0,0);

print "</table>";
?>

 

При вводе параметра по ссылке там где получение длинны отступа

//получение длины отступа и имени   
print "<TR><TD>$nbsp<a href='$php_self?w=$parent_id'>$name</a></TD></TR>";

 

У нас $w начинает определять вложенность, только как с помощью нее вывести блок с подкатегориями немогу понять.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.