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

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


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

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

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

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

 

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 начинает определять вложенность, только как с помощью нее вывести блок с подкатегориями немогу понять.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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